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

RedHat 8.8 部署 Oracle 19c:从系统配置到服务自启的完整实践

1. 环境准备与系统配置

在RedHat 8.8上部署Oracle 19c前,需要确保系统满足最低硬件和软件要求。我遇到过不少因为环境配置不当导致的安装失败案例,这里分享几个关键检查点:

内存与交换空间配置(实测推荐值):

  • 物理内存至少4GB(生产环境建议8GB以上)
  • 交换空间计算公式:
    # 计算交换分区大小的Shell脚本 MEMORY_GB=$(free -g | awk '/Mem:/ {print $2}') if [ $MEMORY_GB -lt 2 ]; then SWAP_GB=$((MEMORY_GB * 2)) elif [ $MEMORY_GB -lt 16 ]; then SWAP_GB=$MEMORY_GB else SWAP_GB=16 fi

磁盘空间要求

  • /tmp目录至少1GB
  • Oracle二进制文件需要6.5GB
  • 数据文件建议预留100GB(根据业务规模调整)

内核参数调优: 编辑/etc/sysctl.conf添加以下参数(这是我多次部署验证过的稳定值):

# Oracle 19c专用配置 kernel.shmall = 2097152 kernel.shmmax = 4294967296 kernel.shmmni = 4096 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500

执行sysctl -p生效后,建议用sysctl -a | grep shm验证是否生效。

注意:如果服务器已启用HugePages,需要从可用内存中扣除HugePages占用的部分再计算swap空间

2. 依赖包安装与用户配置

RedHat 8.8的依赖包管理与早期版本不同,使用dnf替代yum。以下是必须安装的软件包组:

dnf install -y oracle-database-preinstall-19c

这个meta-package会自动安装所有基础依赖,比手动安装更可靠。我遇到过手动安装漏掉libnsl导致安装器报错的情况,用这个方法可以避免。

创建Oracle用户的推荐做法:

groupadd -g 54321 oinstall groupadd -g 54322 dba useradd -u 54321 -g oinstall -G dba oracle echo "oracle_password" | passwd oracle --stdin

目录权限设置(遵循OFA标准):

mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01

3. 安装文件准备与静默安装

从Oracle官网下载安装包后,建议做MD5校验:

md5sum LINUX.X64_193000_db_home.zip

解压时使用oracle用户操作:

su - oracle unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

静默安装响应文件配置示例(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/dbhome_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=dba oracle.install.db.OSDGDBA_GROUP=dba oracle.install.db.OSKMDBA_GROUP=dba oracle.install.db.OSRACDBA_GROUP=dba

启动静默安装:

./runInstaller -silent -responseFile /path/to/db_install.rsp

安装过程中常见错误INS-08101的解决方法:

export CV_ASSUME_DISTID=OL8 # 针对RedHat 8的兼容性设置

4. 数据库创建与网络配置

使用DBCA创建数据库的响应文件模板:

<?xml version="1.0" encoding="UTF-8"?> <DatabaseTemplate name="General_Purpose.dbc" description="General Purpose Database" version="19.0.0"> <CommonAttributes> <option name="CONTAINERDATABASE" value="false"/> <option name="JISQL" value="true"/> <option name="ORACLESERVER" value="true"/> </CommonAttributes> <Variables> <variable name="DBNAME" value="ORCL"/> <variable name="SID" value="ORCL"/> <variable name="CHARACTERSET" value="AL32UTF8"/> </Variables> </DatabaseTemplate>

启动DBCA静默创建:

dbca -silent -createDatabase \ -responseFile /path/to/dbca.rsp \ -gdbname ORCL \ -sid ORCL \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -emConfiguration DBEXPRESS \ -enableArchive true

监听器配置关键点:

lsnrctl start lsnrctl status # 验证监听状态

5. 服务自启配置

创建systemd服务文件/etc/systemd/system/oracle-19c.service

[Unit] Description=Oracle Database 19c After=network.target [Service] Type=forking User=oracle Group=oinstall Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1" Environment="ORACLE_SID=ORCL" ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME [Install] WantedBy=multi-user.target

启用服务:

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

验证自启是否生效可以重启服务器后检查:

ps -ef | grep pmon sqlplus / as sysdba <<EOF SELECT status FROM v\$instance; EXIT; EOF

6. 性能优化建议

根据实际业务负载调整SGA/PGA大小:

-- 查看当前内存分配 SHOW PARAMETER sga_target; SHOW PARAMETER pga_aggregate_target; -- 建议初始设置(8GB内存服务器示例) ALTER SYSTEM SET sga_target=4G SCOPE=spfile; ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=spfile;

表空间自动扩展配置:

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/system01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

最后提醒,定期检查alert日志是个好习惯:

tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log
http://www.jsqmd.com/news/1184324/

相关文章:

  • Windows 10/11系统版本一键转换:原理、操作与问题排查
  • 弹窗代码疯了吧?5小时一次还自动适应屏幕,HTML黑科技太狠了
  • ADS8665与PIC18F87J10在精密信号采集中的应用
  • OpenCV实战指南:从零掌握计算机视觉核心技术与应用场景
  • 从RAID到AHCI:CentOS安装时磁盘识别失败的深层解析与BIOS模式切换实战
  • 随机舞蹈路演视频制作全流程:从多机位拍摄到AI动作分析
  • 普通本科软件工程求职攻略:如何通过CDA数据分析师证书提升竞争力
  • Unity集成ZFBrowser实现C#与JavaScript双向通信的完整指南
  • 华为Ascend昇腾CANN实战指南:从环境搭建到模型推理部署
  • 2026年7月最新南京秦淮区夫子庙街道亨得利官方名表服务中心电话公示 - 亨得利官方博客
  • Pandas多维聚合实战:一次groupby搞定多指标分析
  • Loop终极指南:免费开源macOS窗口管理工具快速入门
  • Sqribble规则驱动文档自动化:结构化模板的工程化实践
  • OpenAI Leap硬件:存算融合与硅光互连重构AI计算范式
  • 亨得利官方钟表服务中心|官方热线及详细网点地址权威信息公示(2026年7月更新) - 亨得利官方
  • AI Agent 可观测性:如何记录推理、工具调用、失败与成本
  • UE5实例化渲染优化:InstancedStaticMesh组件原理与实战避坑指南
  • Transformer架构详解:从自注意力机制到完整实现与优化
  • C#深度学习推理利器:TensorRTSharp实战指南
  • 鸿蒙原生开发手记:徒步迹 - @State/@Prop/@Link 状态管理
  • 基于深度学习的音频分离与OCR弹幕识别技术实战
  • CentOS 7.7 + Ubuntu 18.04 双系统引导修复与GRUB2管理实战
  • Java调R语言?Rserve这把双刃剑,一个连接就能让代码飞起来
  • Windows Server 2012 Build 7968 SKU特性解析与安装实践
  • 如何智能管理Windows文件管理器中的顽固图标问题?
  • 遗传算法实战进阶:破解早熟收敛与动态平衡调控
  • 基于Claude Fable 5与OpenRouter构建生产级AI Agent框架Damon
  • Linux 动态链接库(.so)的编译、链接与运行时路径解析实战
  • AI应用推理成本优化:从Fable 30%成本占比到实战解决方案
  • 2026年厦门钨钢螺栓厂家产品及配套服务体验测评 - 热点品牌推荐