尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CentOS 7下Oracle 19C静默安装全攻略:从环境调优到自动化部署

CentOS 7下Oracle 19C静默安装全攻略:从环境调优到自动化部署 1. 项目概述为什么需要静默安装Oracle 19C如果你是一名运维工程师或者DBA肯定对在Linux上安装Oracle数据库的“仪式感”不陌生。图形化安装界面OUI虽然直观但每次点击“下一步”都伴随着漫长的等待更别提在无图形界面的服务器环境、需要通过跳板机操作的场景或者需要批量部署多套数据库实例时图形化安装几乎成了不可能完成的任务。这就是“静默安装”的价值所在——它允许你通过一个预先配置好的响应文件在命令行中一键完成整个安装过程无需人工干预。这次我们要在CentOS 7上部署的是Oracle 19C。19C作为Oracle长期支持版本在稳定性、性能和功能上都是企业级应用的首选。而CentOS 7尽管其生命周期已经走向终结但在国内大量存量服务器和特定合规场景中它依然占据着重要地位。将这两者结合通过静默方式完成部署是一项非常实用且高频的运维技能。这不仅仅是运行几条命令更涉及到系统环境的前期精调、依赖包的完整覆盖、内核参数的深度优化以及安装后一系列收尾工作的自动化。整个过程就像在组装一台精密的仪器任何一个螺丝参数没拧到位都可能让整个系统运行起来别别扭扭。接下来我会带你走一遍我趟过无数次的完整流程。从准备一个“干净”的CentOS 7环境开始到一步步调整系统以满足Oracle的“苛刻”要求最后生成响应文件并执行安装。我会重点分享那些官方文档语焉不详、但实际操作中一定会踩到的“坑”以及如何通过脚本化让整个安装过程变得可重复、可审计。无论你是第一次尝试静默安装的新手还是想优化现有部署流程的老手这篇内容都能给你提供可以直接“抄作业”的详细方案。2. 环境准备与系统调优打好地基静默安装的成功八成取决于前期的环境准备。一个未经优化的CentOS 7系统直接安装Oracle 19C大概率会遭遇各种奇怪的错误。我们必须按照Oracle的“规矩”把系统调整到它期望的状态。2.1 操作系统与资源规划首先确保你的CentOS 7是最小化安装。图形界面GNOME或KDE是绝对要避免的它不仅占用不必要的资源还可能带来依赖冲突。我通常使用CentOS-7-x86_64-Minimal-2009.iso这类镜像进行安装。硬件资源方面Oracle 19C相对“吃资源”。对于测试或小型应用环境我建议的最低配置是CPU: 2核以上。内存: 至少4GB。官方最低要求是1GB但实际安装过程就需要大量内存建议8GB以上以获得流畅体验。交换空间Swap一般设置为物理内存的1到2倍如果内存大于16GB设置16GB交换空间也足够了。磁盘空间: 数据库软件本身需要约7.5GB。你还需要为数据文件、快速恢复区FRA预留空间。一个用于学习和测试的完整环境准备50GB的磁盘空间是比较稳妥的。网络配置要确保主机名解析正常。编辑/etc/hosts文件确保包含类似下面的一行将your-hostname替换为你的实际主机名127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 your-hostname ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 your-hostname避免安装过程中因为无法解析本地主机名而卡住。2.2 安装必备依赖包Oracle数据库的运行依赖一大堆系统包。使用yum分组安装是最快的方式。首先确保你的yum源是有效的可以换成阿里云或清华大学的镜像源以加速下载。安装所需的软件包组和独立包yum groupinstall -y Development Tools yum install -y oracle-database-preinstall-19c重点说一下oracle-database-preinstall-19c这个包。它是Oracle官方为RHEL/CentOS 7提供的预安装包会自动创建Oracle所需的用户和组默认是oracle用户和dba,oinstall组并设置一部分内核参数和资源限制。这能省去我们大量手动配置的功夫强烈建议使用。但是这个预安装包并不包含所有依赖。我们还需要手动补充一些常见的、它可能遗漏或版本不对的包yum install -y libaio-devel libnsl libnsl2 sysstat smartmontools psmisc compat-libcap1 compat-libstdc-33 ksh其中libnsl和libnsl2是解决网络服务库依赖的关键compat-libstdc-33是老的C兼容库很多老的应用会依赖它ksh是Oracle安装脚本默认使用的Shell。实操心得依赖包安装是最容易出问题的一环。有时即使按照文档全部安装仍可能报缺少某个.so库文件。一个排查技巧是在安装软件阶段如果报错根据错误信息里的库文件名使用yum provides */libxxx.so来搜索是哪个包提供了这个库然后针对性安装。2.3 内核参数与用户环境调优即便使用了预安装包我们仍需检查并优化关键的内核参数。编辑/etc/sysctl.conf确保包含以下关键设置。这些参数主要影响共享内存、信号量、网络和文件句柄是Oracle稳定运行的基础。# 在文件末尾添加或修改 fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 # 共享内存总页数通常为物理内存字节/页大小getconf PAGE_SIZE kernel.shmmax 4294967296 # 最大共享内存段大小建议为物理内存一半以上这里设为4GB 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修改后执行sysctl -p使配置立即生效。你可以用sysctl -a | grep 参数名来验证。接下来配置oracle用户的Shell限制。编辑/etc/security/limits.conf添加oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768这些设置提高了oracle用户可打开的进程数、文件数和堆栈大小防止数据库运行时因资源限制而崩溃。最后为oracle用户配置环境变量。切换到oracle用户 (su - oracle)编辑其家目录下的.bash_profile文件export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SIDorcl # 你的数据库实例名 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 # 设置字符集非常重要重要提示ORACLE_BASE和ORACLE_HOME的目录权限必须正确。通常ORACLE_BASE如/u01/app/oracle的所有者应为oracle:oinstall权限为755。ORACLE_HOME将在安装时创建。3. 软件获取与响应文件配置系统环境准备好后我们就需要拿到Oracle 19C的安装软件并为其制作一份“安装说明书”——也就是响应文件。3.1 获取Oracle 19C安装介质你需要从Oracle官方网站下载Linux x86-64版本的19C数据库安装包。通常是一个名为LINUX.X64_193000_db_home.zip的压缩文件。请务必遵守Oracle的许可协议。下载后将其上传到你的CentOS 7服务器上我一般放在/tmp或/opt目录下。创建一个目录作为Oracle的家目录并解压软件mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 cd /u01/app/oracle/product/19.3.0/dbhome_1 unzip /tmp/LINUX.X64_193000_db_home.zip解压后你会在当前目录看到runInstaller等安装文件。关键一步检查解压出的install目录下是否有response目录里面存放着各种静默安装响应文件的模板这是我们工作的基础。3.2 详解与定制db_install.rsp响应文件静默安装的核心就是这个响应文件。我们以创建数据库实例的响应文件dbca.rsp为例实际上安装软件用的是db_install.rsp创建数据库用dbca.rsp这里先讲原理但逻辑相通。你可以从response/目录拷贝模板出来修改。找到db_install.rsp模板拷贝并编辑它cp /u01/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp /home/oracle/ cd /home/oracle vi db_install.rsp下面是一些你必须修改的关键参数及其含义# 是否接受Oracle许可协议必须接受才能安装 oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.optionINSTALL_DB_SWONLY # 只安装数据库软件这是推荐的第一步 UNIX_GROUP_NAMEoinstall # Oracle Inventory目录的所属组 INVENTORY_LOCATION/u01/app/oraInventory # Oracle Inventory目录路径 ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 # 软件安装路径 ORACLE_BASE/u01/app/oracle # Oracle基目录 oracle.install.db.InstallEditionEE # 安装版本企业版 oracle.install.db.OSDBA_GROUPdba # 操作系统DBA组 oracle.install.db.OSOPER_GROUPdba # 操作系统OPER组 oracle.install.db.OSBACKUPDBA_GROUPdba # 备份DBA组 oracle.install.db.OSDGDBA_GROUPdba # 数据卫士DBA组 oracle.install.db.OSKMDBA_GROUPdba # 密钥管理DBA组 oracle.install.db.OSRACDBA_GROUPdba # RAC DBA组 SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse # 不通过My Oracle Support进行安全更新 DECLINE_SECURITY_UPDATEStrue # 必须设为true否则安装会因无法连接MOS而失败踩坑记录DECLINE_SECURITY_UPDATES这个参数非常关键。在静默安装中如果设为false安装程序会尝试连接Oracle的更新服务器进行检查由于网络原因常常会失败并导致安装中断。务必将其设置为true后续的安全更新可以通过其他方式手动进行。3.3 详解与定制dbca.rsp数据库创建响应文件安装完软件后我们需要创建数据库。同样使用dbca.rsp模板。这个文件更长配置项更多。cp /u01/app/oracle/product/19.3.0/dbhome_1/install/response/dbca.rsp /home/oracle/ vi dbca.rsp关键配置项解析# 数据库标识 gdbNameorcl # 全局数据库名 sidorcl # 数据库实例名 # 数据库配置类型可以是“一般用途”、“数据仓库”等 templateNameGeneral_Purpose.dbc # 使用通用模板 # 数据库文件位置 sysPasswordYourSysPassword123 # SYS用户密码生产环境要复杂 systemPasswordYourSystemPassword123 # SYSTEM用户密码 datafileDestination/u01/app/oracle/oradata # 数据文件存放目录 recoveryAreaDestination/u01/app/oracle/fast_recovery_area # 快速恢复区 storageTypeFS # 存储类型文件系统 characterSetAL32UTF8 # 数据库字符集推荐UTF8 nationalCharacterSetAL16UTF16 # 国家字符集 # 内存管理自动内存管理更简单 memoryPercentage40 # 自动内存管理占用物理内存的40% enableArchivefalse # 是否启用归档模式测试环境可先关掉注意事项密码不能以数字开头且必须包含大小写字母和数字否则dbca可能会报错。datafileDestination和recoveryAreaDestination目录必须存在且oracle用户有写权限。字符集的选择至关重要一旦建库后更改非常麻烦AL32UTF8是支持多语言的最佳选择。4. 执行静默安装与建库一切准备就绪现在可以开始真正的无人值守安装了。整个过程分为两步安装软件和创建数据库。4.1 执行软件静默安装切换到oracle用户并进入软件解压目录使用runInstaller配合响应文件执行安装su - oracle cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller -silent -ignorePrereq -waitforcompletion -responseFile /home/oracle/db_install.rsp-silent: 启用静默模式。-ignorePrereq: 忽略先决条件检查。慎用最好是在你确认系统环境已充分准备但个别非致命检查不通过时使用。-waitforcompletion: 等待安装程序完成命令行才会返回。-responseFile: 指定响应文件路径。安装过程会持续20分钟到1小时不等取决于服务器性能。输出日志会保存在$ORACLE_HOME/install目录下。安装到最后会提示你需要以root身份执行两个脚本这是Oracle安装的固定步骤Successfully Setup Software. As a root user, execute the following script(s): 1. /u01/app/oraInventory/orainstRoot.sh 2. /u01/app/oracle/product/19.3.0/dbhome_1/root.sh打开另一个终端用root用户依次执行这两个脚本。执行root.sh时可能会询问本地bin目录路径直接按回车使用默认值即可。4.2 执行静默建库软件安装成功后就可以用dbca工具静默创建数据库了。确保环境变量特别是ORACLE_SID和ORACLE_HOME已正确设置。su - oracle dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp这个过程也会持续一段时间会创建数据文件、控制文件、重做日志文件并运行必要的SQL脚本。同样观察输出日志没有报错即表示成功。日志通常位于$ORACLE_BASE/cfgtoollogs/dbca/数据库名。4.3 安装后关键检查与配置安装和建库完成后不要急着庆祝先做几个关键检查检查数据库状态sqlplus / as sysdba SQL SELECT instance_name, status, database_status FROM v$instance; SQL SELECT * FROM v$version;应该能看到实例状态为OPEN并显示19C的版本信息。配置监听器 静默安装通常会自动配置一个监听器。检查监听状态lsnrctl status如果监听没起来需要手动启动lsnrctl start。监听配置文件在$ORACLE_HOME/network/admin/listener.ora。设置开机自启动 为了让数据库和监听随系统启动一个简单的方法是编辑/etc/oratab文件将最后一行实例标识的N改为Yorcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y然后可以创建系统服务。在/etc/systemd/system/下创建oracle-rdbms.service文件需要root权限内容示例[Unit] DescriptionOracle Database 19C Afternetwork.target [Service] Typeforking EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 EnvironmentORACLE_SIDorcl ExecStart/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut $ORACLE_HOME Useroracle [Install] WantedBymulti-user.target之后执行systemctl daemon-reload和systemctl enable oracle-rdbms即可。5. 常见问题与深度排错指南即使步骤再详细在实际操作中还是会遇到各种问题。这里我总结几个最典型的“坑”和排查思路。5.1 安装前期常见错误错误[INS-13001] 环境不满足最低要求原因这是最经典的错误说明系统环境检查未通过。排查不要急着加-ignorePrereq。先去查看详细的检查日志。日志位置通常在/tmp下名字类似OraInstall时间戳。打开日志搜索FAILED或WARNING它会明确告诉你哪项检查没通过是缺少包、内核参数不对还是资源不足。解决根据日志提示缺包装包参数不对就调整/etc/sysctl.conf或limits.conf然后重新执行检查有时需要重启服务器使内核参数生效。错误Error in invoking target agent nmhs of makefile等编译错误原因通常是因为缺少某个开发库或头文件或者gcc、make版本问题。排查查看$ORACLE_HOME/install下的make.log等日志文件看具体的编译错误信息。解决根据错误信息安装对应的-devel包如libaio-devel。确保已安装yum groupinstall Development Tools。在CentOS 7上gcc版本一般是够用的。5.2 数据库创建阶段错误错误ORA-01034: ORACLE not available或ORA-27101: shared memory realm does not exist原因实例没启动或者环境变量ORACLE_SID设置不正确导致连接到错误的或不存在的实例。排查echo $ORACLE_SID确认实例名。ps -ef | grep pmon查看是否有对应SID的进程如ora_pmon_orcl。解决确保ORACLE_SID正确并用sqlplus / as sysdba登录后尝试startup启动实例。如果startup失败查看$ORACLE_BASE/diag/rdbms/dbname/sid/trace下的alert日志。错误ORA-12541: TNS:no listener原因监听器没有运行。排查执行lsnrctl status。解决启动监听lsnrctl start。检查listener.ora和tnsnames.ora配置是否正确特别是主机名和端口默认1521。错误数据库创建到一定进度卡住或报内部错误原因可能是磁盘空间不足、内存不足或者dbca.rsp响应文件中有错误配置。排查首先检查df -h和free -m。然后仔细查看dbca的详细日志在$ORACLE_BASE/cfgtoollogs/dbca下。解决清理磁盘空间或增加Swap。仔细核对响应文件特别是密码复杂度、路径权限等。有时先删除失败的库dbca -silent -deleteDatabase -sourceDB orcl修正配置后重试是更快的方法。5.3 性能与稳定性优化建议安装成功只是第一步要让数据库跑得稳、跑得快还需要一些后续优化内存调整静默安装时设置的memoryPercentage是个初始值。上线后应根据服务器实际负载在SQL*Plus中动态调整SGA和PGAALTER SYSTEM SET sga_target4G SCOPEspfile; ALTER SYSTEM SET pga_aggregate_target1G SCOPEspfile; -- 然后重启数据库生效原则是SGA主要用于缓存数据PGA用于排序、哈希等操作。物理内存的60-70%分配给Oracle是常见的比例。归档与备份测试环境可以不开归档但生产环境务必开启归档模式这是实现恢复的基础。SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; -- 设置归档路径 ALTER SYSTEM SET log_archive_dest_1location/u01/app/oracle/archivelog SCOPEspfile;并立即制定RMAN备份策略。监控与告警配置Oracle Enterprise Manager (EM) Express或使用第三方监控工具如Zabbix搭配Oracle模板对表空间使用率、等待事件、活跃会话数等关键指标进行监控。静默安装Oracle 19C就像编写一个自动化部署剧本。第一次配置可能会花费你几个小时但一旦这个“剧本”调试通过后续在同类环境中的部署就是几分钟的事情。这份详细的记录不仅是为了完成一次安装更是为了给你留下一套可复用、可排查的方法论。在实际操作中耐心查看日志精确理解每个参数的含义比盲目尝试命令更有效。
返回列表