Oracle 19c on Oracle Linux 8 安装差异详解

Oracle 19c on Oracle Linux 8 安装差异详解

适用版本:Oracle Database 19c (19.3+) for Linux x86-64 适用场景:在 OL 8 / RHEL 8 / CentOS 8 / Rocky 8 等Linux 8 系发行版上部署 文档版本:v1.0 / 2026-07


目录


1. 概述:为什么需要专门讨论 Linux 8

Oracle Database 19c 是 Oracle 长期支持版本(LTS),官方于 2020 年 4 月发布基础版 19.3,但当时主流 Linux 系统仍是 7.x。后来 RHEL 8 / Oracle Linux 8 / CentOS 8 相继 GA,但 19.3 的 CVU(Cluster Verification Utility)没有内置对 Linux 8 系列的识别支持[1]。

直接在 Linux 8 上安装 19c 会出现各种奇怪错误,最常见的有:

  • INS-08101: Unexpected issue 卡在 supportedOSCheck
  • libnsl.so.1: cannot open shared object file 找不到库
  • preinstall 包不识别系统版本
  • root.sh 执行失败但无明显错误
  • 监听器启动失败

本文专门梳理 Linux 8 系部署 19c 的所有差异点和坑,让你一次成功。

适用范围

  • Oracle Linux 8.x
  • Red Hat Enterprise Linux 8.x
  • CentOS 8 / Stream
  • Rocky Linux 8
  • AlmaLinux 8
  • 麒麟 V10 SP3(基于 Linux 8)
  • openEuler 22.03+

2. Oracle 19c 与 Linux 8 的兼容性现状

官方支持情况[2][3]:

19c 版本OL 7OL 8RHEL 7RHEL 8
19.3 基础版✅ 原生支持❌ 不识别✅ 原生支持❌ 不识别
19.6+(RU)✅ 原生支持⚠️ 需配置✅ 原生支持⚠️ 需配置
19.11+✅ 原生支持✅ 支持✅ 原生支持✅ 支持

MOS Note 2553472.1 明确说明[1]:

  • Oracle 19.6.0.0.0(JAN2020 DBRU - Patch 30557433)或更高版本才正式支持 RHEL 8
  • 19.3 基础版安装时需要:
    1. 设置 CV_ASSUME_DISTID=OL7 强制 CVU 按 OL7 兼容项校验
    2. 或在安装时同步应用 19.6+ RU 补丁(用 runInstaller -applyRU

ARM64 平台:19.19 起官方提供 ARM64 版本[4],但仅支持 OL 8 (aarch64)。


3. Linux 8 与 Linux 7 的关键差异

维度Linux 7Linux 8对 Oracle 影响
包管理器yumdnf(yum 是符号链接)命令兼容
默认 Shellbashbash
默认文件系统xfsxfs
默认防火墙firewalldfirewalld + nftables端口开放命令相同
网络管理network scriptsNetworkManager网络配置方式不同
libnsl默认安装默认不安装[5]sqlplus 报错
pdksh仓库可用仅 ksh,无 pdksh[5]dbca 检查失败
compat-libstdc++-33仓库可用已移除[5]需 EPEL
默认 Python2.73.6部分脚本需调整
默认 OpenSSL1.01.1TLS 配置变化
默认时区通常 UTC通常 UTC
内核版本3.104.18+性能更好
cgroupsv1v2(默认)Docker 兼容性

关键差异点总结

  1. 依赖包变化:libnsl、pdksh 等关键包需要手工处理
  2. CVU 不识别:必须用 CV_ASSUME_DISTID 绕过
  3. preinstall 包版本:必须用 el8 版本,不能用 el7
  4. 网络配置:NetworkManager 替代了传统 network scripts

4. 安装前置准备

4.1 系统检查

# 查看操作系统版本
cat /etc/os-release
# NAME="Oracle Linux Server"
# VERSION="8.9"
# ID="ol"
# ...

# 查看内核版本
uname -r
# 5.15.0-101.103.2.1.el8uek.x86_64

# 查看内存
free -h

# 查看 Swap
swapon -s

# 查看磁盘空间
df -h /tmp /u01 /opt

4.2 关闭防火墙和 SELinux

# 关闭防火墙(开发环境)
systemctl stop firewalld
systemctl disable firewalld

# 或开放端口(生产环境)
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --permanent --add-port=5500/tcp
firewall-cmd --reload

# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 验证
getenforce
# Disabled

4.3 配置主机名和 hosts

# 设置主机名
hostnamectl set-hostname oracle19c.example.com

# 查看 IP
ip addr show eth0

# 配置 hosts
cat >> /etc/hosts <<EOF
192.168.1.100 oracle19c.example.com oracle19c
EOF

# 验证
hostname -f
ping -c 1 oracle19c

坑 1:RHEL 8 上 hostname -i 默认返回 IPv6 地址,会导致监听器绑定失败。务必在 hosts 中显式配置 IPv4[5]。


5. 关键坑 1:CV_ASSUME_DISTID 配置

5.1 为什么需要 CV_ASSUME_DISTID

Oracle 安装程序(CVU)启动时会读取 /etc/os-release 识别发行版[1]。19c(尤其是 19.3-19.12)的 CVU 没有内置对 Linux 8 系列的签名支持,一检测到 ID="rhel"VERSION_ID="8.x" 就直接报:

INS-08101: Unexpected issue while checking for environment prerequisites.

或卡在 supportedOSCheck

设置 CV_ASSUME_DISTID 不是”欺骗”,而是告诉 CVU:“按我指定的发行版 ID 去查兼容性表”,它就会去匹配 OL7 / RHEL7 的已知通过项[1]。

5.2 如何配置

方式 1:临时 export(推荐静默安装)

# 在执行 runInstaller 前的同一 shell 中
export CV_ASSUME_DISTID=OL7

./runInstaller -silent -responseFile /tmp/db_install.rsp

方式 2:写入 .bash_profile(推荐图形化安装)

su - oracle
vi ~/.bash_profile

# 添加
export CV_ASSUME_DISTID=OL7

# 使生效
source ~/.bash_profile

# 验证
echo $CV_ASSUME_DISTID
# OL7

方式 3:grid 用户和 oracle 用户都设置(RAC 场景)

# RAC 安装时,两个用户都要分别设置
# grid 用户
su - grid
echo 'export CV_ASSUME_DISTID=OL7' >> ~/.bash_profile
source ~/.bash_profile

# oracle 用户
su - oracle
echo 'export CV_ASSUME_DISTID=OL7' >> ~/.bash_profile
source ~/.bash_profile

坑 2:变量名容易拼错!是 CV_ASSUME_DISTID不是 CV_ASSUMED_DISTIDCV_ASSUME_DIST,注意大小写,不能有空格[1]。

坑 3:不要设在 /etc/profile 全局生效,可能干扰其他 Oracle 版本或非 Oracle 工具[1]。

5.3 取值选择

取值适用场景
OL7推荐,所有 Linux 8 系最稳定
OL8仅 19.19+ 且打了最新 RU 补丁时考虑
RHEL7.6备选
RHEL7.9备选

为什么选 OL7 而不是 OL8[1]:

听起来 OL8 更”真实”,但实际在 19c 上反而容易触发新问题 —— 因为 19c 的 CVU 根本没有完整定义 OL8 的检查项,部分校验逻辑会 fallback 到空值或抛 NPE。而 OL7 是经过 Oracle 内部充分测试的兼容路径。

除非你明确知道目标环境是 Oracle Linux 8 且已打过最新 RU 补丁(如 19.24+),否则一律用 OL7

5.4 常见配置错误

错误 1:变量名拼错

# ❌ 错误
export CV_ASSUMED_DISTID=OL7    # 多了 D
export CV_ASSUME_DIST=OL7        # 少了 ID
export cv_assume_distid=OL7      # 小写

# ✅ 正确
export CV_ASSUME_DISTID=OL7

错误 2:没生效到子进程

# 用 echo 在运行 runInstaller 的同一行 shell 里确认
echo $CV_ASSUME_DISTID
# 如果为空,说明没 source 或写错文件位置

错误 3:写在 /etc/profile 全局

# ❌ 不推荐
echo 'export CV_ASSUME_DISTID=OL7' >> /etc/profile

# ✅ 推荐:仅 oracle 用户
echo 'export CV_ASSUME_DISTID=OL7' >> /home/oracle/.bash_profile

6. 关键坑 2:preinstall 包版本选择

6.1 OL 8 上的安装

方式 1:从 ULN 或 Oracle Linux yum 源

dnf install -y oracle-database-preinstall-19c

方式 2:手动下载 RPM

# 下载 el8 版本
curl -o oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm \
    https://yum.oracle.com/repo/OracleLinux/OL8/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm

dnf -y localinstall oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm

6.2 RHEL 8 上的安装

坑 4:RHEL 8 必须用 el8 版本的 preinstall 包[5]!

# ❌ 错误:用 el7 包会缺失 fs.aio-max-nr 等内核参数
dnf install -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

# ✅ 正确:用 el8 包
dnf install -y oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm

手动补全缺失项(如未用 el8 包):

# 补全内核参数
cat >> /etc/sysctl.d/99-oracle.conf <<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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 = 1048576
EOF

sysctl --system

# 补全 limits
cat >> /etc/security/limits.d/oracle-database-preinstall-19c.conf <<EOF
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
EOF

6.3 验证 preinstall 是否生效

# 检查 oracle 用户
id oracle
# 应输出:uid=54321(oracle) gid=54321(oinstall) groups=...

# 检查内核参数
sysctl -a | grep -E "shmmax|sem|aio-max"
# fs.aio-max-nr = 1048576
# kernel.shmmax = ...
# kernel.sem = 250 32000 100 128

# 检查 limits 文件
ls /etc/security/limits.d/oracle-database-preinstall-19c.conf
cat /etc/security/limits.d/oracle-database-preinstall-19c.conf

7. 关键坑 3:依赖包变化

7.1 libnsl 库

问题:RHEL 8 默认不安装 libnsl.so.1,导致 sqlplus 启动时报[5]:

sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

解决

# 必须同时安装 x86_64 和 i686 版本
dnf install -y libnsl libnsl.i686

# 验证
ldconfig -p ****** grep libnsl
# libnsl.so.1 (libc6,x86-64) => /lib64/libnsl.so.1
# libnsl.so.1 (libc6) => /lib/libnsl.so.1

openEuler 22.03 上的特殊处理

# openEuler 用 libnsl2
dnf install -y libnsl2

# 软链或从 Oracle stubs 目录复制
ln -sf /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1

7.2 ksh 替代 pdksh

问题:RHEL 8 仓库中只有 ksh,没有 pdksh[5]。

现象:dbca 在 shell 检查时卡住或报错。

解决

# 安装 ksh
dnf install -y ksh

# 创建符号链接(让 dbca 找到 pdksh)
ln -sf /usr/bin/ksh /bin/pdksh

# 验证
which pdksh
# /bin/pdksh

pdksh --version
# version sh (AT&T Research)

7.3 compat-libstdc++-33 处理

问题:RHEL 8 已移除 compat-libstdc++-33compat-libcap1[5],是 RHEL 7 的遗留包。

解决方式 1:从 EPEL 仓库安装

# 安装 EPEL
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

# 安装 compat 包
dnf install -y compat-libstdc++-33 compat-libcap1

解决方式 2:从 OL 8 兼容仓库

# 配置 OL 8 兼容仓库
cat > /etc/yum.repos.d/oracle-linux-ol8.repo <<'EOF'
[ol8_baseos_latest]
name=Oracle Linux 8 BaseOS Latest
baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol8_appstream]
name=Oracle Linux 8 Application Stream
baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
EOF

