CentOS 7.9环境下Oracle 19c静默部署全攻略:从系统准备到实例创建

张开发
2026/4/19 19:09:39 15 分钟阅读

分享文章

CentOS 7.9环境下Oracle 19c静默部署全攻略:从系统准备到实例创建
1. 环境准备打造Oracle 19c的温床在CentOS 7.9最小化安装环境下部署Oracle 19c就像在沙漠里建绿洲基础环境没整好后面全是坑。我去年给三家客户部署这套环境时发现90%的安装失败都源于前期准备不充分。先说说硬件配置8G内存是底线实测低于这个值连安装程序都启动不了。硬盘建议100G起步其中/tmp目录至少预留10G空间不然解压安装包时可能报错。系统配置第一步是关闭防火墙和SELinux这步看似简单却最容易翻车。有次我偷懒只执行了systemctl stop firewalld没禁用服务结果半夜服务器自动更新后防火墙重启把数据库连接全阻断了。正确的操作应该是systemctl stop firewalld systemctl disable firewalld sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config setenforce 0依赖包安装要特别注意版本兼容性。曾经有个项目因为漏装libnsl包导致dbca创建实例时直接core dump。完整依赖清单如下yum install -y unzip compat-libcap1 compat-libstdc-33 gcc-c ksh yum install -y libaio-devel libstdc-devel elfutils-libelf-devel yum install -y fontconfig-devel libXrender-devel libnsl rlwrap2. 系统调优让Linux为Oracle而生内核参数调优是性能保障的关键。有个金融客户最初没调shmmax参数上线后频繁出现ORA-04031错误。建议直接修改/etc/sysctl.conf加入以下关键参数kernel.shmmax 4398046511104 # 物理内存的80% kernel.shmall 1073741824 # 总共享内存页数 fs.file-max 6815744 # 文件描述符上限 net.ipv4.ip_local_port_range 9000 65500 # 避免端口耗尽执行sysctl -p生效后建议用sysctl -a | grep shm验证。用户资源限制同样重要在/etc/security/limits.conf里给oracle用户加上oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 327683. 用户与目录规划权限的艺术Oracle安装对目录权限极其敏感。有次我把oraInventory目录属主设错导致安装日志无法写入。标准做法是groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle mkdir -p /data/u01/app/oracle/product/19c/dbhome_1 mkdir -p /data/u01/app/oraInventory chown -R oracle:oinstall /data/u01 chmod -R 775 /data/u01环境变量配置也有讲究在/home/oracle/.bash_profile中必须包含export ORACLE_SIDorcl19c export ORACLE_HOME/data/u01/app/oracle/product/19c/dbhome_1 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib4. 静默安装实战无交互的魔法静默安装的核心是response file我整理了个万能模板/data/u01/app/oracle/product/19c/dbhome_1/runInstaller -silent \ oracle.install.optionINSTALL_DB_SWONLY \ UNIX_GROUP_NAMEoinstall \ INVENTORY_LOCATION/data/u01/app/oraInventory \ ORACLE_HOME/data/u01/app/oracle/product/19c/dbhome_1 \ oracle.install.db.InstallEditionEE \ oracle.install.db.OSDBA_GROUPdba \ oracle.install.db.OSOPER_GROUPoper \ oracle.install.db.OSBACKUPDBA_GROUPbackupdba安装过程中有两个坑要特别注意如果报错Prerequisite checks failed加-ignorePrereq参数跳过检查安装完成后需要用root执行/data/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh5. 实例创建从裸机到数据库dbca静默创建实例时字符集选择很关键。有次选了AL32UTF8导致中文乱码最后只能重建。推荐配置dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl19c -sid orcl19c \ -sysPassword oracle123 \ -systemPassword oracle123 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName pdb01 \ -pdbAdminPassword oracle123 \ -storageType FS \ -datafileDestination /data/u01/app/oracle/oradata \ -characterset ZHS16GBK \ -nationalCharacterSet AL16UTF16 \ -totalMemory 2048 \ -databaseType OLTPPDB创建后记得检查状态sqlplus / as sysdba SELECT name, open_mode FROM v$pdbs; ALTER PLUGGABLE DATABASE pdb01 OPEN;6. 监听配置数据库的守门人监听配置错误会导致各种诡异的连接问题。标准配置在$ORACLE_HOME/network/admin/listener.oraLISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST your_hostname)(PORT 1521)) ) )启动监听后用lsnrctl status验证。有个常见问题是TNS-12541错误通常是防火墙没关或者监听没启动。我习惯用以下命令排查netstat -tulnp | grep 1521 ps -ef | grep tns tnsping orcl19c7. 开机自启让服务永不掉线生产环境必须配置自启动我推荐用systemd服务。创建/etc/systemd/system/oracle-19c.service[Unit] DescriptionOracle Database 19c Afternetwork.target [Service] Typeforking Useroracle EnvironmentORACLE_HOME/data/u01/app/oracle/product/19c/dbhome_1 ExecStart$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop$ORACLE_HOME/bin/dbshut $ORACLE_HOME [Install] WantedBymulti-user.target然后执行systemctl daemon-reload systemctl enable oracle-19c8. 性能调优从能用

更多文章