您好,欢迎访问一九零五行业门户网

Oracle 11g DataGuard保护模式设置详解

在正常情况下,此保护模式同maximum protection,需要恢复此事务的所有redo 数据都同步写到主库online redo file 和备库的standby
先说说dg的三种保护模式
maximum protection:
最大保护模式,不允许数据丢失,所有事务必须完成主备库的日志写后才能提交,如果主备库之间网络异常,将会严重影响主库性能。
maximum performance:
此为dg的默认模式,此模式保证主库以最大性能运行,允许事务在完成本地日志写成功后主库立即提交,而不需等待redo数据写到备库,事务产生的redo 数据异步的传输到备库,此模式在主库发生故障时,备库可能有少量数据丢失,对主库性能影响最小。
maximum availability:
在正常情况下,此保护模式同maximum protection,需要恢复此事务的所有redo 数据都同步写到主库online redo file 和备库的standby redo log中,事务才能成功提交,当主库不能将redo数据同步写到主库和备库,此保护模式自动变成同maximum performance模式运行,不会导致主库不可用,而当异常处理完成,其又恢复到同maximum protection模式
大家可以根据实际情况和需求采用不同的模式,各种保护模式的设置非常简单,但是有些地方还是需要了解清楚。
各保护模式与log_archive_dest_n 参数日志传输属性对应表maximum availability maximum performance maximum protection affirm noaffirm affirm sync async sync db_unique_name db_unique_name db_unique_name 如何确认dg处于何种保护模式
select protection_mode from v$database;
设置maximum avalilability 模式:
sql> alter database set standby database to maximize availability;
database altered.
sql> select name,protection_mode,protection_level,database_role ,db_unique_name from v$database;
name      protection_mode      protection_level    database_role    db_unique_name
--------- -------------------- -------------------- ---------------- ------------------------------
ogg      maximum availability resynchronization    primary        ogg
设置maximum performance 模式:
sql> alter database set standby database to maximize performance;
database altered.
sql> select name,protection_mode,protection_level,database_role ,db_unique_name from v$database;
name      protection_mode      protection_level    database_role    db_unique_name
--------- -------------------- -------------------- ---------------- ------------------------------
ogg      maximum performance  maximum performance  primary        ogg
以上两种模式在设置没有特别条件限制,,可以自由从一种模式转换过来,也不需关注log_archive_dest_n的参数设置。
maximum protection 有限制,下面进行测试:
由maximum avalilability模式设置为maximum protection
条件maximum avalilability + log_archive_dest_n async
sql> alter database set standby database to maximize availability;
database altered.
sql> show parameter log_archive_dest_2
name                    type    value
------------------------------------ ----------- ------------------------------
log_archive_dest_2      string    service=tgg lgwr async valid_f
                                  or=(online_logfiles,primary_ro
                                  le) db_unique_name=tgg
sql> select protection_mode from v$database;
protection_mode
--------------------
maximum availability
sql> alter database set standby database to maximize protection;
database altered.
sql> alter database open;
alter database open
*
error at line 1:
ora-03113: end-of-file on communication channel
process id: 4876
session id: 1 serial number: 5
此时主库实例直接down掉,查看alert log 数据库已经改成maximum protection模式,但是因为lag_archive_dest_2 参数中使用的是异步传输 async,这个在最大保护模式下是不允许的,所以oracle 为了保护数据不丢失,将实例直接关闭。
更多详情见请继续阅读下一页的精彩内容:
推荐阅读:
使用rman的duplicate功能创建物理dataguard
oracle基础教程之通过rman复制数据库
rman备份策略制定参考内容
rman备份学习笔记
oracle数据库备份加密 rman加密
通过rman备份duplicate创建dataguard
其它类似信息

推荐信息