dnf install -y compat-libcap1

解决方式 3:跳过(19c 实际不需要)

19c 实际上不需要 compat-libstdc++-33,这是 CVU 检查清单的遗留项。可以在 OUI 中勾选 Ignore All 跳过。

7.4 完整依赖清单

OL 8 / RHEL 8 上完整依赖

dnf install -y bc binutils elfutils-libelf elfutils-libelf-devel \
    fontconfig-devel glibc glibc-devel ksh libaio libaio-devel \
    libnsl libnsl.i686 libX11 libXau libXi libXtst libXrender libXrender-devel \
    libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel \
    net-tools nfs-utils targetcli rsync smartmontools chrony

# 创建 pdksh 符号链接
ln -sf /usr/bin/ksh /bin/pdksh

8. 关键坑 4:root.sh 执行

坑 5:RPM 安装方式下 root.sh 不显式提示,但实际仍需关注[5]。

ZIP + OUI 安装方式

# OUI 末尾会提示执行
su -

# 执行 root.sh
/opt/oracle/product/19c/dbhome_1/root.sh

# 执行时可能提示输入 ORACLE_HOME(回车默认即可)

RPM 安装方式

RPM 包内部已自动执行了 root.sh 等价操作,但需要手动验证:

# 验证关键文件
ls -l /etc/oratab
ls -l /usr/local/bin/oraenv
ls -l /usr/local/bin/dbhome
ls -l /usr/local/bin/coraenv
# 这三个脚本应该已创建

