暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 19c 静默安装避坑指南:一次搞定,不走弯路

原创 三笠丶 2026-04-30
436

**装 Oracle 是每个 DBA 的第一课,但也是劝退率最高的一课。**图形界面装看着简单,实际生产环境很多需要用静默安装(Silent Install)。这篇把我踩过的坑全整理出来,照着做一遍过。

一、环境准备(最容易出问题的阶段)

1.1 系统要求

以 CentOS 7 / OEL 7 为例(生产环境主流选择):

项目 最低要求 建议值
内存 2 GB ≥ 8 GB
swap 与内存等大 内存的 1~1.5 倍
/tmp 1 GB ≥ 2 GB
磁盘 12 GB(软件)+ 数据 SSD,数据盘单独挂载

1.2 内核参数(直接复制)

cat >> /etc/sysctl.conf <<'EOF' fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 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 -p

坑 1:kernel.shmmax 必须大于 SGA 大小,否则实例启动报 ORA-27102。建议直接设成物理内存的 80%。

1.3 用户和组

groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper useradd -u 54321 -g oinstall -G dba,oper oracle echo "oracle:YourPassword" | chpasswd

1.4 目录规划

mkdir -p /u01/app/oracle/product/19c/dbhome_1 mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01 chmod -R 775 /u01

坑 2:目录路径不要有空格或中文。听起来是废话,但真有人在路径里加空格。

1.5 依赖包(一把装完)

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

如果不是 OEL 系统,手动装:

yum install -y bc binutils compat-libcap1 compat-libstdc++-33 \ elfutils-libelf elfutils-libelf-devel fontconfig-devel \ glibc glibc-devel ksh libaio libaio-devel libX11 libXau \ libXi libXtst libXrender libXrender-devel libgcc libstdc++ \ libstdc++-devel libxcb make net-tools nfs-utils python \ python-configshell python-rtslib python-six smartmontools \ sysstat targetcli unixODBC

坑 3:缺 libaio-devel 会导致安装时报 ins-35954 错误,提示 prerequisite check 失败。很多教程漏了这个包。

二、静默安装

2.1 解压安装包

# 以 oracle 用户操作 su - oracle cd /u01/app/oracle/product/19c/dbhome_1 unzip -oq /path/to/LINUX.X64_193000_db_home.zip

坑 4:19c 开始,安装包直接解压到 ORACLE_HOME 目录,不再像 11g/12c 那样解压后再 runInstaller 到别的目录。

2.2 准备响应文件

cat > /home/oracle/db_install.rsp <<'EOF' oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19c/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=dba oracle.install.db.OSDGDBA_GROUP=dba oracle.install.db.OSKMDBA_GROUP=dba oracle.install.db.OSRACDBA_GROUP=dba oracle.install.db.rootconfig.executeRootScript=false EOF

2.3 执行安装

cd /u01/app/oracle/product/19c/dbhome_1 ./runInstaller -silent -responseFile /home/oracle/db_install.rsp \ -waitforcompletion -ignorePrereqFailure

安装完成后用 root 执行:

/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19c/dbhome_1/root.sh

坑 5:-ignorePrereqFailure 不是万能药。如果是内存不足或 swap 不够,即使跳过检查,后面建库一样会出问题。这个参数只用来跳过非致命的警告。

三、静默建库(DBCA)

3.1 建库命令

dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl \ -sid orcl \ -characterSet AL32UTF8 \ -nationalCharacterSet AL16UTF16 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName pdb1 \ -pdbAdminPassword YourPdbPwd123 \ -sysPassword YourSysPwd123 \ -systemPassword YourSystemPwd123 \ -memoryPercentage 40 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 4096 \ -storageType FS \ -datafileDestination /u01/app/oracle/oradata \ -redoLogFileSize 200 \ -emConfiguration NONE \ -ignorePreReqs

坑 6:字符集选错是灾难级的。生产环境统一用 AL32UTF8,不要用 ZHS16GBK。后期改字符集需要重建库,成本极高。

坑 7:-automaticMemoryManagement false 是故意的。AMM 在大内存环境下和 HugePages 冲突。生产环境建议用 ASMM(SGA_TARGET + PGA_AGGREGATE_TARGET),不用 AMM。

3.2 验证安装

sqlplus / as sysdba SQL> SELECT instance_name, status FROM v$instance; SQL> SELECT name, open_mode FROM v$pdbs; SQL> SELECT banner_full FROM v$version;

四、环境变量配置

cat >> /home/oracle/.bash_profile <<'EOF' # Oracle Environment export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS" EOF source /home/oracle/.bash_profile

坑 8:NLS_LANG 的字符集部分要和数据库字符集一致。不一致会导致中文乱码,而且你可能很久才发现。

五、监听配置

netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp

或者手动配置:

cat > $ORACLE_HOME/network/admin/listener.ora <<'EOF' LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) (SID_NAME = orcl) ) ) EOF lsnrctl start lsnrctl status

六、安装后检查清单

检查项 命令 预期结果
实例状态 SELECT status FROM v$instance; OPEN
PDB 状态 SELECT open_mode FROM v$pdbs; READ WRITE
监听器 lsnrctl status Service “orcl” has 1 instance(s)
alert log tail -50 $ORACLE_BASE/diag/... 无 ORA- 错误
自动启动 检查 /etc/oratab orcl:/u01/...:Y

写在最后

Oracle 安装不难,难的是不踩坑。这篇文章覆盖了我和同事们这些年遇到的主要问题,新手照着做基本能一次成功。

完整的安装实操过程(包括 RAC 集群安装、ASM 磁盘组配置、Grid Infrastructure 部署等进阶场景),我整理在了 DBA 学习之路 的 Day 01-10 模块中,全程截图 + 踩坑记录。

👉 ora100.com

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论