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/

相关推荐
渣渣盟4 小时前
Mysql入门到精通全集(SQL99)包含关系运算,软考数据库工程师复习首选
数据库·mysql·oracle
AlfredZhao5 小时前
APEX实战第13篇:全套开发环境的本地配置与恢复实践
oracle·apex·ords
Stackflowed7 小时前
Docker安装Oracle
docker·oracle·容器
宸凉11 小时前
Oracle 19C的安装
数据库·oracle
AC赳赳老秦12 小时前
数据安全合规:OpenClaw 敏感信息脱敏、操作日志审计、权限精细化管控方案,符合等保要求
网络·数据库·python·安全·web安全·oracle·openclaw
TEC_INO13 小时前
Linux56:读取人脸图片并把特征值保存到sqlite3数据库
数据库·oracle
鸽芷咕13 小时前
KingbaseES中的PL_SQL编程:存储过程、函数、触发器与包的开发指南
数据库·sql·oracle
程序边界14 小时前
表空间目录自动创建:从一个小开关聊到云原生存储的那些事
数据库·oracle·dba
jimy114 小时前
Oracle的e2.1.micro免费实例安装tailscale后,设置为出口节点(Exit Node)
服务器·网络·oracle
HalvmånEver1 天前
MySQL的增删改查命令合集合集
数据库·sql·oracle