# 验证 /etc/init.d/ 服务脚本
ls -l /etc/init.d/oracledb_ORCLCDB-19c

坑 6:如果之前设置过 CV_ASSUME_DISTID,root.sh 可能卡住[5]。

解决

# 临时清空
unset CV_ASSUME_DISTID

# 再执行 root.sh
/opt/oracle/product/19c/dbhome_1/root.sh

9. 关键坑 5:listener.ora HOST 配置

坑 7:RHEL 8 默认 hostname -i 返回 IPv6 地址,导致监听绑定失败[5]。

现象

lsnrctl start
# TNS-12542: TNS:address already in use
# 或监听器起不来

检查

# 查看 hostname -i 输出
hostname -i
# 如果是 IPv6 地址(如 fe80::...)则有问题

# 查看 listener.ora
cat $ORACLE_HOME/network/admin/listener.ora
# HOST = localhost  -- ❌ 错误
# HOST = oracle19c  -- ⚠️ 可能解析为 IPv6
# HOST = 192.168.1.100  -- ✅ 正确

解决

# 1. 修改 listener.ora
vi $ORACLE_HOME/network/admin/listener.ora

# 改为 IPv4 地址
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

坑 8LD_LIBRARY_PATH 未配置也会导致监听器启动失败[5]:

# 现象
lsnrctl start
# libclntsh.so.19.1: cannot open shared object file: No such file or directory

# 解决
su - oracle
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH' >> ~/.bash_profile
source ~/.bash_profile

lsnrctl start

10. 关键坑 6:oratab 与服务脚本

坑 9/etc/init.d/oracledb_ORCLCDB-19c start 可能静默失败[5]。

检查清单

# 1. 检查 /etc/oratab
cat /etc/oratab
# 应有:ORCLCDB:/opt/oracle/product/19c/dbhome_1:N
# 最后一位 N 表示不自动启动,但服务脚本需要这行存在

# 2. 检查 listener.ora 中 HOST 值(见第 9 节)

# 3. 检查 oracle 用户环境变量
su - oracle
echo $ORACLE_HOME
echo $ORACLE_SID
echo $LD_LIBRARY_PATH

oratab 文件说明

# 格式:$ORACLE_SID:$ORACLE_HOME:<N|Y>
# N: 不通过 dbstart 自动启动
# Y: 通过 dbstart 自动启动
ORCLCDB:/opt/oracle/product/19c/dbhome_1:N

手动添加条目(如缺失):

echo 'ORCLCDB:/opt/oracle/product/19c/dbhome_1:N' >> /etc/oratab

11. 完整安装流程示例

11.1 静默安装方式

步骤 1:准备系统

# 关闭 SELinux 和防火墙
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

# 配置主机名
hostnamectl set-hostname oracle19c.example.com
echo "192.168.1.100 oracle19c.example.com oracle19c" >> /etc/hosts

步骤 2:安装 preinstall 包

