安装部署12 分钟阅读
Oracle 19c Linux 静默安装完整教程(2026 年实测)
详细讲解 Oracle 19c 在 CentOS/RHEL/Rocky Linux 上的静默安装全流程。涵盖环境准备、内核参数、用户创建、响应文件配置、dbca 建库,以及 10 个常见安装报错的处理方法。
2026年4月27日阅读—点赞—收藏—
oracle19clinuxsilent-install静默安装
在知识库中专注阅读,并随时返回相关工具与课程
详细讲解 Oracle 19c 在 CentOS/RHEL/Rocky Linux 上的静默安装全流程。涵盖环境准备、内核参数、用户创建、响应文件配置、dbca 建库,以及 10 个常见安装报错的处理方法。
无论是生产环境部署、个人学习实验,还是项目实施交付,Oracle 19c 的安装几乎是每个 DBA 绑定的必修课。相比图形化安装,静默安装(Silent Installation) 有三个无法替代的优势:一是可以完全脚本化,方便纳入 Ansible/Shell 自动化流程;二是响应文件可复用,多台机器部署只需改几个参数;三是不依赖 GUI 和 X11 转发,在纯命令行的生产服务器上也能顺利完成。本文将从零开始,手把手带你完成 Oracle 19c 在 CentOS 7/8、RHEL 7/8、Rocky Linux 8/9 上的静默安装全过程。
Oracle 19c 官方支持以下 Linux 发行版:
建议优先选择 CentOS 7.9 或 Rocky Linux 8.8+,兼容性最好,踩坑最少。
确保主机名可解析,且 /etc/hosts 中有正确映射:
1hostnamectl set-hostname oracledb012echo "192.168.1.100 oracledb01" >> /etc/hosts关闭防火墙和 SELinux(测试环境),生产环境请按需放行 1521 端口:
1systemctl stop firewalld && systemctl disable firewalld2sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config3setenforce 0Oracle 19c 依赖大量系统库,缺少任何一个都会导致安装检查失败。一次性安装所有依赖:
1yum install -y bc binutils compat-libcap1 compat-libstdc++-33 \2 elfutils-libelf elfutils-libelf-devel fontconfig-devel \3 glibc glibc-devel ksh libaio libaio-devel libX11 \4 libXau libXi libXtst libXrender libXrender-devel \5 libgcc libstdc++ libstdc++-devel libxcb make \6 net-tools nfs-utils smartmontools sysstat \7 unixODBC unixODBC-devel gcc gcc-c++ librdmacm提示
提示:CentOS 8 / Rocky 8 及以上版本,
compat-libcap1和compat-libstdc++-33可能不在默认仓库,需启用PowerTools或CRB源,或手动下载 RPM 安装。
1# Rocky/Alma 8+ 启用 CRB 源2dnf config-manager --set-enabled crb3dnf install -y compat-libcap1 compat-libstdc++-33编辑 /etc/sysctl.conf,添加以下参数:
1cat >> /etc/sysctl.conf << 'EOF'2# Oracle 19c 推荐内核参数3fs.aio-max-nr = 10485764fs.file-max = 68157445kernel.shmall = 20971526kernel.shmmax = 42949672957kernel.shmmni = 40968kernel.sem = 250 32000 100 1289net.ipv4.ip_local_port_range = 9000 6550010net.core.rmem_default = 26214411net.core.rmem_max = 419430412net.core.wmem_default = 26214413net.core.wmem_max = 104857614EOF1516sysctl -p参数说明:
fs.aio-max-nr:异步 I/O 最大请求数,Oracle ASM 和数据文件读写依赖此值kernel.shmmax:单个共享内存段的最大字节数,建议设为物理内存的 50%-80%kernel.sem:信号量参数(SEMMSL/SEMMNS/SEMOPM/SEMMNI),影响并发进程数net.ipv4.ip_local_port_range:本地端口范围,避免与监听端口冲突同时配置资源限制,编辑 /etc/security/limits.conf:
1cat >> /etc/security/limits.conf << 'EOF'2oracle soft nproc 20473oracle hard nproc 163844oracle soft nofile 10245oracle hard nofile 655366oracle soft stack 102407oracle hard stack 327688oracle soft memlock unlimited9oracle hard memlock unlimited10EOF创建 Oracle 所需的操作系统用户和组:
1groupadd -g 54321 oinstall2groupadd -g 54322 dba3groupadd -g 54323 oper4groupadd -g 54324 backupdba5groupadd -g 54325 dgdba6groupadd -g 54326 kmdba78useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle9echo "oracle:Oracle_123" | chpasswd创建安装目录并设置权限:
1mkdir -p /u01/app/oracle/product/19.3.0/dbhome_12mkdir -p /u01/app/oraInventory3chown -R oracle:oinstall /u014chmod -R 775 /u01为 oracle 用户配置环境变量,编辑 /home/oracle/.bash_profile:
1cat >> /home/oracle/.bash_profile << 'EOF'2export ORACLE_BASE=/u01/app/oracle3export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_14export ORACLE_SID=orcl5export PATH=$ORACLE_HOME/bin:$PATH6export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH7export NLS_LANG=AMERICAN_AMERICA.AL32UTF88EOF将 Oracle 19c 安装包解压到 $ORACLE_HOME 目录(19c 不再需要单独的安装目录):
1su - oracle2cd $ORACLE_HOME3unzip -oq /path/to/LINUX.X64_193000_db_home.zip复制并编辑响应文件:
1cp $ORACLE_HOME/install/response/db_install.rsp /tmp/db_install.rsp关键参数配置如下(其余保持默认即可):
1# /tmp/db_install.rsp 关键参数23# 安装类型:仅安装软件(后续用 dbca 单独建库,更灵活)4oracle.install.option=INSTALL_DB_SWONLY56# Unix 组7UNIX_GROUP_NAME=oinstall89# 安装目录10INVENTORY_LOCATION=/u01/app/oraInventory11ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_112ORACLE_BASE=/u01/app/oracle1314# 安装版本:企业版15oracle.install.db.InstallEdition=EE1617# DBA 组映射18oracle.install.db.OSDBA_GROUP=dba19oracle.install.db.OSOPER_GROUP=oper20oracle.install.db.OSBACKUPDBA_GROUP=backupdba21oracle.install.db.OSDGDBA_GROUP=dgdba22oracle.install.db.OSKMDBA_GROUP=kmdba23oracle.install.db.OSRACDBA_GROUP=dba2425# 跳过安全更新(非生产可设 true)26DECLINE_SECURITY_UPDATES=true重点:生产环境建议先
INSTALL_DB_SWONLY(仅装软件),再用dbca建库。这样可以在建库前先打补丁,确保数据库从创建之初就处于最新补丁级别。
以 oracle 用户执行安装:
1cd $ORACLE_HOME2./runInstaller -silent -responseFile /tmp/db_install.rsp \3 -ignorePrereqFailure安装过程约 10-20 分钟,日志输出路径会在终端显示。安装完成后,按提示以 root 用户执行两个脚本:
1# 以 root 用户执行2/u01/app/oraInventory/orainstRoot.sh3/u01/app/oracle/product/19.3.0/dbhome_1/root.sh验证安装成功:
1su - oracle2sqlplus / as sysdba3# 看到 "Connected to an idle instance" 即表示软件安装成功使用 dbca 静默模式创建数据库实例:
1dbca -silent -createDatabase \2 -templateName General_Purpose.dbc \3 -gdbName orcl \4 -sid orcl \5 -createAsContainerDatabase true \6 -numberOfPDBs 1 \7 -pdbName orclpdb1 \8 -pdbAdminPassword Oracle_123 \9 -sysPassword Oracle_123 \10 -systemPassword Oracle_123 \11 -datafileDestination /u01/app/oracle/oradata \12 -recoveryAreaDestination /u01/app/oracle/fast_recovery_area \13 -recoveryAreaSize 10240 \14 -characterSet AL32UTF8 \15 -nationalCharacterSet AL16UTF16 \16 -memoryPercentage 40 \17 -emConfiguration NONE \18 -databaseType MULTIPURPOSE \19 -automaticMemoryManagement false \20 -totalMemory 2048建库过程约 15-30 分钟。完成后验证:
1sqlplus / as sysdba2SQL> SELECT instance_name, status FROM v$instance;34INSTANCE_NAME STATUS5---------------- --------6orcl OPEN78SQL> SHOW pdbs;910 CON_ID CON_NAME OPEN MODE RESTRICTED11---------- ------------------------------ ---------- ----------12 2 PDB$SEED READ ONLY NO13 3 ORCLPDB1 READ WRITE NO配置监听器(如安装时未自动配置):
1netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp2lsnrctl start3lsnrctl status原因:依赖包缺失或内核参数不满足。
1# 检查缺失的包2rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' bc binutils \3 elfutils-libelf glibc ksh libaio libX11 libXtst libgcc \4 libstdc++ make net-tools sysstat | grep "not installed"逐一安装缺失包后重新执行安装程序。也可加 -ignorePrereqFailure 参数跳过检查(不推荐用于生产环境)。
原因:通常是 /tmp 空间不足或权限问题。
1df -h /tmp2# 确保 /tmp 至少有 1 GB 可用空间3# 或指定临时目录:4export TMPDIR=/u01/tmp5mkdir -p $TMPDIR6./runInstaller -silent -responseFile /tmp/db_install.rsp -tmpdir $TMPDIR原因:数据库实例未启动或环境变量未正确设置。
1# 检查环境变量2echo $ORACLE_HOME3echo $ORACLE_SID45# 启动实例6sqlplus / as sysdba7SQL> startup;安装程序要求 Swap 不低于内存大小。临时添加 Swap:
1dd if=/dev/zero of=/swapfile bs=1M count=40962chmod 600 /swapfile3mkswap /swapfile4swapon /swapfile5echo "/swapfile swap swap defaults 0 0" >> /etc/fstab在 CentOS 8+ 和 Rocky Linux 上该包已被移除:
1# 方法一:从 CentOS 7 源下载2wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm3rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm45# 方法二:Oracle 19c 实际运行中很多场景不再强制依赖此包,可尝试 -ignorePrereqFailure 跳过原因:之前安装失败后残留了文件,需清理。
1rm -rf $ORACLE_HOME/*2# 同时清理 inventory3rm -rf /u01/app/oraInventory/*4rm -f /etc/oraInst.loc原因:$ORACLE_HOME/bin/oracle 权限不正确。
1ls -l $ORACLE_HOME/bin/oracle2# 应该有 setuid 权限:-rwsr-s--x3chmod 6751 $ORACLE_HOME/bin/oracle原因:kernel.shmmax 设置过小。
1# 临时生效2sysctl -w kernel.shmmax=42949672953# 永久生效需写入 /etc/sysctl.conf原因:内存不足导致编译链接过程被 OOM Killer 杀掉。
1# 检查系统日志2dmesg | grep -i "out of memory"3# 解决:增加内存或 Swap,确保至少 2GB 可用在 CDB 架构下,本地用户需要先切换到 PDB 再创建:
1ALTER SESSION SET container = orclpdb1;2CREATE USER appuser IDENTIFIED BY AppPass_123;3GRANT CONNECT, RESOURCE TO appuser;Oracle 每季度发布 RU(Release Update),安装完软件后、建库前务必打上最新补丁:
1# 使用 OPatch 打补丁2$ORACLE_HOME/OPatch/opatch apply /path/to/patch_dir3$ORACLE_HOME/OPatch/opatch lspatches数据库建好后第一件事就是配置备份策略:
1RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;2RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;3RMAN> BACKUP DATABASE PLUS ARCHIVELOG;生产库必须开启归档:
1SHUTDOWN IMMEDIATE;2STARTUP MOUNT;3ALTER DATABASE ARCHIVELOG;4ALTER DATABASE OPEN;建议建立每日/每周巡检机制,关注以下指标:
本文完整演示了 Oracle 19c 在 Linux 上的静默安装流程,从系统配置、依赖安装、内核调优、用户创建,到响应文件编写、runInstaller 执行、DBCA 建库,以及常见报错的排查方法。掌握这套流程后,你可以将整个过程封装为自动化脚本,实现多台服务器的批量部署。
想要跳过这些繁琐步骤? 如果你希望用一条命令完成上述所有操作,欢迎了解 ora100 一键安装脚本。它已经将环境检测、依赖安装、内核调优、软件部署、建库配置全部自动化,支持 30+ 种 Linux 发行版,经过数千次生产环境验证。无论你是初学者还是资深 DBA,都能帮你把安装时间从几小时缩短到几分钟。访问 ora100.com 了解详情,或直接查看项目文档开始使用。
本章介绍了以下核心内容: