ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Oracle 11gR2静默安装与自动化部署实践指南

Oracle 11gR2静默安装与自动化部署实践指南 1. 为什么需要静默安装Oracle 11gR2在Linux服务器运维领域静默安装Silent Installation是一种无需人工交互的自动化部署方式。对于Oracle数据库这种复杂的企业级软件传统图形化安装方式需要占用大量系统资源且无法批量部署。我在金融行业做DBA时曾用静默方式在30台服务器上同时部署Oracle集群相比单台图形化安装效率提升20倍以上。CentOS 7.5作为当时企业级Linux的稳定版本其内核3.10.0-862对Oracle 11gR2有良好的兼容性。但要注意这个组合属于非官方推荐配置——Oracle官方认证的是RHEL 6.x/7.x。经过实测CentOS 7.5需要特别处理libaio、pdksh等依赖包否则会在安装后期报错。2. 环境准备与依赖检查2.1 系统资源规划建议根据Oracle 11gR2的官方文档最小内存要求是1GB但生产环境我建议测试环境4GB内存 20GB存储生产环境16GB内存 100GB存储ASM情况下需额外50%用以下命令检查当前资源# 内存检查 free -h # 存储检查注意/tmp至少1GB df -h # 交换分区建议为物理内存1.5倍 swapon --show2.2 依赖包完整安装清单CentOS 7.5默认仓库缺少部分Oracle所需包需配置EPEL源yum install -y epel-release yum groupinstall -y Development Tools关键依赖包列表实测可用版本yum install -y \ binutils-2.27-43.el7 \ compat-libcap1-1.10-7.el7 \ compat-libstdc-33-3.2.3-72.el7 \ glibc-2.17-317.el7 \ glibc-devel-2.17-317.el7 \ ksh-20120801-142.el7 \ libaio-0.3.109-13.el7 \ libaio-devel-0.3.109-13.el7 \ libgcc-4.8.5-44.el7 \ libstdc-4.8.5-44.el7 \ libstdc-devel-4.8.5-44.el7 \ libXi-1.7.9-1.el7 \ libXtst-1.2.3-1.el7 \ make-3.82-24.el7 \ sysstat-10.1.5-19.el7 \ unixODBC-2.3.1-14.el7 \ unixODBC-devel-2.3.1-14.el7特别注意pdksh包在CentOS 7中已被ksh替代但Oracle安装脚本会检查pdksh。解决方法ln -s /bin/ksh /bin/pdksh3. 静默安装配置文件详解3.1 响应文件模板解析从Oracle安装包中提取响应文件模板unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip cd database/response cp db_install.rsp /tmp/关键参数配置示例/tmp/db_install.rsp# 基础配置 oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.isCustomInstallfalse # 操作系统组 oracle.install.db.DBA_GROUPdba oracle.install.db.OPER_GROUPoper # 安装选项 oracle.install.db.config.starterdb.typeGENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBNameorcl oracle.install.db.config.starterdb.SIDorcl oracle.install.db.config.starterdb.memoryLimit8192 oracle.install.db.config.starterdb.password.ALLOracle123 oracle.install.db.config.starterdb.automatedBackup.enablefalse3.2 内核参数调优编辑/etc/sysctl.conf添加# Oracle 11gR2 Recommended fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 536870912 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 -p4. 安装过程全记录4.1 执行静默安装命令切换到oracle用户执行cd /database ./runInstaller -silent -ignorePrereq \ -responseFile /tmp/db_install.rsp \ -waitforcompletion典型安装日志输出 开始执行Oracle Universal Installer... 正在检查临时空间必须大于500MB。 实际为12582MB 通过 正在检查交换空间必须大于150MB。 实际为4096MB 通过 正在检查监视器未找到DISPLAY环境变量。将假定无头安装 准备从/tmp/db_install.rsp加载响应文件 正在验证安装环境... 此安装所需的总空间为3.5GB4.2 常见错误处理方案问题1: OUI-25031错误 - 无法写入inventory目录# 解决方案 chown -R oracle:oinstall /u01 chmod -R 775 /u01问题2: PRVF-0002 : 无法检索本地节点名称# 在/etc/hosts添加需root权限 127.0.0.1 $(hostname)问题3: 缺少libXext.so.6yum install -y libXext5. 安装后配置要点5.1 环境变量配置oracle用户.bash_profile追加export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SIDorcl export PATH$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH$ORACLE_HOME/lib:/usr/lib5.2 数据库自动启动创建/etc/init.d/oracle脚本#!/bin/bash # chkconfig: 345 99 10 case $1 in start) su - oracle -c $ORACLE_HOME/bin/dbstart $ORACLE_HOME ;; stop) su - oracle -c $ORACLE_HOME/bin/dbshut $ORACLE_HOME ;; esac设置开机启动chmod 755 /etc/init.d/oracle chkconfig --add oracle6. 验证安装完整性6.1 基础功能测试sqlplus / as sysdba SQL SELECT status FROM v$instance; -- 应返回OPEN SQL SELECT * FROM v$version; -- 应显示11.2.0.4.0版本信息 SQL CREATE TABLE test(id NUMBER); -- 测试表空间可写性6.2 压力测试建议使用Oracle自带的ORION工具cd $ORACLE_HOME/bin ./orion -run advanced -testname /u01/oradata/test我在某次部署后发现I/O性能异常最终定位是磁盘调度算法问题。解决方法echo deadline /sys/block/sdb/queue/scheduler7. 安全加固建议7.1 最小权限原则实施-- 创建应用专用用户 CREATE USER appuser IDENTIFIED BY ComplexPwd123! DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 100M ON users; -- 仅授予必要权限 GRANT CREATE SESSION, CREATE TABLE TO appuser;7.2 审计配置示例编辑$ORACLE_HOME/network/admin/sqlnet.ora# 启用审计 AUDIT_TRAILOS AUDIT_FILE_DEST/u01/app/oracle/admin/orcl/adump在数据库中启用标准审计AUDIT SELECT TABLE, UPDATE TABLE, DELETE TABLE BY ACCESS;8. 维护与监控方案8.1 自动化备份脚本创建/home/oracle/backup.sh#!/bin/bash export ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 export PATH$PATH:$ORACLE_HOME/bin rman target / EOF RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP DATABASE PLUS ARCHIVELOG; DELETE NOPROMPT OBSOLETE; } EOF添加到crontab0 2 * * * /home/oracle/backup.sh /var/log/oracle_backup.log 218.2 关键指标监控使用以下SQL创建监控视图CREATE VIEW vw_monitor AS SELECT (SELECT COUNT(*) FROM v$session) active_sessions, (SELECT ROUND(SUM(bytes)/1024/1024,2) FROM dba_data_files) db_size_mb, (SELECT ROUND(SUM(bytes)/1024/1024,2) FROM dba_free_space) free_space_mb, (SELECT value FROM v$pgastat WHERE nametotal PGA allocated) pga_allocated FROM dual;
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进