1.环境准备
1.1 安装包
安装文件:LINUX.X64_193000_db_home.zip
大小:2.8GB左右
下载地址:Database Software Downloads | Oracle 中国
1.2 vm虚拟机
4vcpu, 4GB内存,25G硬盘
核心数不是重点,内存建议2GB以上,硬盘20GB+,否则不够用
我这里是家庭网络,路由器192.168.1.1 ,可以直接配置静态IP访问路由和网关局域网
虚拟机桥接模式,安装好后配置static静态IP,
这里就不整NAT配置,比较繁琐
2.修改配置项
2.1 修改网络配置项:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
## 修改
BOOTPROTO=static
## 末尾新增
IPADDR=192.168.1.160
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=8.8.8.8
2.2 修改主机名hostname 和 hosts
vi /etc/hostname
#自定义主机名
node2
vi /etc/hosts
#新增 固定ip
192.168.1.160 node2
2.3 关闭Firewalld防火墙服务 关闭SElinux保护程序
systemctl status firewalld.server
# 查看防火墙状态
systemctl stop firewalld.server
# 关闭防火墙
systemctl disable firewalld.server
# 禁用防火墙
vi /etc/selinux/config
# 修改SELINUX配置
SELINUX=disabled
2.4 oracle 依赖的C++库,yum安装
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
安装好后可以清理yum 安装包缓存 ,缓存大概占用800M存储空间
yum clean all
2.5 创建oracle用户,安装用户,系统用户、用户组oinstall
创建用户组:
groupadd -g 2001 dba
groupadd -g 2002 asmdba
groupadd -g 2003 backupdba
groupadd -g 2004 dgdba
groupadd -g 2005 kmdba
groupadd -g 2006 racdba
groupadd -g 2007 oper
groupadd -g 2008 oinstall
创建oracle用户:
useradd -u 2100 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
# 添加用户oracle
# -u指定用户id 2100
# -g指定所属group为 oinstall
# -G指定所属附加群组 dba,asmdba,backupdba,dgdba,kmdba,racdba,oper
创建安装文件夹:
# 创建组件清单和oracle修复组件目录
mkdir -p /u01/app/oraInventory
# 创建oracle_home目录
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
# 为什么要用 /u01/app 作为上级目录名呢? 有些是用的/XXX/oracle/product/19.3.0/db
# 因为oracle安装前需要运行 root.sh
# root.sh中文件路径为 /u01/app/oracle/product/19.0.0/dbhome_1/XXX/XXX.sh
# 不清楚不一致是否会有异常,所以这样配置。
# 简化的路径配置个人理解应该也没事。
目录指定 user:group 授权读写:
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
修改oracle用户密码
passwd oracle
# enter password:******
2.6 修改内核参数
vi /etc/sysctl.conf
# 新增如下
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 8329226240
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
2.7 修改oracle用户的用户限制
vi /etc/security/limits.conf
# 末尾新增如下
oracle soft nproc 65536
oracle hard nproc 65536
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 65536
oracle hard stack 65536
2.8 配置环境变量
2.8.1 oracle用户环境变量添加
vi /home/oracle/.bash_profile
# 末尾添加
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl19c
export ORACLE_TERM=xterm
export ORACLE_OWNER=oracle
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export SHLIB_PATH==$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib
# Set shell search paths:
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH:/usr/local/bin
# CLASSPATH must include the following JRE locations:
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
# system character set
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2.8.2 系统环境变量
vi /etc/profile
# 末尾添加 限制资源占用数
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -u 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
2.9 oracle安装文件解压
上传文件到本虚拟机,centos7桌面不支持文件拖拽、复制,可以修改重装vm-tools
也可以上传到其它虚拟机再SCP复制
直接unzip解压到指定目录:
unzip ~/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
# unzip 解压到指定目录ORACLE_HOME
# 刷新一下文件权限
chown -R oracle:oinstall /u01/app/
注销登录 / 重启,使用oracle用户登录
3. oracle安装
3.1 执行root.sh脚本
# 开启命令行 执行
su root
# 以root用户执行
cd /u01/app/oracle/product/19.0.0/dbhome_1
./root.sh
3.2 启动 runInstaller 安装程序
su oracle
# 切回oracle用户 以oracle用户执行
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller
3.2 配置安装程序
个人建议初始化安装直接选1 ,安装时间1-2小时
注意:如果需要PLSQL或者其它DB-connector以TNS连接的话,实例名称尽量自定义,否则连接会报错
其它按步骤默认配置,见机行事。
遇到弹窗提示需要切换root用户执行2个脚本 ,
新开命令窗口,切换用户,复制脚本路径,执行命令。按确定。
下一步,完成。
3.3 netca 启动监听程序管理
oracle用户下,命令行输入
netca
# 启动监听管理程序
傻瓜式操作
可以删除监听配置,修改监听配置,重新创建监听及端口
3.4 dbca 启动db创建程序
# oracle用户下 命令行输入
dbca
# 启动监听管理程序
*********
# 报错处理
# oracle数据库创建过程中提示
# DBT-50000 无法检查可用内存。(bug)
# 重新运行dbca 添加如下参数再启动(可能需要删除原有数据库及文件)
dbca -J-Doracle.assistants.dbca.validate.ConfigurationParams=false
*********
可以创建数据库实例,删除数据库,重新配置数据库等。
netca、 dbca、 sqlplus、 lsnrctl 等程序在 $ORACLE_HOME/bin 目录下
若配置不正确,无法输入,直接启动配置命令
可以cd 到 $ORACLE_HOME/bin 并且启动
3.5 配置listener.ora 、tnsnames.ora文件
文件目录在 $ORACLE_HOME/network/admin/
安装DB完成后,默认会启动oracle 实例,sqlplus连接数据库关闭数据库实例
[oracle@node2 admin]$ sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Sep 18 03:40:00 2022
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> select instance_name from v$instance;INSTANCE_NAME
----------------
orcl19c
先关闭数据库实例
# shutdown immediate 强制关闭数据库实例
shutdown
#关闭数据库实例
# startup 启动数据库实例
# mount 挂载数据库实例
exit
# 退出sql窗口
修改监听配置项 localhost => 本机IP
cd $ORACLE_HOME/network/admin
vi ./listener.ora
# 修改 HOST= localhost 为 本机IP
HOST = XXX.XXX.X.X
vi ./tnsnames.ora
# 修改 HOST= localhost 为 本机IP
HOST = XXX.XXX.X.X
3.6 重启数据库实例
linux关机注销重启重开
先启动监听程序 在启动实例
# oracle 用户下
lsnrctl status
# 查看oracle监听状态
lsnrctl start
# 启动监听服务
sqlplus /nolog
# 启动sql窗口
conn / as sysdba
# 以SYS用户登录
startup
# 启动数据库实例
exit
# 退出数据库sql窗口
[oracle@node2 admin]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2022 08:49:44
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.160)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 18-SEP-2022 03:12:16
Uptime 0 days 5 hr. 37 min. 27 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/node2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.160)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=node2)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/orcl19c/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "e8eb1e91f3053b8ce055000000000001" has 1 instance(s).
Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "e8ec713017f0344de055000000000001" has 1 instance(s).
Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "orcl19c" has 1 instance(s).
Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "orcl19cXDB" has 1 instance(s).
Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "pdb" has 1 instance(s).
Instance "orcl19c", status READY, has 1 handler(s) for this service...
The command completed successfully
oracle实例启动监听成功
3.7 DB-connector 连接oracle数据库
3.7.1 下载oracle连接驱动
下载地址:Instant Client for Microsoft Windows (x64) 64-bit
将数据库$ORACLE_HOME/network/admin/tnsnames.ora 文件或者内容复制到WINDOWS “D:\instantclient_21_3\network\admin” 、命名为 tnsnames.ora
3.7.2 Navicat 配置环境
打开Navicat 菜单=>工具=>选项=>环境=>OCI环境
选择oracle instant 安装路径下的oci.dll文件
重启Navicat
配置访问oracle
3.7.3 PLSQL配置环境
PLSQL首选项=>连接
输入库目录和主目录
确定保存关闭,选项配置正确会显示绿色,退出PLSQL工具
下次登录即可正常连接
其它连接工具,如DBeaver以JDBC驱动连接
4.Oracle19c 建表空间和用户
oracle数据库初始化创建临时表表空间,用户管理表表空间,创建用户,授权,登录
4.1 创建临时表表空间
create temporary tablespace xxx_tablespace1_temp
tempfile '/u01/app/oracle/oradata/ORCL19C/xxx_tablespace1_temp.dbf'
size 32m autoextend on
next 32m maxsize 2048m
extent management local;
4.2 创建用户管理表表空间
create tablespace xxx_tablespace1 logging
datafile '/u01/app/oracle/oradata/ORCL19C/xxx_tablespace1.dbf'
size 32m autoextend on
next 32m maxsize 2048m
extent management local;
4.3 创建用户,密码,为用户指定表空间,临时表空间
create user c##xxx identified by xxx123
default tablespace xxx_tablespace1
temporary tablespace xxx_tablespace1_temp;
---注意:与11g不同的是,oracle12以上版本采用容器可插拔架构
---CDB , Container Database, 数据库容器
---PDB, Pluggable Database, 可插拔数据库
---用户创建:
---COMMOM USERS , 普通用户,一般建立在CDB层, 用户名需要以 C#或C##开头;
---LOCAL USERS , 本地用户, 仅建立在PBD层,建立的时候需要指定容器
--- alter pluggable database PDB open; 启用XXXX容器数据库
--- alter session set container=PDB; 设置当前会话在XXXX容器数据库中 ,再运行建表
4.4 用户授权
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
grant connect, resource, dba to c##XXX;
# 授予用户c##XXX 连接,资源,dba权限
grant create any table to c##xxx;
grant drop any table to c##xxx;
grant create any procedure to c##xxx;
grant create any sequence to c##xxx;
grant execute any procedure to c##xxx;
grant alter any sequence to c##xxx;
4.5 新用户登录
新用户登录,存储过程建表,测试
调用执行:
输出:
安装测试完成。