• 技术文章 >数据库 >mysql教程

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

    2016-06-07 17:32:53原创622

    在正常情况下,此保护模式同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

    linux

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Oracle中union/union all/Intersect/Minus用法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • MySQL学习之聊聊查询语句执行流程• hive和mysql的区别有哪些• mysql数据库的超级管理员名称是什么• mysql怎么连接数据库• mysql事务隔离级别有哪些
    1/1

    PHP中文网