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

RHEL 7 + Oracle 19.3.0 单实例部署指南:详细步骤与技巧

本教程提供了一套详细的Oracle Database 19c单实例(包含CDB和PDB)在RHEL 7环境下的部署方案。所有步骤均经过验证,确保可以直接按照本文操作完成安装。

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

环境准备

VirtualBox 配置

为了进行Oracle数据库的单实例部署,需要在VirtualBox中创建一个新的虚拟机,并配置Host-Only网络。具体步骤如下:

  1. 打开VirtualBox管理界面。
  2. 进入「主机网络管理器」,创建一个Host-Only网卡,默认使用192.168.56.0/24的IP地址段。

软件清单

部署Oracle 19c需要准备以下文件:

文件名描述
rhel-server-7.x-x86_64-dvd.isoRHEL 7系统安装镜像。
LINUX.X64_193000_db_home.zipOracle 19.3.0数据库安装包。
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm兼容性依赖库。
rlwrap-0.43-2.el7.x86_64.rpmSQLPlus命令行增强工具。

网络规划

为了确保虚拟机能够与宿主机进行通信,同时又能通过NAT模式访问外部网络,可以采用Host-Only + NAT的双网卡配置:

  • Host-Only:使用IP地址192.168.56.3
  • NAT:自动获取IP
  • 主机名:设置为rhel7

磁盘与内存规划

根据需求,分配虚拟磁盘和内存资源。例如:

  • 虚拟硬盘大小设定为100GB。
  • 内存分配6GB(其中Oracle可用4.5GB,SGA配置3.2GB,PGA配置1.4GB)。

创建虚拟机与安装系统

创建虚拟机

通过VirtualBox创建一个新的虚拟机,并进行如下设置:

  1. 输入名称rhel7。
  2. 设置内存为6144MB,硬盘大小为100GB的固定VMDK文件。
  3. 在启动顺序中选择以硬盘优先。

网络配置

按照Host-Only和NAT模式配置虚拟机网络接口:

  • 网卡1:连接到预先创建的Host-Only网段。
  • 网卡2:使用NAT模式联网。

安装RHEL 7系统

启动虚拟机,加载ISO镜像并开始安装过程。具体步骤如下:

  1. 设置语言为English,并选择时区Asia/Shanghai。
  2. 在软件选择中勾选“带GUI的服务器”,开发工具,兼容性程序库以及系统管理工具。
  3. 手动进行磁盘分区。分配根目录5GB、交换空间9GB等。
  4. 安装完成后重启虚拟机。

系统基础配置

网络配置

编辑网络接口文件并设置开机自启:

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

将ONBOOT=no改为ONBOOT=yes,然后重启服务:

systemctl restart network

配置 hosts 文件

添加hosts解析条目:

echo "192.168.56.3 rhel7" >> /etc/hosts

本地 YUM 源配置

挂载系统镜像,备份默认repo文件,并创建新的repo定义:

mkdir -p /mnt/cdrom && mount /dev/sr0 /mnt/cdrom

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
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

关闭防火墙与 SELinux

systemctl stop firewalld
systemctl disable firewalld

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

以上步骤确保了安全机制被禁用,以便于后续数据库安装与配置工作的顺利进行。

关闭透明大页支持

临时关闭:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

永久性修改:在grub文件中添加参数,生成新的配置文件,并将命令写入rc.local。

创建 Oracle 用户与组

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper

useradd -u 54321 -g oinstall -G dba oracle
echo "oracle_password" | passwd --stdin oracle

通过以上配置,Oracle用户具备了所需的权限,并且可以在RHEL系统中正常运行。后续可以继续安装和配置Oracle数据库软件,完成整个部署流程。

3.8 内核参数配置

为了确保Oracle数据库能够高效稳定地运行,需要对系统的内核参数进行调整。这些设置包括文件描述符的最大数量、共享内存和信号量等关键资源的限制。

cat >> /etc/sysctl.conf <<EOF
fs.file-max = 6815744        # 设置每个进程可打开文件的最大数目为6,815,744个
kernel.sem = 250 32000 100 128    # 调整信号量参数,确保高并发环境下的稳定性
kernel.shmmni = 4096          # 设置共享内存段的最大数量为4,096个
kernel.shmall = 2097152       # 共享内存页的总数(以系统页面大小计)
kernel.shmmax = 3670016000   # 单个共享内存段的最大值,设置为大约3.4GB
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       # 异步I/O的最大请求数
net.ipv4.ip_local_port_range = 9000 65500    # 设置本地端口范围以避免冲突
vm.nr_hugepages=1650          # 分配大页内存的数量,用于提升性能和减少碎片化
EOF

