ORACLE 11G DATAGUARD保护模式设置详解(三)

2014-11-24 16:43:42 · 作者: · 浏览: 8
e Size 314575124 bytes
Database Buffers 201326592 bytes
Redo Buffers 5840896 bytes
Database mounted.
SQL> alter database set standby database to maximize PROTECTION;
Database altered.
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;
PROTECTION_MODE
--------------------
MAXIMUM PROTECTION
SQL> alter database open;
Database altered.
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;
PROTECTION_MODE
--------------------
MAXIMUM PROTECTION
在mount 状态从Maximum Performance 设置为Maximum Protection 成功
另外一种特殊情况,当主库在Maximum Availability模式的情况,ORACLE说在异常情况下,Maximum Availability模式
会自动变为Maximum Performance 模式,那么是否在这个情况下,能直接设置为Maximum Protection模式呢
在备库将网卡DOWN掉,模拟主备之间网络故障
[root@rac2 ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 08:00:27:09:6F:27
inet addr:192.168.2.201 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe09:6f27/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11747 errors:0 dropped:0 overruns:0 frame:0
TX packets:9657 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11586163 (11.0 MiB) TX bytes:991538 (968.2 KiB)
Base address:0xd240 Memory:f0820000-f0840000
[root@rac2 ~]# ifdown eth1
[root@rac2 ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 08:00:27:09:6F:27
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:11547 errors:0 dropped:0 overruns:0 frame:0
TX packets:9626 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11573787 (11.0 MiB) TX bytes:984117 (961.0 KiB)
Base address:0xd240 Memory:f0820000-f0840000
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;
PROTECTION_MODE
--------------------
MAXIMUM AVAILABILITY
SQL> insert into xhl select * from dba_users where rownum=1;
1 row created.
SQL> commit;
Commit complete.
查看V$DATAGUARD_STATUS,可以看到此时主库连接备库错误
SQL> select * from (SELECT message FROM V$DATAGUARD_STATUS order by MESSAGE_NUM desc ) where rownum =1;
MESSAGE
------------------------------------------------------------------------------------------------------
PING[ARC3]: Heartbeat failed to connect to standby 'tgg'. Error is 12543.
这个时候Maximum Availability 模式应该降为Maximum Performance 模式
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;
PROTECTION_MODE
--------------------
MAXIMUM AVAILABILITY
数据库中查询结果显示没有改变,但是在LGWR TRACE file 里面发现这样一段日志,模式已经发生转变
*** 2013-10-29 14:58:04.161 2689 krsl.c
No standby database destinations have been configured
as being archived by the LGWR process
This instance will operate at a reduced protection mode until
network connectivity to the standby databases is restored and
all archivelog gaps have been resolved.
既然保护模式已经降级 ,那么根据上面的测试,此时如果要在数据库OPEN状态下更改为Maximum Protection模式
是不可能的,现在验证一把
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;
PROTECTION_MODE
--------------------
MAXIMUM AVAILABILITY
SQL> alter database set standby database to maximize PROTECTION;
alter database set standby database to maximize PROTECTION
*
ERROR at line 1