oracle dg切换

服务器属性         ip主机名db_namedb_unique_nameserver_name
主库192.168.6.30enmotech1orcl

orcl

orcl
备库192.168.6.31enmotech2orclorcldgorcldg
1.DG三种模式
1.1.最大性能模式max performance-默认
这种保护模式(默认)提供了可能的最高级别的数据保护,而不影响主数据库的性能。这是通过允许事务
在恢复该事务所需重做数据在写到本地联机重做日志后立即提交而实现的。主数据库的重做数据流也写到
至少一个备数据库,但是那个重做流相对于创建重做数据的事务是异步写的。当所用的网络连接有足够的
带宽,这种模式提供了近似于最大可用性模式的数据保护级别,并且对主数据库性能的影响最小。

1.2.最大可用性模式max availability
这种保护模式提供了可能的最高级别的数据保护,而不用与主数据库的可用性相折中。与最大保护模式相
同,在恢复事务所需的重做写到本地联机重做日志和至少一个事务一致性备数据库上的备重做日志之前,
事务将不会提交。与最大保护模式不同的是,如果故障导致主数据库无法写重做流到异地备重做日志时,
主数据库不会关闭。替代地,主数据库以最大性能模式运行直到故障消除,并且解决所有重做日志文件中
的中断。当所有中断解决之后,主数据库自动继续以最大可用性模式运行。
这种模式确保如果主数据库故障,但是只有当第二次故障没有阻止完整的重做数据集从主数据库发送到至
少一个备数据库时,不发生数据丢失。

1.3.最大保护模式max protection
这种保护模式确保如果主数据库故障不会发生数据丢失。要提供这种级别的保护,恢复每个事务所需的重
做数据必须在事务提交之前同时写到本地联机重做日志和至少一个备数据库上的备重做日志。要确保不发
生数据丢失,如果故障导致主数据库无法写重做流到至少一个事务一致性备数据库的备重做日志时,主数
据库会关闭。

1.4.查询当前模式
SYS@orcl> select protection_mode,protection_level from v$database;

2.DG切换测试
2.1 DG switchover 切换测试
enmotech1:主库--------->备库
enmotech2:备库--------->主库

2.2主备库角色状态查询
主备库角色状态查询
enmotech1主库:
set linesize 120;
set pagesize 999;
col SWITCHOVER_STATUS for a30;
col  DATABASE_ROLE for a30;
col OPEN_MODE for a30;
select switchover_status,database_role,open_mode from v$database;

SWITCHOVER_STATUS	       DATABASE_ROLE		      OPEN_MODE
------------------------------ ------------------------------ ------------------------------
SESSIONS ACTIVE 	       PRIMARY			      READ WRITE
enmotech2备库:
set linesize 120;
set pagesize 999;
col SWITCHOVER_STATUS for a30;
col  DATABASE_ROLE for a30;
col OPEN_MODE for a30;
SYS@orcl> select switchover_status,database_role,open_mode from v$database;

SWITCHOVER_STATUS	       DATABASE_ROLE		      OPEN_MODE
------------------------------ ------------------------------ ------------------------------
NOT ALLOWED		           PHYSICAL STANDBY 	      READ ONLY WITH APPLY

enmotech1显示:TO STANDBY/PRIMARY,如果显示SESSION ACTIVE表示还有活动的会话,需要关闭会话再检查
enmotech2显示:NOT ALLOWED/PHYSICAL STANDBY

2.3主库切到备库(enmotech1操作)
SYS@orcl> alter database commit to switchover to physical standby;
SYS@orcl> alter database commit to switchover to physical standby with session shutdown;
--如果状态显示SESSION ACTIVE,在切换的时候可以指定with session shutdown 子句强制关闭活动的会话。
SYS@orcl> shutdown immediate
SYS@orcl> startup mount

2.4备库切换到主库(enmotech2操作)
SYS@orcl> alter database commit to switchover to primary;
SYS@orcl> alter database open;

