背景
随着业务的不断增涨,至使现有的单节点DG环境的连接已经无法满足当前业务需求,并且随着业务的重要性,同时也要求数据库的高可用性,减少数据库故障对业务的影响。于是规划迁移方案。
- 迁移方案如下:
因PRIMARY库本地磁盘空间已达到80%决定弃用,搭建高可用2个节点的RAC做为PRIMARY,重新部署一套Standby(磁盘空间配置高)。
搭建DG-Rac
- Failover前架构
- 搭建步骤-下载:Standby-RAC.pdf
DG-主备备调整
- 调整为主备备架构
1、Primary 断开与 Standby 连接
- 将Standby 在参数LOG_ARCHIVE_CONFIG 移除
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,standby_rac)' scope=both;
复制
- 禁用log_archive_dest_state_2 参数
alter system set log_archive_dest_state_2='defer' scope=both;
复制
- 设置为log_archive_dest_2 空串
alter system set log_archive_dest_2='' scope=both;
复制
2、Standby-Rac 各节点创建TNS
- 创建tns
standby = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.5.100)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = standby) ) )
复制
- 测试连接性
[oracle@dbrac admin]$ tnsping standby TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 08-AUG-2024 11:39:29 Copyright (c) 1997, 2011, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.5.100)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = standby))) OK (10 msec)
复制
3、Standby-Rac 调整
3.1 关闭集群
[grid@dbrac ~]$ srvctl stop database -d twodb
复制
3.2 单节点操作
- 启库到mount
SQL> startup mount;
复制
- 调整参数
-- 主、备RAC、备库的DB_UNIQUE_NAME 全部填写
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby_rac,standby)' scope=both;
-- 设置参数:log_archive_dest_2 往 standby 传输归档日志
alter system set log_archive_dest_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';
-- 启用参数:log_archive_dest_state_2
alter system set log_archive_dest_state_2='enable';
复制
- 注参数定义,否则归档传输有问题
VALID_FOR属性由2部分组成:
- archive_source(online_logfile,standby_logfile,all_logfiles)
online_logfile: 表示归档联机重做日志
standby_logfile:表示归档备用数据库的重做日志/接受来自主库的重做日志
all_logfiles: online_logfile && standby_logfile - database_role(primary_role,standby_role,all_role)
primary_role: 仅当数据库角色为主库时候生效
standby_role: 仅当数据库角色为备库时候生效
all_role: 任意角色均生效
4、Standby 调整
- 创建tns
standby_rac = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.5.101)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = standby_rac) ) )
复制
- 参数调整
-- 仅设置:standby_rac,standby alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(standby_rac,standby)' scope=both; -- REDO文件对应 alter system set LOG_FILE_NAME_CONVERT='+REDO1/twodb','/u01/oradata/twodb','+REDO2/twodb/datafile','/u01/oradata/twodb' scope=spfile; -- 数据文件对应 alter system set DB_FILE_NAME_CONVERT ='+DATA/multiple','/u01/oradata/twodb','+DATA/multiple/datafile','/u01/oradata/twodb' scope=spfile; -- 增加thread 2 standby redo alter system set STANDBY_FILE_MANAGEMENT=MANUAL; alter database add standby logfile thread 2 group 201 ('/u01/oradata/twodb/standby_201.log') size 500M, group 202 ('/u01/oradata/twodb/standby_202.log') size 500M, group 203 ('/u01/oradata/twodb/standby_203.log') size 500M, group 204 ('/u01/oradata/twodb/standby_204.log') size 500M, group 205 ('/u01/oradata/twodb/standby_205.log') size 500M, group 206 ('/u01/oradata/twodb/standby_206.log') size 500M, group 207 ('/u01/oradata/twodb/standby_207.log') size 500M, group 208 ('/u01/oradata/twodb/standby_208.log') size 500M, group 209 ('/u01/oradata/twodb/standby_209.log') size 500M, group 210 ('/u01/oradata/twodb/standby_210.log') size 500M, group 211 ('/u01/oradata/twodb/standby_211.log') size 500M; alter system set STANDBY_FILE_MANAGEMENT=auto; -- fal_server alter system set fal_server='standby_rac' scope=both; -- 关库 shutdown immediate;
复制
5、启动集群
- 集群启库
[grid@dbrac ~]$ srvctl start database -d twodb
复制
- 启动应用进程,查看同步情况
– 注:standby 会延迟1个归档日志,RAC切主后就可以实时了
alter database recover managed standby database using current logfile disconnect from session; set line 800 col NAME for a10 col VALUE for a20 select * from v$dataguard_stats where name='apply lag';
复制
DG-Failover操作
- 弃用原主,将备RAC升级为主,保留主备模式
1、Primary 查看用户连接
- 停应用,保证无用户连接方可操作
select username,count(*) from v$session group by username;
复制
- 切归档,并关闭
alter system switch logfile; shutdown immediate;
复制
2、Standby-Rac 查看同步状态
set line 800 col NAME for a10 col VALUE for a20 select * from v$dataguard_stats where name='apply lag';
复制
3、Failover 切库
注:Failover 操作后并不会破坏它下面的备库关系,断开的原主无法再挂回到Standby-RAC 当备库(SWITCHOVER可避免)
- 集群关库:
[grid@dbrac1 ~]$ srvctl stop database -d twodb
复制
- 启单节点:Failover
startup mount; alter database recover managed standby database finish force; alter database commit to switchover to primary; alter database open; shutdown immediate;
复制
- 集群启库:
[grid@dbrac1 ~]$ srvctl start database -d twodb
复制
4、Standby 同步状态
set line 800 col NAME for a10 col VALUE for a20 select * from v$dataguard_stats where name='apply lag';
复制
总结
- 操作很熟悉,但是还要注意细节,尤其参数很容易调做乱;
- 数据库在操作前一定要确定应用无连接,否则数据错乱就是大锅;
- 能SWITCHOVER操作尽量SWITCHOVER操作,避免重复搭建备库;
- 此次记录Failover,是因为原主库计划弃用,并且切换要求时间卡的很紧,尽量减少操作时间;
- 另注:我们Failover切换前1小时突然收到了alert日志疯狂报:《direct connection failure with ASM》,最后排查幸亏是虚惊一场,但也是因为操作前准备细节不到位导致的,分享给大家供大家参考。
欢迎赞赏支持或留言指正
最后修改时间:2024-08-20 17:23:59
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1411次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
861次阅读
2025-03-17 11:33:53
RAC 19C 删除+新增节点
gh
533次阅读
2025-03-14 15:44:18
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
490次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
393次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
356次阅读
2025-03-26 23:27:33
墨天轮个人数说知识点合集
JiekeXu
291次阅读
2025-04-01 15:56:03
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
264次阅读
2025-03-19 14:41:51
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
263次阅读
2025-04-08 09:12:48
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
261次阅读
2025-03-24 09:42:53