ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

麒麟V10部署Oracle 19c RAC:国产化适配与自动化实践

麒麟V10部署Oracle 19c RAC:国产化适配与自动化实践

1. 国产化适配背景与挑战

在当前的国际技术环境下,国产化适配已成为企业IT基础设施建设的重要战略方向。麒麟V10作为国产操作系统的代表,Oracle 19c RAC则是企业级数据库的标杆产品,二者的结合既体现了国产化替代的技术路线,又保留了关键业务系统对高可用数据库的需求。

国产化适配的核心难点在于:

  • 操作系统层面的兼容性问题:麒麟V10基于Linux内核开发,但与主流的Red Hat/CentOS存在差异
  • 自动化部署工具的适配:传统Oracle RAC部署脚本需要针对麒麟V10进行修改
  • 内核参数调优:麒麟V10的默认内核参数与Oracle 19c的最佳实践存在差异
  • 依赖包管理:麒麟V10使用yum/dnf混合包管理机制,与纯yum环境有所不同

提示:在实际项目中,我们发现麒麟V10 SP2及以上版本对Oracle 19c的兼容性更好,建议优先选择较新的SP版本。

2. 环境准备与前置条件

2.1 硬件资源配置建议

对于生产环境的两节点Oracle 19c RAC部署,建议采用以下配置:

组件最低配置推荐配置
CPU16核32核
内存64GB128GB
共享存储500GB1TB以上
网卡10Gbps×225Gbps×2

特别注意:

  • 共享存储必须支持SCSI-3 Persistent Reservations
  • 建议为ASM配置独立的存储控制器
  • 网络建议采用bonding模式提高可用性

2.2 操作系统配置

麒麟V10需要进行的特殊配置:

# 关闭不必要的服务 systemctl disable firewalld systemctl stop firewalld # 安装基础依赖 dnf install -y bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make nfs-utils net-tools smartmontools sysstat # 内核参数调整 echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf echo "kernel.shmall = 1073741824" >> /etc/sysctl.conf echo "kernel.shmmax = 4398046511104" >> /etc/sysctl.conf sysctl -p

2.3 用户与目录规划

建议的目录结构:

/oracle ├── app │ ├── 19.0.0 │ └── grid ├── oraInventory └── oradata

创建必要的用户和组:

groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 backupdba groupadd -g 54325 dgdba groupadd -g 54326 kmdba groupadd -g 54327 asmdba groupadd -g 54328 asmoper groupadd -g 54329 asmadmin useradd -u 54321 -g oinstall -G dba,oper,asmdba oracle useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba grid

3. 自动化部署方案设计

3.1 架构设计

我们的自动化部署方案采用Ansible作为编排工具,整体架构如下:

  1. 控制节点:运行Ansible的主机
  2. 目标节点:两个RAC节点
  3. 共享存储:通过iSCSI或FC连接
  4. 私有网络:用于节点间通信

关键组件包括:

  • 预检查模块:验证系统配置是否符合要求
  • 配置生成器:根据输入参数生成响应文件
  • 安装执行器:按顺序执行安装步骤
  • 验证模块:检查安装结果

3.2 关键脚本实现

数据库软件静默安装响应文件模板(db_install.rsp):

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=rac1 UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/oracle/oraInventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/oracle/app/19.0.0 ORACLE_BASE=/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=dba oracle.install.db.rootconfig.executeRootScript=false

3.3 网络配置要点

RAC环境需要至少三个网络:

  1. 公共网络:客户端连接使用
  2. 私有网络:节点间通信(建议使用专有网卡)
  3. 存储网络:连接共享存储

配置示例:

# 私有网络bonding配置 nmcli con add type bond con-name bond0 ifname bond0 mode active-backup nmcli con add type bond-slave ifname eth1 master bond0 nmcli con add type bond-slave ifname eth2 master bond0 nmcli con mod bond0 ipv4.addresses 192.168.100.10/24 nmcli con mod bond0 ipv4.method manual nmcli con up bond0

4. 安装过程与问题排查

4.1 安装步骤分解

  1. Grid Infrastructure安装

    ./gridSetup.sh -silent -responseFile /tmp/grid_install.rsp
  2. 执行root脚本

    /oracle/app/19.0.0/grid/root.sh
  3. 数据库软件安装

    ./runInstaller -silent -responseFile /tmp/db_install.rsp
  4. 创建ASM磁盘组

    CREATE DISKGROUP DATA NORMAL REDUNDANCY DISK '/dev/oracleasm/disks/DISK1','/dev/oracleasm/disks/DISK2' ATTRIBUTE 'au_size'='4M';
  5. 创建RAC数据库

    dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl -sid orcl \ -nodelist rac1,rac2 \ -storageType ASM \ -diskGroupName DATA \ -characterSet AL32UTF8 \ -totalMemory 4096 \ -emConfiguration NONE

