乐于分享
好东西不私藏

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

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

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

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

1.1 系统要求

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

1.2 内核参数(直接复制)

cat >> /etc/sysctl.conf <<'EOF'fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 4294967295kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576EOFsysctl -p

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

1.3 用户和组

groupadd -g 54321 oinstallgroupadd -g 54322 dbagroupadd -g 54323 operuseradd -u 54321 -g oinstall -G dba,oper oracleecho"oracle:YourPassword" | chpasswd

1.4 目录规划

mkdir -p /u01/app/oracle/product/19c/dbhome_1mkdir -p /u01/app/oraInventorychown -R oracle:oinstall /u01chmod -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 - oraclecd /u01/app/oracle/product/19c/dbhome_1unzip -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_SWONLYUNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/u01/app/oraInventoryORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1ORACLE_BASE=/u01/app/oracleoracle.install.db.InstallEdition=EEoracle.install.db.OSDBA_GROUP=dbaoracle.install.db.OSOPER_GROUP=operoracle.install.db.OSBACKUPDBA_GROUP=dbaoracle.install.db.OSDGDBA_GROUP=dbaoracle.install.db.OSKMDBA_GROUP=dbaoracle.install.db.OSRACDBA_GROUP=dbaoracle.install.db.rootconfig.executeRootScript=falseEOF

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 sysdbaSQL> SELECT instance_name, statusFROM v$instance;SQL> SELECTname, open_mode FROM v$pdbs;SQL> SELECT banner_full FROM v$version;

四、环境变量配置

cat >> /home/oracle/.bash_profile <<'EOF'# Oracle Environmentexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1export ORACLE_SID=orclexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATHexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"EOFsource /home/oracle/.bash_profile

坑 8NLS_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)    )  )EOFlsnrctl startlsnrctl status

六、安装后检查清单

写在最后

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

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

👉 ora100.com