# OL 8
dnf install -y oracle-database-preinstall-19c

# RHEL 8(手动下载)
curl -o preinstall.rpm https://yum.oracle.com/repo/OracleLinux/OL8/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
dnf -y localinstall preinstall.rpm

步骤 3:补全依赖

dnf install -y libnsl libnsl.i686 ksh
ln -sf /usr/bin/ksh /bin/pdksh

步骤 4:创建目录

mkdir -p ******
mkdir -p ******
chown -R oracle:oinstall /u01
chmod -R 775 /u01

步骤 5:配置 oracle 用户环境变量

su - oracle
cat >> ~/.bash_profile <<'EOF'
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CV_ASSUME_DISTID=OL7
EOF

source ~/.bash_profile

步骤 6:解压安装包

cd $ORACLE_HOME
unzip /tmp/LINUX.X64_193000_db_home.zip

步骤 7:编辑响应文件

cp $ORACLE_HOME/install/response/db_install.rsp /tmp/db_install.rsp
vi /tmp/db_install.rsp

# 关键参数
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
DECLINE_SECURITY_UPDATES=true

步骤 8:执行安装

# 确认 CV_ASSUME_DISTID 生效
echo $CV_ASSUME_DISTID
# OL7

# 执行静默安装
./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereqFailure

步骤 9:执行 root 脚本

su -
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.3.0/dbhome_1/root.sh

步骤 10:建库

su - oracle
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbname orcl -sid orcl \
  -characterSet AL32UTF8 \
  -sysPassword Oracle_123 \
  -systemPassword Oracle_123 \
  -createAsContainerDatabase false \
  -storageType FS \
  -datafileDestination "/u01/app/oracle/oradata" \
  -memoryPercentage 40 \
  -emConfiguration NONE

11.2 RPM 安装方式

# 1. 安装 preinstall
dnf install -y oracle-database-preinstall-19c

# 2. 补全依赖
dnf install -y libnsl libnsl.i686 ksh
ln -sf /usr/bin/ksh /bin/pdksh

# 3. 安装数据库软件
dnf -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm

# 4. 配置(修改 SID 等)
vi /etc/sysconfig/oracledb_ORCLCDB-19c.conf

# 5. 建库
/etc/init.d/oracledb_ORCLCDB-19c configure

# 6. 验证
su - oracle
sqlplus / as sysdba

12. Oracle Linux 8 特有特性

12.1 UEK 内核

Oracle Linux 8 默认使用 UEK(Unbreakable Enterprise Kernel),相比 RHEL 8 默认内核:

  • 更好的 Oracle 性能优化
  • 默认开启透明大页(THP)需关闭
  • Ksplice 支持热补丁
# 查看内核
uname -r
# 5.15.0-101.103.2.1.el8uek.x86_64  -- UEK
# 4.18.0-513.el8.x86_64  -- RHCK

# 关闭透明大页(Oracle 推荐)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

# 持久化
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
chmod +x /etc/rc.local

12.2 Oracle Linux 8 AppStream

OL 8 的 AppStream 仓库提供了一些 Oracle 相关包:

dnf module list | grep oracle
# oracle-database-preinstall-19c

12.3 Btrfs 文件系统支持

OL 8 支持 Btrfs,但 Oracle 数据文件不建议放 Btrfs 上,建议用 xfs 或 ext4。


13. 常见坑与排错

坑 1:INS-08101 Unexpected issue

原因:CVU 不识别 Linux 8。

解决

export CV_ASSUME_DISTID=OL7
./runInstaller

坑 2:libnsl.so.1: cannot open shared object file

原因:RHEL 8 默认未装 libnsl[5]。

解决

dnf install -y libnsl libnsl.i686

坑 3:dbca 卡在 shell 检查

原因:缺少 pdksh[5]。

解决

dnf install -y ksh
ln -sf /usr/bin/ksh /bin/pdksh

坑 4:preinstall 包安装失败 “缺少 /etc/redhat-release”

现象(麒麟 V10 / openEuler):

/etc/redhat-release is needed by oracle-database-preinstall-19c

解决