4.2 常见问题与解决方案

问题1:CVU检查失败

PRVF-7532 : 无法在节点 "rac1" 上检索物理内存大小

解决方案:

# 修改/etc/sudoers文件,添加 grid ALL=(ALL) NOPASSWD: /usr/bin/free

问题2:OCR无法创建

CRS-4000: Command Create failed, or completed with errors.

解决方案:

  1. 检查共享存储权限
  2. 确认ASM磁盘已正确标记
  3. 检查multipath配置

问题3:节点间时间不同步

CRS-6709: Cluster Time Synchronization Service check failed

解决方案:

# 在所有节点执行 yum install -y chrony systemctl enable chronyd systemctl start chronyd chronyc sources

5. 性能调优与监控

5.1 麒麟V10特定优化

  1. 内核参数追加:

    echo "vm.swappiness = 10" >> /etc/sysctl.conf echo "vm.dirty_ratio = 15" >> /etc/sysctl.conf echo "vm.dirty_background_ratio = 3" >> /etc/sysctl.conf
  2. IO调度器调整:

    echo deadline > /sys/block/sda/queue/scheduler
  3. 透明大页禁用:

    echo never > /sys/kernel/mm/transparent_hugepage/enabled

5.2 Oracle 19c RAC优化

关键参数建议:

-- 实例参数 ALTER SYSTEM SET sga_target=16G SCOPE=spfile; ALTER SYSTEM SET pga_aggregate_target=4G SCOPE=spfile; ALTER SYSTEM SET db_cache_size=8G SCOPE=spfile; ALTER SYSTEM SET shared_pool_size=4G SCOPE=spfile; -- RAC特定参数 ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile; ALTER SYSTEM SET cluster_interconnects='192.168.100.0' SCOPE=spfile; ALTER SYSTEM SET remote_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=scan-ip)(PORT=1521))' SCOPE=spfile;

5.3 监控方案

推荐监控指标:

类别监控项阈值检查频率
集群CRS状态ONLINE5分钟
网络私有网络延迟<2ms1分钟
存储ASM磁盘组剩余空间>20%15分钟
性能AWR报告无异常每小时

自动化监控脚本示例:

#!/bin/bash CRS_STATUS=$(crsctl check crs) if [[ $CRS_STATUS != *"CRS-4638"* ]]; then echo "CRS status abnormal: $CRS_STATUS" | mail -s "RAC Alert" dba@example.com fi

6. 维护与升级策略

6.1 日常维护

  1. 定期检查集群状态:

    crsctl check cluster -all
  2. ASM磁盘组平衡:

    ALTER DISKGROUP DATA REBALANCE POWER 11;
  3. 统计信息收集:

    EXEC DBMS_STATS.GATHER_DATABASE_STATS(ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE);

6.2 补丁应用

麒麟V10系统补丁更新:

dnf update -y

Oracle季度补丁应用步骤:

  1. 下载补丁包
  2. 执行opatch前置检查
  3. 滚动应用补丁(每个节点依次执行)
  4. 验证补丁状态

6.3 备份策略

推荐的RMAN备份配置:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/%U'; RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

7. 项目经验总结

在实际实施过程中,我们总结了以下关键经验:

  1. 麒麟V10与Oracle 19c的兼容性已经相当成熟,但需要特别注意:

    • 必须使用特定版本的依赖包
    • 某些内核参数需要比标准Linux更激进的设置
    • 中文环境下的字符集处理需要额外测试
  2. 自动化部署大大提高了效率,但需要:

    • 完善的预检查机制
    • 详细的日志记录
    • 关键步骤的人工确认点
  3. 性能调优方面:

    • 麒麟V10的IO调度对Oracle ASM特别敏感
    • 网络bonding模式的选择直接影响RAC性能
    • 内存管理需要比传统Linux更精细的控制
  4. 高可用保障:

    • 必须定期测试故障转移
    • 监控要覆盖所有RAC特有指标
    • 备份策略需要考虑集群特性

这个方案已经在多个金融和电信行业的国产化项目中成功实施,平均部署时间从传统手工方式的2-3天缩短到4小时以内,且配置一致性达到100%。对于计划进行国产化替代的企业,这套自动化部署方案可以大大降低技术风险和实施成本。

RELATED READING

延伸阅读

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