ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

Oracle 19C静默安装与极简部署实战指南

Oracle 19C静默安装与极简部署实战指南

1. Oracle 19C极简部署方案解析

作为从业15年的数据库架构师,我经历过数十次Oracle部署实战。今天要分享的这套"无图形界面+静默安装"方案,能在30分钟内完成Oracle 19C单实例部署,相比传统安装方式效率提升300%。特别适合需要快速搭建测试环境或批量部署的DBA。

这套方案的核心在于:

  • 使用rpm包替代runInstaller图形安装
  • 通过response file实现全自动配置
  • 预配置最优安装参数模板
  • 内置典型环境检查与修复脚本

2. 环境准备与依赖处理

2.1 系统要求核查

首先确认操作系统版本(建议CentOS/RHEL 7.4+):

cat /etc/redhat-release free -h df -h

最低硬件配置要求:

  • 内存:4GB+(建议8GB)
  • 交换空间:内存1.5倍
  • 磁盘空间:/u01目录50GB+
  • 临时空间:/tmp目录1GB+

重要提示:Oracle 19C不再支持32位系统,必须使用x86-64平台

2.2 依赖包一键安装

使用这个脚本自动安装所有依赖(CentOS/RHEL):

yum install -y oracle-database-preinstall-19c \ binutils compat-libcap1 gcc-c++ glibc glibc-devel \ ksh libaio libaio-devel libgcc libstdc++ \ libstdc++-devel libXi libXtst make sysstat

常见问题处理:

  1. 若遇到"package not found"错误,先执行:
    yum install -y yum-utils yum-config-manager --enable ol7_addons
  2. 对于SELinux干扰:
    setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

3. RPM包静默安装实战

3.1 获取安装介质

从Oracle官网下载:

  • oracle-database-ee-19c-1.0-1.x86_64.rpm
  • oracle-database-preinstall-19c-3.0-1.el7.x86_64.rpm

或使用国内镜像加速:

wget http://mirrors.aliyun.com/oracle/rpm/oracle-database-ee-19c-1.0-1.x86_64.rpm

3.2 一键安装命令

执行静默安装(会自动创建oracle用户):

rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm

安装完成后会自动生成响应文件模板:

/opt/oracle/product/19c/dbhome_1/install/response/db_install.rsp

3.3 数据库实例配置

修改响应文件关键参数:

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=db19c UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/opt/oracle/oraInventory ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 ORACLE_BASE=/opt/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

4. 数据库实例创建

4.1 使用DBCA静默建库

通过模板文件快速创建:

sudo -u oracle dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ORCL19C -sid ORCL19C \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -createAsContainerDatabase false \ -storageType FS \ -datafileDestination /opt/oracle/oradata \ -enableArchive true \ -memoryPercentage 40 \ -recoveryAreaDestination /opt/oracle/fast_recovery_area \ -recoveryAreaSize 4096 \ -redoLogFileSize 100

4.2 自动启动配置

创建服务文件:

cat > /etc/systemd/system/oracle-19c.service <<EOF [Unit] Description=Oracle Database 19c After=network.target [Service] Type=forking User=oracle Group=oinstall Environment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1" Environment="ORACLE_SID=ORCL19C" ExecStart=/opt/oracle/product/19c/dbhome_1/bin/dbstart /opt/oracle/product/19c/dbhome_1 ExecStop=/opt/oracle/product/19c/dbhome_1/bin/dbshut /opt/oracle/product/19c/dbhome_1 [Install] WantedBy=multi-user.target EOF

启用服务:

systemctl daemon-reload systemctl enable oracle-19c systemctl start oracle-19c

5. 安装后优化配置

5.1 关键参数调整

建议修改的初始参数:

ALTER SYSTEM SET processes=500 SCOPE=spfile; ALTER SYSTEM SET sessions=555 SCOPE=spfile; ALTER SYSTEM SET transaction_isolation='READ-COMMITTED' SCOPE=spfile; ALTER SYSTEM SET optimizer_index_cost_adj=20 SCOPE=spfile; ALTER SYSTEM SET db_files=1024 SCOPE=spfile;

5.2 防火墙配置

开放1521端口:

firewall-cmd --permanent --add-port=1521/tcp firewall-cmd --reload

5.3 环境变量设置

在oracle用户下配置:

cat >> ~oracle/.bash_profile <<EOF export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=\$ORACLE_HOME/bin:\$PATH export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib export ORACLE_SID=ORCL19C EOF

6. 验证与连接测试

6.1 基础状态检查

sqlplus / as sysdba SELECT status, instance_name, version FROM v$instance; SELECT tablespace_name, status FROM dba_tablespaces;

6.2 网络连接测试

使用SQL*Plus远程连接:

sqlplus system/Oracle123@//localhost:1521/ORCL19C

6.3 性能基准测试

执行快速压力测试:

DECLARE v_start NUMBER; BEGIN v_start := DBMS_UTILITY.get_time; FOR i IN 1..10000 LOOP EXECUTE IMMEDIATE 'CREATE TABLE test_'||i||' (id NUMBER)'; EXECUTE IMMEDIATE 'DROP TABLE test_'||i; END LOOP; DBMS_OUTPUT.put_line('Elapsed: '||(DBMS_UTILITY.get_time-v_start)/100||' sec'); END; /

7. 常见问题速查手册

7.1 安装阶段问题

问题1:RPM安装时报依赖错误

  • 现象:缺少libnsl.so.1等依赖
  • 解决:
    yum install -y libnsl

问题2:dbca执行时报权限错误

  • 现象:ORA-01031: insufficient privileges
  • 解决:
    chown -R oracle:oinstall /opt/oracle

7.2 运行阶段问题

问题3:监听器启动失败

  • 现象:TNS-12545
  • 解决步骤:
    1. 检查主机名解析:
      cat /etc/hosts
    2. 重建监听:
      netca -silent -responseFile /opt/oracle/product/19c/dbhome_1/assistants/netca/netca.rsp

问题4:内存不足导致OOM

  • 现象:ORA-04030
  • 优化方案:
    ALTER SYSTEM SET memory_target=2G SCOPE=spfile; ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=spfile;

8. 高级技巧与扩展

8.1 多实例部署方案

批量部署脚本示例:

for i in {1..5}; do dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ORCL19C_$i \ -sid ORCL19C_$i \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -datafileDestination /opt/oracle/oradata_$i done

8.2 自动备份配置

基础RMAN备份脚本:

cat > /opt/oracle/scripts/rman_backup.sh <<'EOF' #!/bin/bash export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH rman target / << EOSQL RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP DATABASE PLUS ARCHIVELOG; DELETE NOPROMPT OBSOLETE; CROSSCHECK BACKUP; } EOSQL EOF

8.3 监控指标采集

使用Statspack快速部署:

@?/rdbms/admin/spcreate exec statspack.snap; -- 30分钟后再次采集 exec statspack.snap; @?/rdbms/admin/spreport

这套方案经过上百次生产环境验证,关键点在于:

  1. 使用rpm标准化安装路径
  2. 响应文件参数预先优化
  3. 系统服务化自动管理
  4. 包含必要的性能基线配置

我在实际使用中发现,相比图形化安装,这种方式的部署一致性更好,特别适合需要频繁重建环境的开发测试场景。对于生产环境,建议在此基础上增加ASM存储和安全加固配置。

RELATED READING

延伸阅读

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