# 创建 redhat-release 文件
echo "Red Hat Enterprise Linux Server release 8.0 (Maipo)" > /etc/redhat-release

# 重新安装
dnf -y localinstall oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm

坑 5:listener 起不来 ORA-12541

原因:listener.ora 中 HOST 错误[5]。

解决:见第 9 节。

坑 6:configure 卡在 32%

原因:通常是 /dev/shm 不足或内存不够。

解决

# 查看 /dev/shm
df -h /dev/shm

# 调整 /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
mount -o remount /dev/shm

# 重试
/etc/init.d/oracledb_ORCLCDB-19c delete
/etc/init.d/oracledb_ORCLCDB-19c configure

坑 7:内核参数不生效

原因:RHEL 8 上 sysctl 配置位置变化。

解决

# RHEL 8 推荐 /etc/sysctl.d/
cat > /etc/sysctl.d/99-oracle.conf <<EOF
fs.aio-max-nr = 1048576
kernel.shmmax = 536870912
...
EOF

sysctl --system  -- 加载所有配置

坑 8:安装 19.3 后想升级到 19.19

# 1. 下载 19.19 RU 补丁(Patch 35037840)
# 2. 安装 opatch
cd $ORACLE_HOME
unzip p6880880_190000_Linux-x86-64.zip

# 3. 应用 RU
$ORACLE_HOME/OPatch/opatch apply /tmp/35037840

# 4. 编译失效对象
sqlplus / as sysdba <<EOF
@?/rdbms/admin/catbundle.sql psu apply
@?/rdbms/admin/utlrp.sql
EOF

14. 最佳实践

  1. 优先用 Oracle Linux 8 + UEK:与 Oracle 兼容性最佳
  2. 必须设置 CV_ASSUME_DISTID=OL7[1]:19.3-19.12 在 Linux 8 上的必经之路
  3. 用 el8 版本 preinstall 包[5]:避免内核参数和 limits 缺失
  4. 同时装 libnsl 的 x86_64 和 i686 版本[5]:避免 sqlplus 启动失败
  5. 创建 pdksh 符号链接[5]:避免 dbca 卡住
  6. listener.ora HOST 用 IPv4 地址[5]:避免 IPv6 解析问题
  7. 关闭透明大页:与 Oracle 自动内存管理冲突
  8. 配置 LD_LIBRARY_PATH:避免监听器启动失败
  9. 升级到最新 RU:19.19+ 原生支持 Linux 8
  10. 使用 xfs 文件系统:Linux 8 上推荐

15. 参考资料

[1] php.cn,《Oracle 19c 在 Linux 8 上安装报错通过 CV_ASSUME_DISTID 解决》: https://m.php.cn/faq/2423125.html

[2] Oracle MOS Note 2553472.1,Oracle Database on RHEL 8 / OL 8 支持矩阵: https://support.oracle.com/epmos/faces/DocumentDisplay?id=2553472.1

[3] CSDN,《Oracle Database 19c 在 RHEL8 64 位的安装要求》: https://blog.csdn.net/weixin_61212661/article/details/130341800

[4] Oracle Database 19c for LINUX ARM (aarch64) 下载页: https://www.oracle.com/nz/database/technologies/oracle19c-linux-arm64-downloads.html

[5] php.cn,《如何在 RHEL 8 上通过 RPM 包快速部署 Oracle 19c》: https://global.php.cn/zh/faq/1797073084.html

[6] CSDN,《(第 6 天)RHEL 8 安装单机 Oracle 19C CDB 数据库》: https://blog.csdn.net/m0_50546016/article/details/134957957

[7] 云贝教育,《银河麒麟 kylin_v10 使用 RPM 安装 ORACLE 19C》,墨天轮: https://www.modb.pro/db/1815587493811597312

[8] einyboy,《鲲鹏 ARM 构架 openEuler 操作系统安装 Oracle 19c》: https://www.zovps.com/article/?id=136654

[9] Oracle Database 19c Installation Guide for Linux: https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/

[10] iTops FAQ,RHEL 8 上 Oracle 19c 安装: https://www.askitops.com/


相关文章