加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle DG 最大保护模式、最大性能和最大高可用模式实

(2015-11-14 10:50:45)
分类: ORACLE
关于DG的安装配置就省略了,我的DG环境是Oracle 10g
最大保护模式:
主库上设置:
  1. SQL> alter database mount;
  2. Database altered.
  3. SQL> alter database set standby database to maximize protection;
  4. Database altered.
  5. SQL> alter database open;
  6. Database altered.
  7. SQL> select protection_mode from v$database;
  8. PROTECTION_MODE                                                                 
  9. --------------------                                                            
  10. MAXIMUM PROTECTION                                                              
  11. 另一个session:
  12. SQL> alter system switch logfile;
  13. 系统已更改。
  14. SQL> create table t (id number(20));
  15. 表已创建。
  16. SQL> insert into t values (2);
  17. 已创建 1 行。
  18. SQL> commit;
  19. 提交完成。
  20. SQL> select * from t;
  21.         ID                                                                      
  22. ----------                                                                      
  23.                                                                               
  24. SQL> select * from t;
  25.         ID                                                                      
  26. ----------                                                                      
  27.                              
复制代码

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

无法关闭备机数据库,进备机系统禁用网卡:
  1. SQL> shutdown immediate;
  2. ORA-01154: database busy. Open, close, mount, and dismount not allowed now
  3. SQL>
复制代码
http://attach.dataguru.cn/attachments/forum/201307/24/130735dvid4winu08wd1zd.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
然后主机上执行insert和commit操作,发现执行commit的时候被阻塞。如下图:
http://attach.dataguru.cn/attachments/forum/201307/24/1307341mkoffnsllkj0fys.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
但其它session可以查询:
http://attach.dataguru.cn/attachments/forum/201307/24/1307342uedz9qfud998u2y.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
当将备机上的网卡重新启用后,过一会不再阻塞。
http://attach.dataguru.cn/attachments/forum/201307/24/130733mgyn5rzrkidximay.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
所以我观察的结果是,当设置为maximize protection时,备机数据库无法关闭。当备机无法连接时,主机上的数据库事务提交被阻塞(但其它session的查询操作仍有响应),直到备机重新能够连接(此时日志应该自动同步过去)。
最大高可用配置:
主机上设置:
http://attach.dataguru.cn/attachments/forum/201307/24/1313432ia2mj2hdchjydyy.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
进备机系统禁用网卡:
http://attach.dataguru.cn/attachments/forum/201307/24/131113vk768es7tk77k82y.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
然后主机上执行insert和commit操作,发现执行commit的时候被阻塞。如下图:
http://attach.dataguru.cn/attachments/forum/201307/24/131112nkxcghtx1isieew3.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
但过一会不再阻塞:
http://attach.dataguru.cn/attachments/forum/201307/24/131108jwwr8r0cgl1r3zwz.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
此时再查数据库模式:
http://attach.dataguru.cn/attachments/forum/201307/24/131107sz5ax0707xz5ssiq.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
数据库模式显示是最大可用模式,但此时操作不再阻塞。

在最大可用模式下备机数据库可以关闭。

http://attach.dataguru.cn/attachments/forum/201307/24/131536teoo3egs3t36z6ce.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
主机可以查询完整数据
http://attach.dataguru.cn/attachments/forum/201307/24/131535viei3ev7fdr76ut3.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
但备机数据不是最新:
http://attach.dataguru.cn/attachments/forum/201307/24/1315345xmzhdehmxgb5vtm.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 

重新进入备机模式,待同步后查询:
http://attach.dataguru.cn/attachments/forum/201307/24/131533n95to3ftann3ro3a.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
http://attach.dataguru.cn/attachments/forum/201307/24/131533cm5m2ijcgncptm2m.jpgDG 最大保护模式、最大性能和最大高可用模式实" TITLE="Oracle DG 最大保护模式、最大性能和最大高可用模式实" /> 
此时数据已经同步。
所以在最大可用模式下,当redo到达不了备机时,数据库虽然显示模式还是最大可用模式,但实际上和最大性能模式一致。此时,和最大保护模式不一样的是,主库可以任意地进行写入提交操作,不会阻塞,而当备库可用时,这些操作会同步到备库。
最大性能模式:
主库上配置和执行:
  1. SQL> conn / as sysdba
  2. Connected to an idle instance.
  3. SQL> startup mount;
  4. ORACLE instance started.
  5. Total System Global Area  285212672 bytes
  6. Fixed Size                  1218992 bytes
  7. Variable Size              79693392 bytes
  8. Database Buffers          201326592 bytes
  9. Redo Buffers                2973696 bytes
  10. Database mounted.
  11. SQL> alter database set standby database to maximize performance;
  12. Database altered.
  13. SQL> select protection_mode from v$database;
  14. PROTECTION_MODE
  15. --------------------
  16. MAXIMUM PERFORMANCE
  17. SQL> alter database open;
  18. Database altered.
  19. SQL> select * from t;
  20.         ID
  21. ----------
  22.        100
  23.       1001
  24.        200
  25. SQL> alter system switch logfile;
  26. System altered.
复制代码

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

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

看数据是否同步:
  1. SQL> alter database open read only;
  2. alter database open read only
  3. *
  4. ERROR at line 1:
  5. ORA-01154: database busy. Open, close, mount, and dismount not allowed now
  6. SQL> alter database recover managed standby database cancel;
  7. Database altered.
  8. SQL> alter database open read only;
  9. Database altered.
  10. SQL> select * from t;
  11.         ID
  12. ----------
  13.        100
  14.       1001
  15.        200
复制代码

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

转载:http://www.dataguru.cn/forum.php?mod=viewthread&tid=158544

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有