ITPub博客

10G DG最大可用模式下备库发生故障时主库保护级别的变化

原创 Linux操作系统 作者:yiyu_66 时间:2007-12-25 09:38:18 0 删除 编辑
实验分析:10G DG最大可用模式下备库发生故障时主库保护级别的变化

本文主要讨论在10G DG的最大可用保护级别下,如果备库发生故障,主库如何应对。


DG处于最大可用保护模式下,只有一个备库。


1、查看原来主库的保护模式
SQL> SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

2、在备库中停掉网卡
[root@standby ~]# ifdown eth0

3、此时在主库上执行

SQL> CREATE TABLE T(ID INT);
--这个会停顿180秒(默认值)才能完成建表
Table created.

4、查看此时后台的alert信息
Sun Jun 24 22:37:06 2007
ORA-16198: LGWR received timedout error from KSR
LGWR: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (16198)
LGWR: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned
Sun Jun 24 22:37:06 2007
Errors in file /u01/oracle/admin/primary/bdump/primary_lgwr_3822.trc:
ORA-16198: Timeout incurred on internal channel during remote archival
LGWR: Network asynch I/O wait error 16198 log 1 service 'standby'
Sun Jun 24 22:37:06 2007
Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED
LGWR: Failed to archive log 1 thread 1 sequence 19 (16198)
Sun Jun 24 22:37:06 2007
LGWR: Closing remote archive destination LOG_ARCHIVE_DEST_2: 'standby' (error 16198)
(primary)

可以看到,主库在尝试连接备库失败后,会放弃传送日志到备库。

5、此时查看DG的保护模式
SQL> SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION

可以看到,DG仍然处于最大可用保护模式下,但PROTECTION_LEVEL已经变为RESYNCHRONIZATION。
当然,主库隔一段时间就会重试连接备库,如果网络修复后,DG的PROTECTION_LEVEL会重新成为MAXIMUM AVAILABILITY。

6、此时启用备库的网卡
    service network restart

7、查看主库的alert日志
隔一段时间后,可以在alert中看到如下信息:
Sun Jun 24 22:57:32 2007
Thread 1 advanced to log sequence 22
  Current log# 1 seq# 22 mem# 0: /u01/oracle/oradata/primary/redo01.log
LNSb started with pid=18, OS id=3904
Sun Jun 24 23:00:35 2007
LGWR: Standby redo logfile selected to archive thread 1 sequence 23
LGWR: Standby redo logfile selected for thread 1 sequence 23 for destination LOG_ARCHIVE_DEST_2
Thread 1 advanced to log sequence 23
  Current log# 2 seq# 23 mem# 0: /u01/oracle/oradata/primary/redo02.log
Sun Jun 24 23:00:35 2007
ARC3: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2
ARC3: Standby redo logfile selected for thread 1 sequence 22 for destination LOG_ARCHIVE_DEST_2
Sun Jun 24 23:01:26 2007
Thread 1 cannot allocate new log, sequence 24
Checkpoint not complete
  Current log# 2 seq# 23 mem# 0: /u01/oracle/oradata/primary/redo02.log
Sun Jun 24 23:01:30 2007
Destination LOG_ARCHIVE_DEST_2 is SYNCHRONIZED
LGWR: Standby redo logfile selected to archive thread 1 sequence 24
LGWR: Standby redo logfile selected for thread 1 sequence 24 for destination LOG_ARCHIVE_DEST_2
Thread 1 advanced to log sequence 24
  Current log# 3 seq# 24 mem# 0: /u01/oracle/oradata/primary/redo03.log   

8、再次查询主库的保护模式
SQL> SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

可以看到,主库的PROTECTION_LEVEL会重新成为MAXIMUM AVAILABILITY。

至此,可以得到结论:
在最大保护模式下,如果备库出现故障,主库会自动降低保护级别,以使得主库的操作能继续执行,但是主库会有一小段时间的停顿
 
原文出处:http://www.uknet.cn/viewthread.php?tid=621

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/81912/viewspace-1274/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-11

  • 博文量
    12
  • 访问量
    52776