RHEL 7 + Oracle 19.3.0 单实例部署指南
这是一套可完整复现的 Oracle 19c 单实例(CDB/PDB)部署笔记,所有步骤均在 RHEL 7 环境下亲测有效,可直接跟着操作完成部署。如有错误,欢迎批判指正。
一、环境准备
1.1 VirtualBox 配置
打开 VirtualBox,进入「管理 → 主机网络管理器」,创建 Host-Only 网卡,默认网段为 192.168.56.1/24,用于主机与虚拟机通信。
1.2 软件清单
提前下载以下文件:
| 文件名 | 说明 |
|---|---|
rhel-server-7.x-x86_64-dvd.iso |
RHEL 7 系统镜像 |
LINUX.X64_193000_db_home.zip |
Oracle 19.3.0 数据库安装包 |
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm |
兼容性依赖库 |
rlwrap-0.43-2.el7.x86_64.rpm |
SQLPlus 命令行增强工具 |
1.3 网络规划
采用 Host-Only + NAT 双网卡模式:
- Host-Only:
192.168.56.3,用于主机与虚拟机通信 - NAT:自动获取 IP,用于虚拟机联网
- 主机名:
rhel7
1.4 磁盘与内存规划
- 磁盘:100GB 固定大小虚拟磁盘
- 内存:6144MB(6GB),其中 Oracle 可用 4608MB,SGA 分配 3200MB,PGA 分配 1400MB
二、创建虚拟机与安装系统
2.1 创建虚拟机
- 打开 VirtualBox,点击「新建」,设置名称为
rhel7,选择镜像文件 - 内存分配 6144MB,创建 100GB 固定大小的 VMDK 虚拟磁盘
- 调整启动顺序:硬盘优先,移除软驱
2.2 网络配置
- 网卡 1:仅主机(Host-Only)网络,选择创建好的 Host-Only 网卡
- 网卡 2:NAT 模式,用于联网
2.3 安装 RHEL 7
启动虚拟机,加载 RHEL 7 ISO,进入安装界面:
-
语言选择 English,时区设置为 Asia/Shanghai
-
软件选择:带 GUI 的服务器,勾选「开发工具、兼容性程序库、系统管理工具」
-
手动分区(100GB):
挂载点 大小 文件系统 /boot1GB ext4 swap9GB swap /tmp10GB ext4 /var15GB ext4 /u0150GB ext4 /15GB ext4 -
网络配置:设置主机名
rhel7,Host-Only 网卡配置静态 IP192.168.56.3/24 -
设置 root 密码,完成安装并重启
三、系统基础配置(root 用户执行)
3.1 网络配置
bash
# 编辑网卡配置,开启开机自启
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 修改 ONBOOT=no 为 ONBOOT=yes
# 重启网络服务
systemctl restart network
3.2 Hosts 解析
bash
echo "192.168.56.3 rhel7" >> /etc/hosts
3.3 本地 YUM 源配置
bash
# 挂载系统镜像
mkdir -p /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
# 备份默认 repo 文件
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
# 创建本地 repo
cat > /etc/yum.repos.d/dvd.repo <<EOF
[RHEL]
name=RedHat
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
EOF
# 重建缓存
yum clean all && yum makecache
3.4 关闭防火墙与 SELinux
bash
# 关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
3.5 关闭透明大页
bash
# 临时关闭
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久关闭(修改 grub)
vi /etc/default/grub
# 在 GRUB_CMDLINE_LINUX 末尾追加 transparent_hugepage=never
# 重新生成 grub 配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# rc.local 开机生效
chmod +x /etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
3.6 创建 Oracle 用户与组
bash
# 创建用户组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
# 创建 oracle 用户
useradd -u 54321 -g oinstall -G dba,oper oracle
echo "oracle" | passwd --stdin oracle
3.7 创建 OFA 目录
bash
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oradata
mkdir -p /u01/app/oracle/tmp
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/
3.8 内核参数配置
bash
cat >> /etc/sysctl.conf <<EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 3670016000
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.nr_hugepages=1650
EOF
sysctl -p
3.9 用户资源限制
bash
cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3379200
oracle hard memlock 3379200
EOF
cat > /etc/security/limits.d/20-nproc.conf <<EOF
* - nproc 16384
EOF
echo "session required pam_limits.so" >> /etc/pam.d/login
3.10 安装依赖包
bash
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel make sysstat gcc gcc-c++
3.11 配置 Oracle 用户环境变量
bash
su - oracle
cat >> ~/.bash_profile <<EOF
export TMP=/u01/app/oracle
export TMPDIR=\$TMP
export LANG=en_US.UTF-8
export TZ=Asia/Shanghai
export ORACLE_HOSTNAME=rhel7
export ORACLE_UNQNAME=rhel7cdb
export ORACLE_SID=rhel7cdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.3.0/dbhome_1
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export PATH=\$ORACLE_HOME/bin:\$PATH
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
stty erase ^H
EOF
source ~/.bash_profile
exit
3.12 重启系统
bash
reboot
四、Oracle 软件安装
4.1 解压安装包
将 LINUX.X64_193000_db_home.zip 上传到 /u01/app/oracle/product/19.3.0/dbhome_1/,执行:
bash
su - oracle
cd /u01/app/oracle/product/19.3.0/dbhome_1
unzip LINUX.X64_193000_db_home.zip
rm LINUX.X64_193000_db_home.zip
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/
4.2 图形化安装
本地开启 Xmanager Passive,配置 DISPLAY 后启动安装:
bash
su - oracle
export DISPLAY=192.168.56.1:0.0
cd $ORACLE_HOME
./runInstaller
安装步骤:
- 选择「Set Up Software Only」
- 选择「Single instance database installation」,版本为 Enterprise Edition
- 确认 ORACLE_BASE、ORACLE_HOME 路径正确
- 安装完成后,执行
orainstRoot.sh和root.sh两个脚本
五、配置监听与创建数据库
5.1 配置监听(NETCA)
bash
su - oracle
export DISPLAY=192.168.56.1:0.0
netca
- 选择 Listener configuration → Add → 端口 1521,完成配置
5.2 配置 tnsnames.ora
bash
cat > $TNS_ADMIN/tnsnames.ora <<EOF
RHEL7CDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel7)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rhel7cdb)
)
)
RHEL7PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel7)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rhel7pdb1)
)
)
EOF
tnsping RHEL7CDB
tnsping RHEL7PDB1
5.3 创建数据库(DBCA)
bash
su - oracle
export DISPLAY=192.168.56.1:0.0
dbca
关键配置:
- 数据库类型:创建 CDB,勾选「Create as Container Database」,附带一个 PDB(名称
rhel7pdb1) - 内存配置:ASMM 模式,SGA 3200MB,PGA 1400MB
- 字符集:AL32UTF8
- 启用归档模式,设置快速恢复区
5.4 验证数据库
bash
sqlplus / as sysdba
show con_name
show pdbs
select name, open_mode from v$database;
exit
5.5 配置 PDB 自动启动
sql
sqlplus / as sysdba
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
exit
六、开机自启动配置(root 用户)
6.1 修改 oratab
bash
vi /etc/oratab
# 修改为 rhel7cdb:/u01/app/oracle/product/19.3.0/dbhome_1:Y
6.2 配置 rc.local
bash
cat >> /etc/rc.d/rc.local <<EOF
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"
EOF
chmod +x /etc/rc.d/rc.local
七、常用管理命令
| 操作 | 命令 |
|---|---|
| 启动监听 | lsnrctl start |
| 关闭监听 | lsnrctl stop |
| 启动数据库 | dbstart $ORACLE_HOME |
| 关闭数据库 | dbshut $ORACLE_HOME |
| 切换到 PDB | alter session set container=rhel7pdb1; |
| 查看所有 PDB | show pdbs |
八、日志路径
- 数据库告警日志:
$ORACLE_BASE/diag/rdbms/rhel7cdb/rhel7cdb/trace/alert_rhel7cdb.log - 监听日志:
$ORACLE_BASE/diag/tnslsnr/rhel7/listener/trace/listener.log - 安装日志:
/u01/app/oraInventory/logs/