上一篇
rac物理机迁移
- 物理机
- 2025-08-07
- 5
RAC物理机迁移需提前规划,同步节点状态,备份数据;迁移时保障网络与存储连通,协调节点启停顺序;完成后校验集群功能及性能,确保业务
RAC物理机迁移全流程详解
背景与核心概念
RAC(Real Application Clusters)是Oracle提供的高可用性解决方案,通过多台服务器组成集群实现数据库服务的无缝切换,当现有物理服务器因硬件老化、容量不足或需升级至新平台时,需进行物理机迁移,此过程需确保数据完整性、服务连续性及集群一致性,涉及操作系统、数据库文件、网络配置、存储映射等多维度操作,以下是完整的迁移流程与关键要点。
迁移前准备工作
项目 | 备注 | |
---|---|---|
风险评估与规划 | 制定详细迁移方案 明确停机窗口期 评估新旧硬件兼容性 |
优先选择业务低峰期执行 |
全量备份 | 使用RMAN对集群所有节点做完整备份 包括控制文件、SPFILE、密码文件等 |
建议采用压缩备份节省空间 |
环境检查 | 新旧服务器CPU架构/内存/磁盘类型一致 操作系统版本匹配 网络带宽≥1Gbps |
异构环境可能导致性能下降 |
存储映射表 | ️ 记录原数据文件路径与目标路径对应关系 ️ 标注特殊设备(如裸设备) |
避免遗漏临时表空间/日志文件 |
网络配置同步 | 更新DNS解析记录 配置相同子网掩码/网关 校验节点间连通性 |
SCAN IP需保持一致 |
工具准备 | ️ OUI(Oracle Universal Installer) ️ SQLPlus/PLSQL Developer |
用于后续补丁安装与验证 |
迁移实施步骤
源端预处理(以Linux为例)
# 停止集群服务(按顺序操作) crsctl stop cluster -all # 导出集群状态快照 ocrconfig -exportkey /tmp/cluster_state.bak # 卸载Oracle软件包(保留数据文件) yum remove oracle-xe # 根据实际安装包名称调整 # 清理残留进程 ps -ef | grep pmon | grep -v grep | awk '{print $2}' | xargs kill -9
️ 注意:若使用ASM存储,需提前创建PDB副本;若为文件系统存储,可直接拷贝数据目录。
目标端基础环境搭建
组件 | 验证命令 | |
---|---|---|
操作系统 | 安装相同版本的Linux发行版 内核参数优化 |
uname -a |
网络配置 | 设置静态IP/主机名 修改/etc/hosts文件 |
ping <其他节点IP> |
用户权限 | 创建oracle:oinstall组 设置相同UID/GID |
id oracle |
存储挂载 | ️ 格式化新磁盘 ️ 挂载至/u01/app/oracle |
df -h |
数据迁移与重构
- 直接拷贝法(适用于小规模场景):
rsync -avz --progress /u01/app/oracle/oradata/ /mnt/newdisk/oradata/ rsync -avz --progress /u01/app/oracle/admin/ /mnt/newdisk/admin/
- ASM迁移法(推荐生产环境):
ALTER DISKGROUP old_dg MOUNT; ALTER DISKGROUP new_dg MOUNT; RMAN> CONNECT TO target; RMAN> RESYNC CATALOG; -同步恢复目录 RMAN> SWITCH FOREIGN ARCHIVELOG ALL TO '/backup/archivelog';
- 参数文件修改:
spfile.ora
:更新._lmsn
参数为新节点编号listener.ora
:修改HOSTNAME为新主机名tnsnames.ora
:更新CONNECT_DATA中的SERVICE_NAME
集群重启与验证
# 启动CSS服务 cssdstart -n <节点名> # 启动EVM服务 evmdstart -n <节点名> # 启动数据库实例 dbstart -n <实例名> -s # 验证集群状态 crsctl check crs crsctl status resource ora.<dbname>.vip -p
关键验证点:
- 所有节点状态显示ONLINE
- VIP地址自动漂移至活动节点
- 告警日志无ORA-15032(无法找到有效节点)错误
- TNS PING测试通过
典型问题及解决方案
现象 | 根本原因 | 解决方法 |
---|---|---|
ORA-15032: not a valid node | 节点列表未更新/OCR损坏 | 重新导入OCR备份 执行crsctl replace nodelist |
监听器无法注册 | SID与主机名绑定失效 | 修改$ORACLE_HOME/network/admin/listener.ora lsnrctl reload |
ASM磁盘离线 | 设备扫描顺序错误/UDEV规则冲突 | 编辑/etc/udev/rules.d/99-oracle-asm.rules udevadm trigger |
性能骤降 | NCQ禁用/队列深度不足 | 修改/sys/block/queue_depth=32 echo “queue_depth=32” > /sys/block/queue_depth |
迁移后优化建议
- 性能调优:
- 启用Huge Pages:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
→[ -z "$HUGE_PAGES" ] && hugeadm --set $(($MEMORY_SIZE/$(getconf PAGESIZE)))
- 调整SGA/PGA比例:
ALTER SYSTEM SET sga_target=4G scope=spfile;
- 启用Huge Pages:
- 监控增强:
- 部署OEM Cloud Control监控集群状态
- 配置Alert Log邮件通知机制
- 容灾扩展:
- 新增备用节点实现N+1冗余
- 配置Data Guard Broker实现异地灾备
相关问答FAQs
Q1: 迁移过程中如何最大限度缩短停机时间?
A: 可采用”滚动迁移”策略:①仅迁移非活跃节点→②逐步切换流量→③最终迁移主节点,配合Golden Gate实时增量同步技术,可将停机时间控制在5分钟内,需注意同步延迟带来的短暂不一致窗口。
Q2: 遇到ORA-15032错误如何处理?
A: 此错误表示节点未被集群认可,解决步骤:①检查OCR完整性(ocrcheck
);②确认节点已加入CRS资源池(crsctl add node <nodename>
);③核对/etc/oracle/ocr.loc
文件路径是否正确;④重启CSS服务(cssdstart -n <nodename>
),若仍无效,需重新初始化OCR(`ocrconfig