2.5新备库(enmotech1操作)执行APPLY LOG命令
--启用mount状态下的APPLY LOG
SYS@orcl> alter database recover managed standby database disconnect from session;
--启用open状态(READ ONLY WITH APPLY)下的APPLY LOG
SYS@orcl> alter database recover managed standby database cancel;
SYS@orcl> alter database open;
SYS@orcl> alter database recover managed standby database disconnect from session;
SYS@orcl> select switchover_status,database_role,open_mode from v$database;

2.5对换主备库的ip,并修改主备库的host文件,重启监听
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.30 enmotech1 oracle
192.168.6.31 enmotech2 oracle

3.1.DG failover 切换测试
enmotech1:主库------>崩溃
enmotech2:备库------>主库

3.2
主备库角色状态查询
SYS@orcl> select switchover_status,database_role,open_mode from v$database;

3.2.1主库(enmotech1)通过shutdown abort方式人工模拟主库崩溃,直接关闭
SYS@orcl> select open_mode from v$database;
SYS@orcl> shutdown abort
SYS@orcl> startup mount
SYS@orcl> alter system flush redo to 'orcldg';

3.2.2备库(enmotech2)执行如下操作切换为主库
SYS@orcl> select thread#, low_sequence#, high_sequence# from v$archive_gap;
--如果没有发现明显的gap现象,说明此次的failover不会有数据损失情况。在备库,要进行关闭apply和结束应用动作。
SYS@orcl> alter database recover managed standby database cancel;
SYS@orcl> alter database recover managed standby database finish;
SYS@orcl> alter database commit to switchover to primary;
SYS@orcl> alter database open;
SYS@orcl> select open_mode, switchover_status from v$database;

4.DG failover后重建DG
enmotech1:崩溃------>备库
enmotech2:主库------>主库(保持主库状态不变)

4.1.新主库(enmotech2)角色状态查询
SYS@orcl> select switchover_status,database_role,open_mode from v$database;

4.2新主库(enmotech2)创建备库控制文件
mkdir -p /u01/bak/
SYS@orcl> alter database create standby controlfile as '/u01/bak/control01.ctl';

4.3将备库控制文件拷贝至db11
scp ezdb12:/u01/bak/control01.ctl /u01/app/oracle/oradata/orcl/control01.ctl
cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/
mv /u01/app/oracle/fast_recovery_area/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl

4.4恢复对应数据文件至db11,并启动enmotech1到mount状态,应用APPLY模式
SYS@orcl> startup mount;
SYS@orcl> alter database recover managed standby database disconnect from session;

4.5启动enmotech1至OPEN状态,并应用APPLY REDO模式
SYS@orcl> alter database recover managed standby database cancel;
SYS@orcl> alter database open;
SYS@orcl> alter database recover managed standby database disconnect from session;

5.开启和关闭DataGuard的流程
5.1.关闭
关闭主库
SYS@orcl> shutdown immediate

5.2关闭主库监听
lsnrctl stop

5.3查询备库是否正在执行重做应用或实时应用。如果MRP0或MRP进程存在,则备库正在应用重做。
SYS@orcl> select process, status from v$managed_standby;

5.4如果重做应用程序正在运行,停止备库的Redo日志的应用
SYS@orcl> alter database recover managed standby database cancel;

5.5关闭备库
SYS@orcl> shutdown immediate

5.6关闭备库监听
lsnrctl stop

6.1.开启
启动备库监听
lsnrctl start

6.2启动备库到mount状态
SYS@orcl> startup mount;

6.3开启备库的Redo日志应用
SYS@orcl> alter database recover managed standby database using current logfile disconnect from session;

6.4启动主库监听
lsnrctl start

6.5启动主库
SYS@orcl> startup;

6.6检查日志情况的SQL语句
select al.thrd "Thread", almax "Last Seq Received", lhmax "Last Seq Applied"
 from (select thread# thrd, max(sequence#) almax
       from v$archived_log
       where resetlogs_change#=(select resetlogs_change# from v$database)
       group by thread#) al,
      (select thread# thrd, max(sequence#) lhmax
       from v$log_history
       where first_time=(select max(first_time) from v$log_history)
       group by thread#) lh
 where al.thrd = lh.thrd;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹蜻蜓vYv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值