ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Oracle 19c静默安装全攻略:从系统配置到自动化部署

2026/8/15 11:16:58 拓冰建站 浏览量
Oracle 19c静默安装全攻略:从系统配置到自动化部署 1. 为什么需要静默安装Oracle 19c如果你是一名DBA或者系统管理员肯定经历过在图形界面下安装Oracle数据库的“折磨”。鼠标点来点去等待响应一个不小心点错还得回退整个过程耗时耗力尤其是在需要批量部署或者远程操作无图形界面的服务器时图形化安装简直就是灾难。静默安装就是解决这个痛点的“利器”。它通过一个预先配置好的响应文件让安装程序在后台自动完成所有步骤无需人工干预。这不仅仅是“偷懒”更是标准化、自动化运维的基石。无论是搭建开发测试环境还是生产服务器的集群部署掌握静默安装都能让你事半功倍将重复劳动交给脚本把精力留给更重要的性能调优和架构设计。从网络上的搜索热词也能看出大家关心的不仅仅是“安装”更是“迁移”、“配置”、“连接”和“问题排查”。一个稳定、可重复的安装过程是后续所有数据库操作如表结构迁移、存储过程开发、性能监控的可靠起点。静默安装确保了环境的一致性避免了因安装步骤差异导致的“我本地是好的怎么到你那就出问题了”这类经典甩锅问题。2. 安装前的核心准备工作不只是下载安装包静默安装的成功八成取决于准备工作是否到位。这里面的坑远比安装过程本身要多。2.1 系统环境与依赖检查首先你需要一台符合要求的Linux服务器本文以CentOS 7/RHEL 7为例Windows服务器思路类似但具体命令和包名不同。Oracle 19c对硬件和软件有明确要求不能凭感觉。硬件要求内存最小1GB建议至少2GB。对于生产环境根据数据量和并发另行规划。可以通过free -g命令查看。交换空间这是一个常被忽略但会导致安装失败的关键点。规则如下内存1GB-2GB时交换空间应为内存的1.5倍。内存2GB-16GB时交换空间等于内存大小。内存超过16GB时交换空间固定为16GB。 使用free -g或swapon -s检查如果不足需要手动添加交换文件。磁盘空间临时目录/tmp至少需要1GB。数据库软件安装目录如/u01/app/oracle建议预留20GB以上。数据文件存放目录根据业务需求预留通常更大。使用df -h命令检查。软件包依赖Oracle Linux提供了预配置的yum仓库但对于CentOS/RHEL需要手动安装大量依赖包。缺少任何一个都可能在安装后期报出令人费解的错误。以下是一个相对完整的包列表建议通过yum groupinstall先安装兼容组再补充个别包# 安装兼容性软件包组 yum groupinstall -y Server with GUI # 即使静默安装也需要一些图形库的支持 yum groupinstall -y Development Tools # 安装核心依赖包 yum install -y binutils compat-libcap1 compat-libstdc-33 gcc gcc-c glibc glibc-devel ksh libaio libaio-devel libgcc libstdc libstdc-devel libXi libXtst make sysstat elfutils-libelf-devel psmisc unixODBC unixODBC-devel注意compat-libstdc-33这个包在默认仓库可能没有需要从EPEL等扩展仓库获取或者从Oracle官方提供的预安装rpm包中查找。这是导致makefile编译错误的高频原因。2.2 创建Oracle用户与组Oracle不建议使用root用户直接安装和运行数据库。我们需要创建专用的用户和组。# 创建主要组oinstall和附加组dba groupadd oinstall groupadd dba # 创建Oracle用户主组oinstall附加组dba并指定家目录 useradd -g oinstall -G dba -m -d /home/oracle oracle # 为oracle用户设置密码 passwd oracle2.3 配置内核参数与资源限制Linux系统默认的参数限制可能无法满足Oracle数据库的高负载需求需要在/etc/sysctl.conf文件中进行修改。# 编辑sysctl配置文件 vi /etc/sysctl.conf在文件末尾添加或修改以下参数。参数值仅供参考生产环境需根据服务器配置调整# 网络与端口范围 fs.aio-max-nr 1048576 fs.file-max 6815744 # 共享内存段大小建议设置为物理内存的70%-80% kernel.shmall 1073741824 # 页数等于总内存字节/页大小通常4096 kernel.shmmax 4398046511104 # 最大共享内存段大小建议大于物理内存 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使配置立即生效。接下来配置用户资源限制编辑/etc/security/limits.conforacle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768此外还需要在/etc/pam.d/login文件中加入session required pam_limits.so确保limits生效。2.4 规划目录结构与权限清晰的目录结构利于管理。我们假设采用OFOptimal Flexible Architecture结构# 创建软件安装目录和数据文件目录 mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 mkdir -p /u02/oradata # 用于存放数据文件、控制文件、重做日志等 mkdir -p /u03/fast_recovery_area # 用于快速恢复区归档日志、备份 # 更改所有权 chown -R oracle:oinstall /u01 /u02 /u03 chmod -R 775 /u01 /u02 /u032.5 配置Oracle用户环境变量切换到oracle用户编辑其家目录下的.bash_profile文件su - oracle vi ~/.bash_profile添加以下内容# Oracle Base export ORACLE_BASE/u01/app/oracle # Oracle Home (软件安装路径) export ORACLE_HOME$ORACLE_BASE/product/19.3.0/dbhome_1 # 数据库实例的唯一标识符 export ORACLE_SIDorcl # 将$ORACLE_HOME/bin加入PATH export PATH$ORACLE_HOME/bin:$PATH # 设置语言环境避免安装界面乱码 export LANGen_US.UTF-8 # 指定客户端字符集 export NLS_LANGAMERICAN_AMERICA.AL32UTF8执行source ~/.bash_profile使环境变量生效。3. 响应文件静默安装的“自动驾驶仪”响应文件是一个包含了所有安装选项参数值的文本文件。安装程序runInstaller会读取它而不再弹出图形界面询问。Oracle提供了模板位于安装包解压后的response/目录下。对于仅安装数据库软件我们主要使用db_install.rsp。3.1 获取并修改响应文件首先从Oracle官网下载Oracle 19c for Linux的安装包通常是两个ZIP文件LINUX.X64_193000_db_home.zip。将其上传到服务器例如/soft目录并用oracle用户解压cd /soft unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1解压后在dbhome_1/response/目录下找到db_install.rsp将其复制到方便的位置进行修改cp /u01/app/oracle/product/19.3.0/dbhome_1/response/db_install.rsp /home/oracle/ cd /home/oracle vi db_install.rsp你需要关注并修改以下关键参数#开头的是注释# 是否接受Oracle许可协议必须设为true oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.optionINSTALL_DB_SWONLY # 仅安装软件后续再建库 UNIX_GROUP_NAMEoinstall # 之前创建的组 INVENTORY_LOCATION/u01/app/oraInventory # 清单目录记录安装的组件 ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 # 与环境变量一致 ORACLE_BASE/u01/app/oracle # 与环境变量一致 oracle.install.db.InstallEditionEE # 安装版本企业版 oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPdba oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba oracle.install.db.rootconfig.executeRootScriptfalse # 先设为false稍后手动执行 oracle.install.db.rootconfig.configMethodROOT # 使用root脚本方式 oracle.install.db.rootconfig.sudoPath/usr/bin/sudo oracle.install.db.rootconfig.sudoUserNameroot SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse # 不通过MOS更新 DECLINE_SECURITY_UPDATEStrue # 必须设为true否则安装会卡在提示实操心得DECLINE_SECURITY_UPDATEStrue这一行至关重要。如果不设置或设为false安装程序会尝试连接Oracle支持网站检查更新在无外网或网络受限的环境下会导致安装进程长时间挂起甚至失败。这是静默安装中最常见的“坑”之一。4. 执行静默安装与后续配置准备工作全部就绪现在可以启动安装程序了。4.1 运行安装命令使用oracle用户切换到ORACLE_HOME目录执行以下命令cd $ORACLE_HOME ./runInstaller -silent -ignorePrereq -responseFile /home/oracle/db_install.rsp-silent: 指定静默模式。-ignorePrereq: 忽略先决条件检查。慎用此参数最好在前期完成所有依赖检查和配置。这里使用是因为我们确信已满足条件避免因某些非致命警告导致安装中断。-responseFile: 指定我们修改好的响应文件路径。安装过程会在后台进行终端上会输出日志文件的路径例如/u01/app/oraInventory/logs/installActions2023-xx-xx_xx-xx-xxPM.log。你可以使用tail -f命令实时跟踪这个日志观察安装进度和是否有错误。tail -f /u01/app/oraInventory/logs/installActions2023-xx-xx_xx-xx-xxPM.log当看到类似以下输出时表示软件安装部分已完成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.sh4.2 执行root配置脚本不要关闭当前终端新开一个终端窗口使用root用户登录依次执行提示的两个脚本# 执行第一个脚本 sh /u01/app/oraInventory/orainstRoot.sh # 执行第二个脚本过程中会提示输入本地bin目录路径直接回车使用默认值即可 sh /u01/app/oracle/product/19.3.0/dbhome_1/root.shroot.sh脚本会执行一些需要root权限的操作如创建/etc/oratab文件、设置oracle用户的资源限制生效等。执行成功后数据库软件就安装完毕了。4.3 使用DBCA静默创建数据库安装软件只是第一步我们还需要一个可用的数据库实例。同样使用静默模式下的数据库配置助手DBCA。首先需要准备DBCA的响应文件。模板位于$ORACLE_HOME/assistants/dbca/dbca.rsp。我们复制并修改它cp $ORACLE_HOME/assistants/dbca/dbca.rsp /home/oracle/dbca_create.rsp vi /home/oracle/dbca_create.rsp修改其中关键部分responseFileVersion/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0 gdbNameorcl # 全局数据库名通常与ORACLE_SID相同 sidorcl # 数据库实例名 databaseConfigTypeSI # 单实例 templateNameGeneral_Purpose.dbc # 使用通用模板 sysPasswordYourStrongSysPassword123 # 设置SYS用户密码务必足够复杂 systemPasswordYourStrongSystemPassword123 # 设置SYSTEM用户密码 datafileDestination/u02/oradata # 数据文件存放目录 recoveryAreaDestination/u03/fast_recovery_area # 快速恢复区目录 storageTypeFS # 文件系统存储 characterSetAL32UTF8 # 数据库字符集推荐UTF8 nationalCharacterSetAL16UTF16 # 国家字符集 createAsContainerDatabasefalse # 19c默认是CDB这里设为false创建非CDB。如需CDB则设为true并指定PDB名。然后使用DBCA命令静默建库dbca -silent -createDatabase -responseFile /home/oracle/dbca_create.rsp这个过程会持续较长时间十几分钟到半小时不等会创建数据文件、控制文件、重做日志并运行必要的SQL脚本。同样观察日志输出通常会在终端显示进度百分比或在$ORACLE_BASE/cfgtoollogs/dbca/orcl目录下查看详细日志。建库完成后数据库实例orcl就已经启动并运行了。你可以使用sqlplus连接进行验证sqlplus sys/YourStrongSysPassword123orcl as sysdba SQL SELECT name, open_mode FROM v$database;5. 安装后的关键检查与常见故障排除安装完成并不意味着万事大吉以下几个检查点和常见问题的排查思路能帮你快速验证安装质量。5.1 环境与基础服务检查首先检查Oracle环境变量是否生效以及监听器是否启动。# 检查环境变量 echo $ORACLE_HOME echo $ORACLE_SID echo $PATH | grep oracle # 检查监听器状态 lsnrctl status # 如果未启动则启动它 lsnrctl start # 检查数据库实例进程是否存在 ps -ef | grep pmon # 应该能看到一个类似 ora_pmon_orcl 的进程5.2 数据库连接与基本功能测试通过本地和远程连接测试确保数据库服务正常。# 本地连接测试 (使用bequeath协议) sqlplus / as sysdba SQL SELECT * FROM dual; SQL exit; # 通过监听器连接测试 (需要配置tnsnames.ora这里用简易EZCONNECT) sqlplus system/YourStrongSystemPassword123localhost:1521/orcl尝试创建一个测试用户和表验证基本的DDL和DML操作CREATE USER testuser IDENTIFIED BY testpass DEFAULT TABLESPACE users; GRANT CONNECT, RESOURCE TO testuser; CONNECT testuser/testpass; CREATE TABLE test_table (id NUMBER, name VARCHAR2(50)); INSERT INTO test_table VALUES (1, 静默安装测试); COMMIT; SELECT * FROM test_table;5.3 典型安装失败场景与排查思路即使按照步骤操作也可能遇到问题。以下是几个高频故障点makefile相关错误如Error in invoking target agent nmhs根因几乎都是系统依赖包缺失或不匹配特别是compat-libstdc-33,libaio-devel,glibc-devel等。排查回顾2.1节使用rpm -qa | grep 包名逐一确认关键包是否安装。查看安装日志 ($ORACLE_BASE/oraInventory/logs/)找到具体的编译错误信息通常能指向缺失的库文件。安装程序无响应或卡在某个百分比根因网络问题响应文件中DECLINE_SECURITY_UPDATES未设为true程序在尝试连接Oracle官网。空间不足/tmp空间或目标安装目录空间不足。权限问题Oracle用户对安装目录 (/u01/app) 或清单目录 (/u01/app/oraInventory) 没有写权限。排查实时跟踪安装日志 (tail -f)看最后输出的错误信息。检查磁盘空间df -h。检查目录权限ls -ld /u01/app。DBCA建库失败根因密码复杂度响应文件中指定的sysPassword或systemPassword不符合Oracle默认的密码复杂度策略12c以后要求较高。路径不存在或权限不足datafileDestination或recoveryAreaDestination指定的目录不存在或Oracle用户无权写入。内存不足系统可用内存不足以完成建库过程。排查查看DBCA的详细日志 ($ORACLE_BASE/cfgtoollogs/dbca/sid/)。可以先尝试使用一个非常复杂的密码包含大小写字母、数字、特殊字符。确保目录已创建且权限正确。建库前可临时关闭无关进程释放内存。监听器启动失败或客户端无法连接根因监听器配置文件 ($ORACLE_HOME/network/admin/listener.ora) 配置错误或防火墙未开放1521端口。排查检查listener.ora中HOST是否设置为正确的主机名或IP。使用netstat -tlnp | grep 1521查看端口是否监听。关闭防火墙或添加规则firewall-cmd --permanent --add-port1521/tcp firewall-cmd --reload。5.4 必要的优化与安全设置安装完成后建议立即进行一些基础设置修改默认密码尽快修改SYS、SYSTEM等默认用户的密码。启用归档模式生产环境如果用于生产务必启用归档日志模式这是实现完整恢复的基础。SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; -- 查看状态 ARCHIVE LOG LIST;调整内存参数根据服务器实际内存调整SGA和PGA大小。不要使用默认的微小内存设置。-- 查看当前内存设置 SHOW PARAMETER sga_target; SHOW PARAMETER pga_aggregate_target; -- 使用ALTER SYSTEM修改需要SPFILE ALTER SYSTEM SET sga_target4G SCOPEspfile; ALTER SYSTEM SET pga_aggregate_target1G SCOPEspfile; -- 重启数据库生效 SHUTDOWN IMMEDIATE; STARTUP;静默安装的熟练运用标志着你从“手工操作者”向“自动化运维者”的转变。它带来的不仅是效率提升更是环境标准化和部署可靠性的保证。把这份详细的配置和响应文件保存好它们就是你未来一键部署Oracle数据库的“配方”。下次再需要搭建环境时你只需要准备好干净的服务器运行几个脚本和命令泡杯咖啡的功夫一个生产就绪的数据库就已经在运行了。这种掌控感才是运维工作的乐趣所在。