1. 为什么选择静默安装Oracle19c?
第一次接触Oracle数据库安装的朋友,可能会被图形化界面里密密麻麻的选项吓到。我刚开始做DBA的时候,每次点"下一步"都战战兢兢,生怕哪个参数配错了要重头再来。直到后来接触了静默安装,才发现原来数据库部署可以这么优雅——不用盯着进度条发呆,一个响应文件就能搞定所有配置。
静默安装特别适合下面这些场景:
- 服务器没有图形界面:很多生产环境为了安全考虑,根本不会安装GUI组件
- 批量部署需求:要给几十台服务器装Oracle时,总不能每台都手动点一遍吧?
- 标准化运维:响应文件就是你的安装剧本,确保每台服务器的配置完全一致
实测下来,用静默安装方式部署Oracle19c,时间能比图形化安装节省40%以上。去年我们给客户做系统迁移,20套Oracle实例全部通过静默安装完成,最忙的时候一天部署了8套环境,全靠写好的响应文件模板。
2. 环境准备:这些坑我帮你踩过了
2.1 系统配置避坑指南
在RHEL 7.6上装Oracle19c时,这三个配置最容易出问题:
内存分配不足:物理内存小于8GB时,安装程序会直接报错。我有次在测试环境用4GB内存的虚拟机安装,先决条件检查死活过不去,后来发现是swap分区没配置够。建议按这个公式计算:
# 交换分区大小计算公式(单位MB) MEM=$(grep MemTotal /proc/meminfo | awk '{print $2/1024}') SWAP=$(($MEM < 16000 ? $MEM*2 : 16000))tmp空间不足:Oracle安装过程需要至少1GB的/tmp空间。遇到过最坑的情况是/tmp被占满导致安装中断,解决方案很简单:
# 清理/tmp或临时扩大空间 dd if=/dev/zero of=/tmp/tempswap bs=1M count=2048 chmod 600 /tmp/tempswap mkswap /tmp/tempswap swapon /tmp/tempswap依赖包缺失:即使用了预安装RPM包,还是可能缺依赖。这个命令能一键补全:
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc-c++ glibc-devel \ libaio-devel libstdc++-devel ksh make sysstat unixODBC-devel
2.2 存储路径规划实战
Oracle家目录放哪一直有争议,我的经验是:
- /opt方案:适合测试环境,跟着RPM包默认走就行
- /u01方案:生产环境推荐,三点优势:
- 独立文件系统,避免被其他应用写满
- 路径短,管理方便(比如ASM磁盘组+1)
- 符合OFA(Optimal Flexible Architecture)标准
创建目录时这个细节要注意:先确认文件系统挂载选项有noatime,能显著降低I/O压力:
# 检查现有挂载选项 grep /u01 /etc/fstab # 如果没有就添加 echo "/dev/mapper/vg_u01-lv_u01 /u01 xfs defaults,noatime 0 0" >> /etc/fstab3. RPM预安装包的妙用
3.1 为什么说它是懒人神器
Oracle官方提供的oracle-database-preinstall-19c这个RPM包,简直是我见过最良心的预配置工具。上次给新来的同事演示,他看完直呼"这也太智能了"——原来要手动配置20分钟的用户权限、内核参数,现在一条命令就搞定:
rpm -ivh oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm这个包具体帮我们做了哪些事?看这个对比表就明白了:
| 配置项 | 手动操作步骤 | RPM包自动完成 |
|---|---|---|
| 用户/用户组 | 需要手动创建oracle用户和6个组 | ✔️ |
| 内核参数 | 要改/etc/sysctl.conf里10+参数 | ✔️ |
| 资源限制 | 需配置/etc/security/limits.conf | ✔️ |
| 目录权限 | 要手动chown和chmod | ✔️ |
3.2 常见问题排雷
不过这个预安装包也不是万能的,有次在CentOS 8上装19c就踩了坑。报错提示缺少libnsl,解决方法很简单:
# CentOS 8特有依赖问题 dnf install -y libnsl还有个隐藏技巧:如果想自定义用户ID和组ID,可以在安装时指定参数:
rpm -ivh oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm \ --define "oracle_uid=1001" --define "oracle_gid=1001"4. 静默安装全流程拆解
4.1 响应文件生成技巧
生成响应文件有两种方式,我推荐用图形界面生成再修改,比直接手写靠谱多了。具体操作:
- 正常启动图形安装界面
- 填完所有配置后,在最后一步选择"保存响应文件"
- 保存为
/home/oracle/db_install.rsp
关键参数这样改:
# 改成静默模式 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/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba DECLINE_SECURITY_UPDATES=true4.2 一键安装脚本
把安装过程封装成脚本,下次用起来更方便:
#!/bin/bash # 解压安装包 unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME # 静默安装 $ORACLE_HOME/runInstaller -silent -ignorePrereq -waitforcompletion \ -responseFile /home/oracle/db_install.rsp # 执行root脚本 /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.3.0/db_1/root.sh # 验证安装 su - oracle -c "sqlplus / as sysdba <<EOF select status from v\$instance; exit EOF"5. 数据库实例创建实战
5.1 DBCA静默模式详解
用dbca静默创建数据库时,这个响应文件模板亲测可用:
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0 gdbName=ORCL sid=ORCL createAsContainerDatabase=true numberOfPDBs=1 pdbName=PDB1 useLocalUndoForPDBs=true templateName=General_Purpose.dbc sysPassword=Oracle_1234 systemPassword=Oracle_1234 emConfiguration=NONE datafileDestination=/u01/app/oracle/oradata recoveryAreaDestination=/u01/app/oracle/fast_recovery_area characterSet=AL32UTF8 nationalCharacterSet=AL16UTF16 initParams=sga_target=4GB,pga_aggregate_target=1GB启动静默创建的命令要注意加-createDatabase参数:
dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp5.2 内存自动配置技巧
在内存有限的服务器上,可以用这个技巧自动计算内存分配:
# 根据系统内存自动计算SGA和PGA TOTAL_MEM=$(free -m | awk '/Mem:/{print $2}') SGA_SIZE=$(($TOTAL_MEM * 70 / 100)) PGA_SIZE=$(($TOTAL_MEM * 20 / 100)) dbca -silent -createDatabase \ -initParams sga_target=${SGA_SIZE}M,pga_aggregate_target=${PGA_SIZE}M \ -responseFile /home/oracle/dbca.rsp6. 安装后必须做的5件事
开启归档模式(除非是纯测试环境):
SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN;配置自动备份:
# 最简单的RMAN备份脚本 cat > /home/oracle/rman_backup.sh <<'EOF' rman target / <<CMDS CONFIGURE RETENTION POLICY TO REDUNDANCY 2; CONFIGURE CONTROLFILE AUTOBACKUP ON; BACKUP DATABASE PLUS ARCHIVELOG; EOF改默认密码有效期:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;设置定时清理日志:
# 每天凌晨清理30天前的监听日志 0 0 * * * find $ORACLE_BASE/diag -name "*.log" -mtime +30 -delete配置监控告警:
-- 监控表空间使用率 CREATE OR REPLACE DIRECTORY alert_dir AS '/u01/app/oracle/admin/alert';
7. 不同安装路径性能对比
去年我们专门做了个测试,对比/opt和/u01两种安装路径的性能差异。测试环境是AWS上的r5.2xlarge实例(8vCPU/64GB内存),测试结果有点意思:
| 测试项 | /opt方案 | /u01方案 | 差异 |
|---|---|---|---|
| OLTP吞吐量 | 1250 TPS | 1320 TPS | +5.6% |
| 全表扫描耗时 | 47秒 | 43秒 | -8.5% |
| 备份速度 | 1.2GB/s | 1.3GB/s | +8.3% |
| 故障恢复时间 | 6分12秒 | 5分48秒 | -7.7% |
关键发现:当使用NVMe SSD时,/u01方案的优势更明显。这是因为/u01通常单独挂载高性能磁盘,避免了和系统盘争抢I/O资源。