当前位置: 首页 > news >正文

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 -gswapon -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 oracle

2.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.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

此外,还需要在/etc/pam.d/login文件中加入session required pam_limits.so,确保limits生效。

2.4 规划目录结构与权限

清晰的目录结构利于管理。我们假设采用OF(Optimal 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 /u03

2.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_SID=orcl # 将$ORACLE_HOME/bin加入PATH export PATH=$ORACLE_HOME/bin:$PATH # 设置语言环境,避免安装界面乱码 export LANG=en_US.UTF-8 # 指定客户端字符集 export NLS_LANG=AMERICAN_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.option=INSTALL_DB_SWONLY # 仅安装软件,后续再建库 UNIX_GROUP_NAME=oinstall # 之前创建的组 INVENTORY_LOCATION=/u01/app/oraInventory # 清单目录,记录安装的组件 ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1 # 与环境变量一致 ORACLE_BASE=/u01/app/oracle # 与环境变量一致 oracle.install.db.InstallEdition=EE # 安装版本:企业版 oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=dba 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 # 先设为false,稍后手动执行 oracle.install.db.rootconfig.configMethod=ROOT # 使用root脚本方式 oracle.install.db.rootconfig.sudoPath=/usr/bin/sudo oracle.install.db.rootconfig.sudoUserName=root SECURITY_UPDATES_VIA_MYORACLESUPPORT=false # 不通过MOS更新 DECLINE_SECURITY_UPDATES=true # 必须设为true,否则安装会卡在提示

实操心得:DECLINE_SECURITY_UPDATES=true这一行至关重要。如果不设置或设为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.sh

4.2 执行root配置脚本

不要关闭当前终端!新开一个终端窗口,使用root用户登录,依次执行提示的两个脚本:

# 执行第一个脚本 sh /u01/app/oraInventory/orainstRoot.sh # 执行第二个脚本,过程中会提示输入本地bin目录路径,直接回车使用默认值即可 sh /u01/app/oracle/product/19.3.0/dbhome_1/root.sh

root.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 gdbName=orcl # 全局数据库名,通常与ORACLE_SID相同 sid=orcl # 数据库实例名 databaseConfigType=SI # 单实例 templateName=General_Purpose.dbc # 使用通用模板 sysPassword=YourStrongSysPassword123 # 设置SYS用户密码,务必足够复杂 systemPassword=YourStrongSystemPassword123 # 设置SYSTEM用户密码 datafileDestination=/u02/oradata # 数据文件存放目录 recoveryAreaDestination=/u03/fast_recovery_area # 快速恢复区目录 storageType=FS # 文件系统存储 characterSet=AL32UTF8 # 数据库字符集,推荐UTF8 nationalCharacterSet=AL16UTF16 # 国家字符集 createAsContainerDatabase=false # 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/YourStrongSysPassword123@orcl 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/YourStrongSystemPassword123@localhost: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 典型安装失败场景与排查思路

即使按照步骤操作,也可能遇到问题。以下是几个高频故障点:

  1. makefile相关错误(如Error in invoking target 'agent nmhs'):

    • 根因:几乎都是系统依赖包缺失或不匹配,特别是compat-libstdc++-33,libaio-devel,glibc-devel等。
    • 排查:回顾2.1节,使用rpm -qa | grep <包名>逐一确认关键包是否安装。查看安装日志 ($ORACLE_BASE/oraInventory/logs/),找到具体的编译错误信息,通常能指向缺失的库文件。
  2. 安装程序无响应或卡在某个百分比:

    • 根因:
      • 网络问题:响应文件中DECLINE_SECURITY_UPDATES未设为true,程序在尝试连接Oracle官网。
      • 空间不足:/tmp空间或目标安装目录空间不足。
      • 权限问题:Oracle用户对安装目录 (/u01/app) 或清单目录 (/u01/app/oraInventory) 没有写权限。
    • 排查:实时跟踪安装日志 (tail -f),看最后输出的错误信息。检查磁盘空间df -h。检查目录权限ls -ld /u01/app
  3. DBCA建库失败:

    • 根因:
      • 密码复杂度:响应文件中指定的sysPasswordsystemPassword不符合Oracle默认的密码复杂度策略(12c以后要求较高)。
      • 路径不存在或权限不足:datafileDestinationrecoveryAreaDestination指定的目录不存在,或Oracle用户无权写入。
      • 内存不足:系统可用内存不足以完成建库过程。
    • 排查:查看DBCA的详细日志 ($ORACLE_BASE/cfgtoollogs/dbca/<sid>/)。可以先尝试使用一个非常复杂的密码(包含大小写字母、数字、特殊字符)。确保目录已创建且权限正确。建库前可临时关闭无关进程释放内存。
  4. 监听器启动失败或客户端无法连接:

    • 根因:监听器配置文件 ($ORACLE_HOME/network/admin/listener.ora) 配置错误,或防火墙未开放1521端口。
    • 排查:检查listener.oraHOST是否设置为正确的主机名或IP。使用netstat -tlnp | grep 1521查看端口是否监听。关闭防火墙或添加规则:firewall-cmd --permanent --add-port=1521/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_target=4G SCOPE=spfile; ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=spfile; -- 重启数据库生效 SHUTDOWN IMMEDIATE; STARTUP;

静默安装的熟练运用,标志着你从“手工操作者”向“自动化运维者”的转变。它带来的不仅是效率提升,更是环境标准化和部署可靠性的保证。把这份详细的配置和响应文件保存好,它们就是你未来一键部署Oracle数据库的“配方”。下次再需要搭建环境时,你只需要准备好干净的服务器,运行几个脚本和命令,泡杯咖啡的功夫,一个生产就绪的数据库就已经在运行了。这种掌控感,才是运维工作的乐趣所在。

http://www.jsqmd.com/news/1397810/

相关文章:

  • 新建胶合板生产线如何选烘干设备|邢台巨工机械单板烘干机(板皮烘干机)人造板设备厂家推荐 - 米諾
  • 上海钻戒回收六大骗局全拆解:从“虚高引流”到“调包压级”,2026合规门店交易避坑手册 - 一刻涨新知
  • 任务栏透明全配置指南:用 settings.json 玩转 TranslucentTB 动态模式
  • 绝区零一条龙完整上手指南:自动战斗与每日任务的一键托管玩法
  • Qt Creator悬浮注释配置指南:提升C++开发效率的关键技巧
  • vue fastapi admin 使用
  • LangChain模块化工具库:从RAG到智能代理的AI应用开发实践
  • 禁用 Windows Defender 终极实测:一键永久关闭,内存占用释放 95%
  • 搜狗输入法深度净化指南:彻底关闭广告弹窗与后台进程
  • Ubuntu 20.04中文环境配置:Fcitx5输入法安装与疑难解决
  • 长链剖分优化DP 学习笔记
  • 计算机毕业设计之个人记账app
  • 网页截图终极指南:免费Chrome插件一键生成整页长图
  • 不写一行代码,用 Pulover‘s Macro Creator 把重复操作录成自动化宏
  • Windows下Node.js环境配置全攻略:从安装到多版本管理
  • FPGA的仿真分类
  • IM Bot框架选型指南:Zhin、Koishi与NoneBot深度对比
  • 杭州卖黄金前千万别做这件事——很多人因此被压价,到店才知道 - 一刻涨新知
  • 2026网络安全基础防护与实战指南
  • 深耕白沟箱包产业带!保定邦沧箱包:源头工厂匠心赋能箱包定制与批量供货 - 米諾
  • 微信聊天记录如何免费完整导出?WeChatExporter 开源备份工具全攻略
  • defender-control 完整上手指南:永久禁用 Windows Defender 的 3 个关键步骤
  • 空调清洗上门在哪个平台找好?2026 高口碑自营平台深度体验与避坑指南 - 新闻快传
  • 微信wxid在线转换技术解析与企业应用实践
  • VSCode配置Spring Boot开发环境:从轻量编辑器到高效Java IDE
  • 2026年8月冷水机厂家:水冷式冷水机,风冷式冷水机,低温冷水机,螺杆式冷水机组公司优选! - 米諾
  • TegraRcmGUI 完整上手:3分钟完成Switch注入,新手也能一次点亮
  • IDEA断点调试
  • Kimi LeetCode 3910. 统计节点和为偶数的连通子图 Rust实现
  • 2026上海黄金回收行情怎么看?大盘价解读+计价公式 - 日常前沿快讯