Oracle技术专区 收藏本版 已有123 收藏本版 发新帖

[分享] Oracle 10g physical DG 各种保护模式实验

[复制链接]
发表于 2016-3-1 09:40:33 | 显示全部楼层 |阅读模式
关于DG的安装配置就省略了,我的DG环境是Oracle 10g,不能启动到11g那种adg 的实时查询状态,
但是保护模式效果还是相同的.  

最大保护模式:
主库上设置:
SQL> alter database mount;
Database altered.
SQL> alter database set standby database to maximize protection;
Database altered.
SQL> alter database open;
Database altered.
SQL> select protection_mode from v$database;
PROTECTION_MODE                                                                 
--------------------                                                            
MAXIMUM PROTECTION                                                              
另一个session:
SQL> alter system switch logfile;
系统已更改。
SQL> create table t (id number(20));
表已创建。
SQL> insert into t values (2);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t;
        ID                                                                     
----------                                                                     
         2                                                                     
SQL> select * from t;
        ID                                                                     
----------                                                                     
         2                     
复制代码

                                               
备机上:
SQL>  select GROUP#,THREAD#,SEQUENCE#,USED,ARCHIVED,STATUS from v$standby_log;
    GROUP#    THREAD#  SEQUENCE#       USED ARC STATUS
---------- ---------- ---------- ---------- --- ----------
         4          1          0        512 NO  UNASSIGNED
         5          1          7       4608 YES ACTIVE
         6          0          0        512 YES UNASSIGNED
         7          0          0        512 YES UNASSIGNED
复制代码

无法关闭备机数据库,进备机系统禁用网卡:
SQL> shutdown immediate;
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
SQL>
复制代码
然后主机上执行insert和commit操作,发现执行commit的时候被阻塞。
但其它session可以查询:
当将备机上的网卡重新启用后,过一会不再阻塞。
所以我观察的结果是,当设置为maximize protection时,备机数据库无法关闭。当备机无法连接时,主机上的数据库事务提交被阻塞(但其它session的查询操作仍有响应),直到备机重新能够连接(此时日志应该自动同步过去)。
最大高可用配置:
主机上设置最大可用模式:
进备机系统禁用网卡:
然后主机上执行insert和commit操作,发现执行commit的时候被阻塞。
但过一会不再阻塞 :
此时再查数据库模式:
数据库模式显示是最大可用模式,但此时操作不再阻塞(实际上和最大性能模式是一样的)。
在最大可用模式下备机数据库可以关闭。
主机可以查询完整数据
但备机数据不是最新:
重新进入备机模式,待同步后查询:
此时数据已经同步。
所以在最大可用模式下,当redo到达不了备机时,数据库虽然显示模式还是最大可用模式,但实际上和最大性能模式一致。此时,和最大保护模式不一样的是,主库可以任意地进行写入提交操作,不会阻塞,而当备库可用时,这些操作会同步到备库。
最大性能模式:
主库上配置和执行:

SQL> conn / as sysDBA
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              79693392 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
Database mounted.
SQL> alter database set standby database to maximize performance;
Database altered.
SQL> select protection_mode from v$database;
PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE
SQL> alter database open;
Database altered.
SQL> select * from t;
        ID
----------
       100
      1001
       200
SQL> alter system switch logfile;
System altered.
复制代码

备机可以关闭:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
复制代码

备机进入mount和standby模式:
SQL> startup mount;
ORACLE instance started.
Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              79693392 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
Database mounted.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select GROUP#,THREAD#,SEQUENCE#,USED,ARCHIVED,STATUS from v$standby_log;
    GROUP#    THREAD#  SEQUENCE#       USED ARC STATUS
---------- ---------- ---------- ---------- --- ----------
         4          1          0        512 NO  UNASSIGNED
         5          1          0        512 NO  UNASSIGNED
         6          0          0        512 YES UNASSIGNED
         7          0          0        512 YES UNASSIGNED
复制代码

看数据是否同步:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open read only;
Database altered.
SQL> select * from t;
        ID
----------
       100
      1001
       200
复制代码

可以看到表t的数据删除操作已经得到同步。
实验完毕!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

甲骨论是什么| 甲骨论( 京ICP备12024223号 )   |

Copyright © 2016 jiagulun.   All Rights Reserved.

快速回复 返回顶部 返回列表