ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Oracle RAC集群部署核心原理与VMware实战

Oracle RAC集群部署核心原理与VMware实战 1. 这不是“装个Oracle”那么简单RAC环境的本质是高可用架构的精密协同你搜“VMware Centos7.4UDEVAMSORACLE 配置RAC环境”点开一堆教程十有八九开头就是“下载ISO、新建虚拟机、配置网络……”。但我要先泼一盆冷水如果你只把它当成“在虚拟机里装两个Oracle数据库”那接下来三天你会反复重装系统最后瘫在椅子上盯着报错日志发呆。RACReal Application Clusters从来就不是“多装几套Oracle”的加法题而是一套以共享存储为心脏、以集群心跳为脉搏、以资源协调为神经的高可用操作系统。它要求底层Linux内核对SCSI设备的识别必须稳定如钟表要求UDEV规则能像指纹一样精准绑定物理磁盘路径要求AMSASMAutomatic Storage Management不只是个“自动管理磁盘的工具”而是整个集群数据存取的唯一调度中枢——它得同时听懂两个节点发来的IO指令还得确保不撞车、不丢帧、不乱序。我第一次搭这个环境时在CentOS 7.4上卡了整整17个小时。问题出在哪不是Oracle安装包错了也不是密码输错了而是UDEV规则里一个小小的SYMLINK写成了SYMLINK导致两个节点看到的ASM磁盘名完全不一致。节点1认/dev/asm-disk1节点2却认/dev/asm-disk2结果CRSCluster Ready Services启动直接报错“ORA-15032: not all alterations performed”后面跟着一串ASM无法挂载的连锁反应。这背后暴露的是RAC最核心的脆弱点所有节点必须对底层硬件资源达成绝对一致的“共识”。VMware在这里不是简单的容器它提供的共享磁盘如RDM或独立持久化VMDK必须被Linux内核以完全相同的方式解析CentOS 7.4的systemd服务管理机制和udev规则加载顺序比旧版6.x更严格也更隐蔽AMS不是可选模块它是RAC的基石——没有它你就没法把多个物理磁盘聚合成一个逻辑磁盘组供Oracle读写而Oracle本身在11gR2及以后版本中RAC已深度绑定ASM脱离ASM谈RAC就像脱离开水谈鱼。所以这篇内容不教你怎么点鼠标下一步而是带你拆开这个精密钟表的每一个齿轮为什么UDEV规则必须用KERNELsd*而不是NAMEsd*为什么AMS磁盘组的AUAllocation Unit大小要按实际IO模式计算而不是盲目设1M为什么VMware里给RAC节点分配的vCPU不能简单按物理核数1:1映射这些细节决定了你的RAC是跑得稳如泰山还是三天两头脑溢血。适合谁看如果你正准备Oracle OCP认证里的RAC实验部分或者公司测试环境急需一套可验证的双节点集群又或者你刚接手一套生产RAC发现总在莫名重启——那你需要的不是步骤清单而是这套架构背后的“为什么”。2. 环境设计与技术选型为什么是VMwareCentOS 7.4UDEVAMS这条技术栈2.1 VMware虚拟化层的“确定性”比性能更重要很多人问“为什么不用VirtualBox或Hyper-V”答案很实在VMware Workstation Pro或ESXi对SCSI控制器和共享磁盘的模拟是目前x86桌面/测试虚拟化平台中最接近物理环境的。RAC对存储路径稳定性的要求近乎苛刻而VirtualBox的共享磁盘实现如VMDK共享在Linux下常出现设备节点漂移Hyper-V的SCSI控制器在CentOS 7.4上驱动兼容性曾有长期bug尤其涉及多路径I/O。VMware则通过两种成熟方式解决共享存储RDMRaw Device Mapping将物理磁盘或SAN LUN直接映射给虚拟机绕过VMFS文件系统层获得近乎裸金属的IO性能和路径稳定性。这是生产环境首选但测试环境往往没真实SAN。独立持久化VMDK在VMware里创建多个VMDK文件设置属性为“Independent-Persistent”并从VM设置中将它们同时添加给两个虚拟机。关键点在于必须勾选“Enable disk locking”启用磁盘锁定否则两个节点会因并发写入元数据而损坏磁盘。我实测过未启用此选项时CRS启动阶段就会触发ASM磁盘头校验失败。提示VMware Workstation 16对CentOS 7.4支持极好但务必关闭“3D加速”和“声卡”——这些无关设备会增加内核中断负载干扰集群心跳检测的实时性。RAC节点间的心跳通常走private network延迟超过500ms就可能触发reboot而图形子系统正是隐藏的延迟源。2.2 CentOS 7.4一个被低估的“黄金平衡点”为什么不是更新的CentOS 7.9或8.x因为Oracle官方认证矩阵里11gR2 RAC对7.4的支持最完整且7.4的kernel-3.10.0-693.el7带有一个关键补丁修复了scsi_mod模块在高并发IO下偶发的device busy错误。这个错误在RAC启动ASM实例时高频出现表现为ORA-15032伴随ORA-15183ASM磁盘头损坏。而7.9的kernel虽新但Oracle 11.2.0.4的RDBMS二进制包与之存在细微ABI不兼容需额外打PSU补丁。CentOS 7.4的systemd服务管理也恰到好处它既避免了6.x时代init.d脚本的手动依赖管理混乱又不像8.x那样激进地用cgroups v2彻底重构资源隔离——RAC的OCSSDOracle Cluster Synchronization Services Daemon进程对cgroups v1的CPU亲和性控制更成熟。我对比过同样配置下7.4节点加入集群平均耗时23秒7.9需31秒8.x则高达45秒以上主要卡在crsctl start crs后的ohasd初始化阶段。2.3 UDEV让虚拟磁盘拥有“身份证”而非“临时工号”UDEV规则是RAC环境里最易被忽视、却最致命的一环。它的核心任务不是“让磁盘能被识别”而是“让所有节点永远用同一个名字访问同一块物理磁盘”。VMware虚拟磁盘在Linux里表现为/dev/sdX但sda、sdb的分配顺序取决于内核探测顺序——而这个顺序在虚拟机重启、热插拔后极易变化。UDEV通过设备属性如ID_SERIAL生成稳定符号链接例如/dev/asm-disk1始终指向序列号为VMware_Virtual_SATA_AHCI_00000000000000000001的磁盘。关键细节在于规则写法# 正确基于唯一硬件标识且指定SUBSYSTEM为block KERNELsd*, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device/dev/$name, SYMLINKasm-disk%n, OWNERgrid, GROUPasmadmin, MODE0660这里%n代表磁盘编号sda→0, sdb→1PROGRAM调用scsi_id获取序列号SYMLINK是追加而非覆盖。若写成SYMLINK当多个规则匹配同一设备时后者会覆盖前者导致符号链接丢失。我见过最坑的案例规则里漏了SUBSYSTEMblock结果UDEV把SCSI控制器设备如/dev/bus/usb/001/001也卷进来生成一堆无效链接反而污染了ASM发现路径。2.4 AMSASM不是“自动管理”而是“智能仲裁”AMSAutomatic Storage Management常被误读为“Oracle版LVM”但它本质是RAC的分布式存储协调器。它的工作模式是每个节点运行一个ASM实例所有ASM实例通过集群心跳网络同步元数据变更。当节点1写入数据块时ASM实例会广播该块的最新LSNLog Sequence Number给其他节点确保缓存一致性。因此ASM磁盘组Disk Group的冗余策略NORMAL/EXTERNAL直接决定RAC的容错能力EXTERNAL冗余仅依赖底层存储如RAID10做镜像ASM不做额外拷贝。适合VMware RDM直连SANIO开销最低。NORMAL冗余ASM在磁盘组内做2路镜像即使一块磁盘故障数据仍可读写。适合独立VMDK方案但需至少3块磁盘2块数据1块投票盘。注意投票盘Voting Disk和OCROracle Cluster Registry必须放在ASM磁盘组里且该磁盘组必须是NORMAL冗余。这是RAC集群脑裂Split-Brain防护的核心——当节点间心跳中断时OCR和投票盘的多数派原则决定哪个子集群存活。若放错位置如普通文件系统集群将无法自愈。3. 核心配置与实操要点从UDEV规则到ASM磁盘组的逐层构建3.1 VMware底层存储配置独立持久化VMDK的精确手术在VMware Workstation中创建RAC共享磁盘绝非简单复制粘贴VMDK文件。以下是经过12次失败验证的精确步骤创建专用存储目录在宿主机Windows/macOS上新建文件夹C:\VMware\RAC-Shared避免路径含空格或中文VMware对Unicode路径处理不稳定。新建第一块VMDK打开VMware Workstation → “Create a New Virtual Machine” → 选择“Custom” → “Later”跳过OS安装。在“Select a Disk”步骤选择“Create a new virtual disk” → “SCSI”控制器 → 大小设为20GB投票盘最小要求→ 关键勾选“Store virtual disk as a single file”单文件模式减少碎片→ 完成后立即编辑该VMDK的.vmx文件在末尾添加disk.locking false scsi0:1.deviceType disk scsi0:1.present TRUE scsi0:1.fileName RAC-Vote.vmdk scsi0:1.mode independent-persistentdisk.locking false禁用VMware文件锁允许两个VM同时访问independent-persistent确保写入不被快照回滚。克隆剩余磁盘右键该VMDK → “Clone” → 选择“Clone to another virtual disk” → 新建RAC-Data1.vmdk50GB、RAC-Data2.vmdk50GB、RAC-OCR.vmdk10GB。克隆后必须手动修改每个克隆体的.vmdk文件头用文本编辑器打开找到# Disk DescriptorFile下方的CID字段将其值全部改为唯一随机数如12345678否则VMware会认为它们是同一磁盘的快照链拒绝共享。挂载到两个节点分别编辑Node1和Node2的.vmx文件在scsi0:段后添加scsi0:2.present TRUE scsi0:2.fileName RAC-Vote.vmdk scsi0:2.mode independent-persistent scsi0:2.deviceType disk # 重复添加scsi0:3, scsi0:4, scsi0:5对应Data1/2/OCR实测发现若未修改CID启动第二个节点时VMware会报错“Cannot open the disk ‘xxx.vmdk’ or one of the snapshot disks it depends on”且日志显示“Failed to lock the file”。这是VMware底层的磁盘一致性保护机制必须绕过。3.2 CentOS 7.4系统级准备内核参数与服务的静默加固RAC对Linux内核的要求远超普通应用。以下配置必须在/etc/sysctl.conf中硬编码并执行sysctl -p生效# 内存与网络 fs.aio-max-nr 1048576 # ASM大量异步IO所需 fs.file-max 6815744 # 文件句柄上限按节点数×20000计算 kernel.shmall 2097152 # 共享内存页总数shmax/PAGE_SIZE kernel.shmmax 8589934592 # 单个共享内存段最大值8GB按物理内存70%设 kernel.shmmni 4096 # 共享内存段总数 net.core.rmem_default 262144 # TCP接收缓冲区默认值 net.core.wmem_default 262144 # TCP发送缓冲区默认值 net.ipv4.conf.all.arp_ignore 1 # 防ARP欺骗RAC私网必需 net.ipv4.conf.all.arp_announce 2其中shmmax的计算逻辑是Oracle SGASystem Global Area最大值不能超过shmmax。假设你计划SGA为6GB则shmmax至少为6*1024*1024*10246442450944字节向上取整到8GB8589934592留出余量。若设小了sqlplus / as sysdba连接时会报ORA-27123: unable to attach to shared memory segment。服务管理方面必须禁用冲突服务# 停止并禁用NetworkManager它会劫持私网IP systemctl stop NetworkManager systemctl disable NetworkManager # 启用传统network服务 systemctl enable network # 关闭防火墙RAC端口复杂iptables易误杀心跳包 systemctl stop firewalld systemctl disable firewalld实操心得CentOS 7.4默认启用firewalld但RAC需开放数十个端口1521, 1158, 9485等且私网心跳使用UDP 12345端口。手动配置iptables规则极易遗漏最稳妥方案是彻底关闭防火墙改用VMware的虚拟交换机端口组做网络隔离。3.3 UDEV规则实战从设备扫描到符号链接的全链路验证UDEV配置分三步走缺一不可第一步确认SCSI设备属性在Node1上执行ls -l /dev/sd* # 记录输出如/dev/sda - ../devices/pci0000:00/0000:00:10.0/ata1/host0/target0:0:0/0:0:0:0/block/sda # 获取其唯一ID /sbin/scsi_id --whitelisted --replace-whitespace --device/dev/sda # 输出类似36000c292e5b8a1f3b4c5d6e7f8a9b0c1此ID即磁盘的WWNWorld Wide Name是UDEV规则的锚点。第二步编写规则文件创建/etc/udev/rules.d/99-oracle-asm.rules# 投票盘规则1块 KERNELsd*, SUBSYSTEMblock, PROGRAM/sbin/scsi_id --whitelisted --replace-whitespace --device/dev/$name, RESULT36000c292e5b8a1f3b4c5d6e7f8a9b0c1, SYMLINKasm-disk1, OWNERgrid, GROUPasmadmin, MODE0660 # 数据盘规则2块 KERNELsd*, SUBSYSTEMblock, PROGRAM/sbin/scsi_id --whitelisted --replace-whitespace --device/dev/$name, RESULT36000c29a1b2c3d4e5f6a7b8c9d0e1f2, SYMLINKasm-disk2, OWNERgrid, GROUPasmadmin, MODE0660 KERNELsd*, SUBSYSTEMblock, PROGRAM/sbin/scsi_id --whitelisted --replace-whitespace --device/dev/$name, RESULT36000c29f1e2d3c4b5a6f7e8d9c0b1a2, SYMLINKasm-disk3, OWNERgrid, GROUPasmadmin, MODE0660 # OCR盘规则1块 KERNELsd*, SUBSYSTEMblock, PROGRAM/sbin/scsi_id --whitelisted --replace-whitespace --device/dev/$name, RESULT36000c29b1c2d3e4f5a6b7c8d9e0f1a2, SYMLINKasm-disk4, OWNERgrid, GROUPasmadmin, MODE0660注意RESULT必须与scsi_id输出完全一致包括大小写和冒号位置。第三步加载并验证# 重新加载UDEV规则 udevadm control --reload-rules udevadm trigger --subsystem-matchblock # 检查符号链接是否生成 ls -l /dev/asm* # 应输出lrwxrwxrwx. 1 root root 3 Jun 10 10:00 /dev/asm-disk1 - sda # 在Node2上重复执行确保输出完全一致常见陷阱scsi_id命令在CentOS 7.4中位于/sbin/而非/usr/bin/规则中路径写错会导致PROGRAM返回空RESULT匹配失败。我踩过的坑是scsi_id输出末尾有换行符而RESULT匹配时会包含它导致匹配失败。解决方案是在PROGRAM后加| tr -d \n但更稳妥的是用RESULT36000c29...直接匹配前缀。3.4 AMS磁盘组创建AU大小与冗余策略的工程化选择ASM实例启动后创建磁盘组是RAC部署的临门一脚。关键参数不是凭经验填而是按IO特征计算AUAllocation Unit大小默认1MB但对OLTP型RAC高并发小IO应设为128KB或256KB以减少元数据开销对DW型大块顺序读写可设4MB提升吞吐。计算公式AU_size ≈ average_IO_size × 2。例如业务SQL平均读取8KB数据块则AU设16KB但ASM最小AU为1MB故选1MB。冗余策略投票盘和OCR盘必须用NORMAL数据盘可用EXTERNAL若底层RAID已提供镜像。创建命令示例-- 以grid用户登录ASM实例 sqlplus / as sysasm -- 创建OCR/VOTE磁盘组NORMAL冗余需3块磁盘 CREATE DISKGROUP OCR_VOTE NORMAL REDUNDANCY DISK /dev/asm-disk1, /dev/asm-disk4 QUORUM DISK /dev/asm-disk1 ATTRIBUTE au_size1048576, compatible.asm11.2.0.4.0; -- 创建DATA磁盘组EXTERNAL冗余 CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK /dev/asm-disk2, /dev/asm-disk3 ATTRIBUTE au_size1048576, compatible.asm11.2.0.4.0;QUORUM DISK指定投票盘compatible.asm必须与Oracle版本严格匹配否则CRS无法注册资源。实操心得创建磁盘组时若报错ORA-15018: diskgroup cannot be created90%原因是磁盘未被ASM识别。执行SELECT path, header_status FROM v$asm_disk;检查若header_status为PROVISIONED说明磁盘头为空需先用dd if/dev/zero of/dev/asm-disk1 bs1024 count100清零前100KB。这是VMware VMDK克隆后残留的旧ASM元数据导致的。4. RAC集群部署与故障排查从CRS启动到实例注册的全流程解剖4.1 Grid Infrastructure安装静默模式下的参数博弈Oracle Grid InfrastructureGI安装是RAC的“操作系统”必须在所有节点上完全一致。推荐使用静默模式Silent Mode避免GUI交互差异# 解压GI安装包后编辑响应文件grid.rsp oracle.install.optionCRS_CONFIG ORACLE_BASE/u01/app/grid INVENTORY_LOCATION/u01/app/oraInventory oracle.install.asm.OSDBAasmadmin oracle.install.asm.OSOPERasmoper oracle.install.asm.OSASMasmadmin oracle.install.crs.config.gpnp.scanNamerac-scan oracle.install.crs.config.gpnp.scanPort1521 oracle.install.crs.config.clusterNamerac-cluster oracle.install.crs.config.nodeListnode1:node1-priv,node2:node2-priv oracle.install.crs.config.networkInterfaceListeth0:192.168.1.0:1,eth1:10.10.10.0:5 # 关键指定ASM磁盘组发现路径 oracle.install.asm.diskGroup.nameOCR_VOTE oracle.install.asm.diskGroup.redundancyNORMAL oracle.install.asm.diskGroup.discoveryString/dev/asm-disk*其中networkInterfaceList格式为interface:subnet:typetype1为公网eth0type5为私网eth1。若写错CRS会绑定到错误网卡导致心跳失败。执行安装./runInstaller -silent -responseFile /path/to/grid.rsp -ignorePrereq -waitforcompletion # 安装后必须在每个节点以root执行 /u01/app/11.2.0/grid/root.shroot.sh会启动ohasdOracle High Availability Services Daemon它是CRS的根进程。若执行后ps -ef | grep ohasd无输出说明/etc/init.d/ohasd启动脚本未注册需手动执行/u01/app/11.2.0/grid/crs/install/roothas.pl。4.2 CRS状态诊断从crsctl check crs到cluvfy的纵深排查CRS启动后标准检查流程如下基础状态检查crsctl check crs # 应输出CRS-4638: Oracle High Availability Services is online crsctl check cluster -all # 检查所有节点正常返回CRS-4537: Cluster Ready Services is online若报错CRS-4639: Could not contact Oracle High Availability Services说明ohasd未运行检查/var/log/oracle-grid/ohasd.log。资源状态检查crsctl status resource -t # 查看所有资源状态重点关注 # ora.OCR_VOTE.dg磁盘组 # ora.DATA.dg数据磁盘组 # ora.registry.acfsOCR位置 # ora.asmASM实例若ora.asm状态为OFFLINE执行srvctl start asm -n node1再查tail -100 /u01/app/grid/diag/asm/asm/ASM1/trace/alert_ASM1.log。集群验证Cluvfy# 在任意节点执行预检 /u01/app/11.2.0/grid/bin/cluvfy stage -pre crsinst -n node1,node2 -verbose # 部署后验证 /u01/app/11.2.0/grid/bin/cluvfy stage -post hwos -n node1,node2 -verbosecluvfy会检测时间同步NTP、SSH信任、磁盘权限等。最常见的失败项是Time drift若节点间时间差1秒CRS拒绝启动。解决方案是配置NTP# 编辑/etc/chrony.conf添加 server 192.168.1.1 iburst # 指向内网NTP服务器 # 启动chronyd systemctl enable chronyd systemctl start chronyd4.3 Oracle Database安装与RAC注册跨节点的实例协同Database软件安装后创建RAC数据库需指定ASM磁盘组# 使用DBCA静默创建 dbca -silent -createDatabase \ -gdbName racdb \ -sid racdb \ -responseFile /path/to/dbca.rsp \ -characterSet AL32UTF8 \ -memoryPercentage 40 \ -storageType ASM \ -asmSysPassword asm_password \ -asmDiskGroupName DATA \ -asmDiskString /dev/asm-disk* \ -nodelist node1,node2 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement true关键参数-nodelist指定所有节点-asmDiskString必须与UDEV规则中的路径一致。创建完成后验证实例状态# 以oracle用户登录 srvctl status database -d racdb # 应显示两个实例均online # 检查监听器 srvctl status listener # 应显示LISTENER_SCAN1SCAN监听器和LISTENER本地监听器 # 测试SCAN连接 sqlplus system/passwordrac-scan:1521/racdb若srvctl status database显示某实例OFFLINE检查$ORACLE_HOME/rdbms/log/instance_name.log常见原因是ORACLE_SID环境变量未正确设置为racdb1/racdb2。4.4 典型故障速查表从磁盘识别失败到脑裂防护失效故障现象根本原因排查命令解决方案crsctl check cluster报错“CRS-4535: Cannot communicate with Cluster Ready Services”ohasd进程未启动或/etc/init.d/ohasd未注册ps -ef | grep ohasdcat /etc/init.d/ohasd手动执行/u01/app/11.2.0/grid/crs/install/roothas.plcrsctl status resource -t中ora.asm状态为INTERMEDIATEASM磁盘组未挂载或发现路径错误sqlplus / as sysasm | SELECT name,state FROM v$asm_diskgroup;ls -l /dev/asm*检查UDEV规则是否生效确认/dev/asm-disk*存在且权限为grid:asmadminsrvctl start database -d racdb后实例自动停止ORACLE_SID环境变量未按节点区分echo $ORACLE_SID应在node1为racdb1node2为racdb2在~oracle/.bash_profile中添加export ORACLE_SIDracdb$(hostname | cut -d- -f2)SCAN监听器无法连接tnsping rac-scan超时DNS未解析SCAN名称或SCAN IP未绑定到VIPnslookup rac-scansrvctl config scan在DNS服务器添加A记录rac-scan IN A 192.168.1.100rac-scan IN A 192.168.1.101rac-scan IN A 192.168.1.1023个SCAN IP节点重启后集群分裂只剩一个节点在线投票盘Voting Disk不可访问或OCR损坏crsctl query css votediskocrcheck检查ASM磁盘组OCR_VOTE状态若DISKGROUP为DISMOUNTED执行sqlplus / as sysasm | ALTER DISKGROUP OCR_VOTE MOUNT;个人经验最隐蔽的故障是“时间不同步”。某次客户环境cluvfy报告一切正常但CRS总在启动后5分钟自动关闭。最终发现是VMware Tools的time sync功能与NTP冲突导致节点时间在后台缓慢漂移。解决方案在VMware设置中禁用Synchronize guest time with host仅依赖chronyd。5. 生产就绪加固与运维要点让RAC不止于“能跑”更要“稳跑”5.1 日志与监控体系从adrci到自定义巡检脚本RAC的日志分散在多个位置必须建立统一收集机制Grid Infrastructure日志$GRID_HOME/log/hostname/核心文件alerthostname.logCRS告警、ohasd.logHA服务日志。ASM实例日志$GRID_HOME/diag/asm/asm/ASMnode/trace/alert_ASMnode.log。Oracle Database日志$ORACLE_HOME/diag/rdbms/dbname/instance/trace/alert_instance.log。自动化巡检脚本每日执行#!/bin/bash # rac-health-check.sh LOGFILE/tmp/rac_health_$(date %Y%m%d).log echo RAC Health Check $(date) $LOGFILE # 检查CRS状态 echo 1. CRS Status: $LOGFILE crsctl check crs 21 $LOGFILE # 检查资源状态 echo 2. Resource Status: $LOGFILE crsctl status resource -t 21 $LOGFILE # 检查ASM磁盘组 echo 3. ASM Diskgroups: $LOGFILE su - grid -c sqlplus / as sysasm EOF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT name, state, total_mb, free_mb FROM v\$asm_diskgroup; EXIT; EOF 21 $LOGFILE # 检查数据库实例 echo 4. DB Instances: $LOGFILE su - oracle -c srvctl status database -d racdb 21 $LOGFILE # 发送邮件告警若异常 if grep -q OFFLINE\|FAILED\|ERROR $LOGFILE; then mail -s RAC Health Alert admincompany.com $LOGFILE fi此脚本将关键状态汇总到日志并在发现OFFLINE等关键词时自动邮件告警。5.2 备份与恢复策略RMANASM的黄金组合RAC备份必须考虑集群特性归档日志位置必须放在ASM磁盘组如FRA而非本地文件系统否则节点切换时归档路径不可见。RMAN备份脚本#!/bin/bash export ORACLE_SIDracdb1 rman target / EOF CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET; BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG DELETE INPUT; BACKUP CURRENT CONTROLFILE FOR STANDBY; EOFPARALLELISM 2利用双节点并行备份DELETE INPUT确保归档日志不堆积。灾难恢复演练每月执行一次RESTORE CONTROLFILE FROM AUTOBACKUP验证备份有效性。关键点恢复控制文件后必须执行ALTER DATABASE MOUNT再RECOVER DATABASE最后ALTER DATABASE OPEN RESETLOGS。5.3 性能调优锚点从gc buffer busy acquire到AWR报告解读RAC性能瓶颈常出现在全局缓存Global Cache争用核心等待事件gc buffer busy acquire节点间频繁请求同一数据块需检查热点对象如索引根块。enq: TX - row lock contention跨节点事务锁冲突优化应用事务粒度。db file sequential read单块读慢检查存储IO延迟iostat -x 1。AWR报告关键页Top 5 Timed Events定位最高耗时等待事件。Instance Activity Stats关注gc cr blocks received远程一致性读块数若1000/秒说明跨节点读频繁。SQL Statistics按Buffer Gets排序找出高逻辑读SQL检查其执行计划是否走全表扫描。优化建议
返回列表