sysctl -p                   # 应用内核参数的修改

3.9 用户资源限制配置

接下来需要设置Oracle用户的系统级资源限制。这包括进程数、文件描述符数量等关键指标。

cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047        # Oracle用户可同时运行的最大进程数为2,048个
oracle hard nproc 16384       # 最大限制值设为16,384以确保灵活性和资源安全
oracle soft nofile 1024       # 文件描述符的软限制,至少需要1,024个文件句柄
oracle hard nofile 65536      # 硬极限设置为65,536,用于高并发场景下的性能优化
oracle soft stack 10240       # 堆栈大小的最小值,至少需要10KB堆叠空间
oracle hard stack 32768       # 最大堆栈大小设定为32KB以防止内存溢出
oracle soft memlock 3379200   # 内存锁定量的软限制,允许Oracle锁定近3.2GB的内存
oracle hard memlock 3379200   # 硬性约束同样设置为3.2GB以确保系统稳定性
EOF

cat > /etc/security/limits.d/20-nproc.conf <<EOF
* - nproc 16384              # 对所有用户的进程数限制,不限于Oracle用户
EOF

echo "session required pam_limits.so" >> /etc/pam.d/login    # 确保PAM模块加载资源限制策略

3.10 安装依赖包

安装必要的软件包以支持数据库的编译和运行。这些包括基本开发工具、C++库和其他系统组件。

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.12 重启系统

在完成所有配置后,需要重新启动系统以确保所有的内核参数和资源限制生效。

reboot

四、Oracle 软件安装

4.1 解压安装包

首先将 Oracle 安装文件上传到指定目录并解压缩:

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 图形化安装过程

启动图形界面安装程序,并完成剩余的配置步骤。

su - oracle
export DISPLAY=192.168.56.1:0.0
cd $ORACLE_HOME
./runInstaller

具体安装时,选择“仅设置软件”选项,然后指定单实例数据库和版本。确认所有路径配置无误后启动安装流程,并在完成后执行必要的脚本来完成初始化。

五、配置监听与创建数据库

5.1 配置监听

使用 NETCA(Network Configuration Assistant)工具来定义并配置监听器服务,以便客户端能够通过网络访问Oracle实例。

su - oracle
export DISPLAY=192.168.56.1:0.0
  • 选择 Listener configuration → Add → 端口 1521,完成配置

5.2 配置 tnsnames.ora 文件

编辑此文件以定义数据库服务名称和连接信息。

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)

使用 Database Configuration Assistant 工具创建容器数据库,并定义附带的可插拔数据库(PDB)。

su - oracle
export DISPLAY=192.168.56.1:0.0

关键配置包括选择 CDB 模式,设定内存参数如 SGA 和 PGA 大小以及字符集。还需启用归档模式,并设置快速恢复区域以确保数据安全性。

5.4 验证数据库

通过 SQL*Plus 确认所有组件运行正常并能够访问新创建的 PDB。

sqlplus / as sysdba
show con_name
show pdbs
select name, open_mode from v$database;

此外,可以配置一个触发器以确保每次启动时自动打开所有的可插拔数据库。

5.5 配置 PDB 自动启动

创建并执行如下SQL命令来实现PDB的自动启动:

CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/

六、开机自启动配置(root 用户)

6.1 修改 oratab 文件

编辑 /etc/oratab,将数据库实例的启动模式改为 Y。

vi /etc/oratab
# 修改为 rhel7cdb:/u01/app/oracle/product/19.3.0/dbhome_1:Y

6.2 配置 rc.local 文件

在系统启动脚本中添加命令以确保监听器和数据库服务自动运行。

cat >> /etc/rc.d/rc.local <<EOF
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"
EOF

chmod +x /etc/rc.d/rc.local

七、常用管理命令

以下是几个常用的Oracle数据库维护操作及其对应的命令。

功能命令
查看所有PDBshow pdbs
切换到某个PDBalter session set container=pdbname;
打开指定PDBalter pluggable database pdb open;
关闭指定PDBalter pluggable database pdb close;

八、日志路径

最后,列出一些重要的日志文件位置以帮助诊断和维护数据库。

  • 数据库告警日志: $ORACLE_BASE/diag/rdbms/rhel7cdb/rhel7cdb/trace/alert_rhel7cdb.log
  • 监听器日志 :$ORACLE_BASE/diag/tnslsnr/rhel7/listener/trace/listener.log
  • 安装日志: /u01/app/oraInventory/logs/

完成以上步骤后,Oracle数据库环境便已经准备好可以部署和使用了。