RHEL 7 + Oracle 19.3.0 单实例部署指南

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 创建虚拟机

  1. 打开 VirtualBox,点击「新建」,设置名称为 rhel7,选择镜像文件
  2. 内存分配 6144MB,创建 100GB 固定大小的 VMDK 虚拟磁盘
  3. 调整启动顺序:硬盘优先,移除软驱

2.2 网络配置

  • 网卡 1:仅主机(Host-Only)网络,选择创建好的 Host-Only 网卡
  • 网卡 2:NAT 模式,用于联网

2.3 安装 RHEL 7

启动虚拟机,加载 RHEL 7 ISO,进入安装界面:

  1. 语言选择 English,时区设置为 Asia/Shanghai

  2. 软件选择:带 GUI 的服务器,勾选「开发工具、兼容性程序库、系统管理工具」

  3. 手动分区(100GB):

    挂载点 大小 文件系统
    /boot 1GB ext4
    swap 9GB swap
    /tmp 10GB ext4
    /var 15GB ext4
    /u01 50GB ext4
    / 15GB ext4
  4. 网络配置:设置主机名 rhel7,Host-Only 网卡配置静态 IP 192.168.56.3/24

  5. 设置 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

安装步骤:

  1. 选择「Set Up Software Only」
  2. 选择「Single instance database installation」,版本为 Enterprise Edition
  3. 确认 ORACLE_BASE、ORACLE_HOME 路径正确
  4. 安装完成后,执行 orainstRoot.shroot.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/

相关推荐
蜜獾云3 小时前
交易系统之数据库弱依赖解决方案
数据库·oracle
林深时见鹿v3 小时前
《后端开发全栈工具安装踩坑指南 & 经验沉淀手册》
java·人工智能·python·oracle
资深数据库专家4 小时前
恒生 PK 中电金信
数据库·oracle·人大金仓数据库
上海合宙LuatOS5 小时前
LuatOS扩展库API——【 lbsLoc2】免费版单基站定位
数据库·物联网·oracle·junit·lua·luatos
-XWB-5 小时前
【Oracle】Oracle诊断系列(6/6):经典案例实战——从现象到根因的深度剖析
数据库·oracle
BullSmall5 小时前
Oracle 自动分区表(Interval Partition)详解
数据库·oracle
Yushan Bai1 天前
ORACLE数据库从WINDOWS环境迁移到LINUX环境并升级的方案步骤
数据库·oracle
秋92 天前
数据库对比同步工具,快速比较开发库与生产库直接的差别,并自动生成存在差异的sql语句
数据库·oracle
Whitemeen太白2 天前
查询子级分类、父级分类、叶子节点分类(MySQL / Oracle )
数据库·mysql·oracle