dg三种模式 oracle_oracle dg三种模式 - CSDN
精华内容
参与话题
  • 环境... 1学习配置参数 下列参数为primary 角色相关 ...*.db_name='orcl' //注意Guard Data中所有数据库DB_NAME应该一致;...*.db_unique_name='orcldg' //配置有效的db

    环境http://blog.csdn.net/sunziyue/article/details/50799648基础之上

    1学习配置参数

    下列参数为primary 角色相关

    *.db_name='orcl'            //注意Guard Data中所有数据库DB_NAME应该一致;

    *.db_unique_name='orcldg'  //配置有效的db_unique_name列表,且负责主备验证内容;

    *.log_archive_config='dg_config=(orcl,orcldg)' //同一个Guard Data中所有数据库的db_unique_name;

    *.log_archive_dest_1='location=/u01/app/oracle/archivelogvalid_for=(all_logfiles,all_roles)  db_unique_name=orcldg'    //本地归档文件路径;

    *.log_archive_dest_2='service=orcl lgwr sync affirm  valid_for=(online_logfiles,primary_role)  db_unique_name=orcl'    //远程归档文件路径,负责传输重做等;

    service:远程备库网络服务名

    lgwr或者arch:  lgwr或者arch进程传输主库的redo数据

    sync或者async: 同步或者异步传输

    affirm与noaffirm: affirm表示只有当日志写入standby重做日志后才算日志传输成功,noaffirm则没有这个要求;

    reopen:主数据库重新连接备库的时间

    net_timeout:当采用sync传输模式时,超过多少秒则表示网路超时(默认为30s),建议设置改参数;

    valid_for:定义使用log_archive_dest_n参数归档,控制主备库是否可以归档在线日志文件或者归档备用日志文件,有如下子参数:

                     online_logfile:仅归档联机日志文件

                     standby_logfile:归档备用日志文件

                     all_logfiles:归档所有日志文件

                     primary_role:在主角色起作用

                     standby_role:在备角色起作用

                     all_roles:在所有角色起作用

    compression:传送中进行压缩,

    delay:在备库延迟应用redo的时间(秒/单位)

    *.log_archive_dest_state_1=enable  //控制相关归档路径是否生效;

    *.log_archive_dest_state_2=enable  //控制相关归档路径是否生效;

    *.log_archive_max_processes=10   //归档进程数量;

    以下参数为主库转为standby 角色时相关的参数

    *.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcldg'

    *.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcldg'     //当备库和主库文件不同,彼此切换主备的时候使用该参数转换;

    *.fal_server=orcl     //用于管理归档中断,FAL(fetch archive log),响应传输归档的库;

    *.fal_client=orcldg  

    *.standby_file_management=auto//如果主库数据文件发生某些修改,是否自动同步到备库;

    2三种模式

    比较项

    最大保护

    最高可用

    最大性能

    Redo写或传输进程

    lgwr

    lgwr

    lgwr或者arch

    网络传输模式

    sync

    sync

    sync或者async

    是否落盘确认

    affirm

    affirm

    affirm或者noaffirm

    standby redologs

    需要

    需要

    可有可无

    (1)设置参数位置

    主库log_archive_dest_n参数设置

    示例:*.log_archive_dest_2='service=orcl  lgwr sync affirm

    valid_for=(online_logfiles,primary_role)  db_unique_name=orcl'

    (2)重要参数分析

    arch:只支持最大性能模式。归档日志通过primary上的arch进程传送给standby的rfs进程,保存到指定路径(如果有standby redo logfile,则保存到该位置,然后再归档),然后redo应用。

                                       
                                                                 ( 图片来自互联网)

    lgwr:primary使用LGWR即时将日志传送到standby的rfs进程,并保存到standby redo logfile中,而不再需要等到归档操作时才传送,保存到standbyredo logfile,然后再归档,然后redo应用。

    用LGWR传输大致如下:

    1)主库:只要有新的重做日志产生,lgwr进程将触发LNSn进程把新生成的日志传输给备库rfs进程。

    2)备库:rfs进程接收到日志后,将其写入standby重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等standby重做日志归档后再应用。

    3)其中,async和sync的区别在于:sync是在redo还在内存时,LNSn进程就开始传输,而async是在redo写到online redo log后,LNSn才开始传输。

    同步的实时性来看,lgwr(sync) > lgwr(async)> arch

    sync模式下,主库产生任何redo时,同时马上触发网络传输给备库RFS进程; 


    async模式下,主库产生redo时,先写到本地online redo logfile文件中,LNSn进程从online redo logfile文件中取redo数据网络传输给备库RFS进程。


    (3)模式切换

    首次performance>>availability>>protection顺序需要在主库执行且主库必须处于mount状态;

    如果已经由performance>> availability>>protection数据保护级别操作过1次,那么再次操作时可直接操作;

    protection>>availability>>performance顺序直接操作即可

    主备库操作:SQL>select database_role,protection_mode,protection_level from v$database;

    主库更改log_archive_dest_n参数配置,如:

    SQL>alter system set log_archive_dest_2='service=orcldg lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=orcldg';

    主库操作:SQL> shutdown immediate;

    备库操作:alter database recover managed standby database cancel;

    主库操作:SQL>startup mount;

    主库操作:SQL>alter database set standby database to maximize availability;

    主库操作:SQL>alter database open

    完成。

    问题

    当切换为alter database set standby database to maximize protection;之后alter database open报错

    alter database open

    *

    ERROR at line 1:

    ORA-03113: end-of-file on communication channel

    Process ID: 10711

    Session ID: 1 Serial number: 5

    解决:读alert_orcl.log,我这里是备库端监听没有启动,启动了问题就解决了。

    Fatal NI connect error 12541, connecting to:

    (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=orcldg)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcldg)(CID=(PROGRAM=oracle)(HOST=orcldg)(USER=oracle))))

      VERSION INFORMATION:

          TNS for Linux: Version 11.2.0.4.0 - Production

          TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production

      Time: 08-MAR-2016 21:14:11

      Tracing not turned on.

      Tns error struct:

        ns main err code: 12541

    TNS-12541: TNS:no listener

        ns secondary err code: 12560

        nt main err code: 511

    TNS-00511: No listener

        nt secondary err code: 111

        nt OS err code: 0

    ***********************************************************************

    3备库怎样应用redo数据

    启动实时应用://备库MRP进程直接读取standbyredo logfile应用

                               alter database recover managed standby database using current logfile disconnect from session;

    取消实时应用:alter database recover managed standby database cancel;

    延迟应用数据:

                     主库*.log_archive_dest_2='service=orcl…'参数中指定delay属性(如果备库实时应用redo数据,delay则不起作用)

                     备库配置:alter database recover managed standby database delay 10 disconnect from session;//举例

    取消延时应用数据:alter database recover managed standby database nodelay;

    备库启动遇到问题

    SQL> startup

    ORA-10458: standby database requires recovery

    ORA-01196: file 1 is inconsistent due to a failed media recovery session

    ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'

    原因是由于某些redo没有传输到备库,可能落后了很多归档文件

    处理:

    1)备库查询:SQL>select process,client_process,sequence#,status from v$managed_standby;//定位正在应用的日志文件

    select max(sequence#) from v$archived_log;

    2)主库查询:SQL> select process,client_process,sequence#,status from v$managed_standby;//查询主库当前写到的日志文件

    select max(sequence#) from v$archived_log;

    3)对比备库与主库之间的待传输应用日志文件,从主库拷贝到备库归档路径

    4)备库注册

    ALTER DATABASE REGISTER PHYSICAL LOGFILE '/u01/app/oracle/archivelog/xxx.dbf' ;

    5)备库应用redo

    alter database recover managed standby database disconnect from session;

    即可。

     

    展开全文
  • ORACLE DG概念及切换

    万次阅读 2019-01-15 16:02:46
    DG的原理: DG分为物理standy,逻辑standy 物理standy: 物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。 逻辑standy: 逻辑STANDBY则不是...

    DG的原理:

    DG分为物理standy,逻辑standy

    物理standy:

    物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。

    逻辑standy:

    逻辑STANDBY则不是这样,在逻辑STANDBY中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表。

    DG三种模式:

    最大保护模式(Maximum protection)  --性能不佳

    alter database set standby database to maximize protection;

    Primary Database上的每个事务的Redo日志必须在本地和Standby Database上都写入日志文件后才能提交,如果不能写入到Standby Database,Primary Database就会自动关闭(挂起)以防止数据丢失。

    最大可用性(Maximum Availability)

    Primary Database每个事务的Redo日志要写到本地和Standby Database中才能提交。

    这个和最大保护模式不同的是,如果写入到Standby Database失败,Primary Database不会自动关闭。这时Primary Database会自动转换为Maximum Performance模式,等待问题解决并且Standby Database再次和Primary Database同步之后,Primary Database会自动的转换为Maximum Availability。

    这种模式要求Standby Database必须配置Standby Redo log,而Primary Database必须配置为LGWR、SYNC、AFFIRM方式归档。

    最大性能(Maximum Performance)

    这个模式是缺省模式,他更加侧重对Primary Database的可用性不造成任何影响。

    Primary Database上的事务的Redo日志只要写到本地日志文件就可以提交,不必等待到Standby Database的传递完成。

    Primary Database的Redo流可以异步的发送到Standby Database。

    这种模式通过LGWR ASYNC或者ARCH实现,Standby Database也不要求使用Standby Redo Log。

    一、检查DG是否正常的四个方法

    1.看备库的告警日志,正在恢复的日志号是否对应得上

    2.看三个进程是否都已经启动

    SQL>select process from v$managed_standby

    主库中显示:

    PROCESS

    ---------

    ARCH

    ARCH

    ARCH

    ARCH

    备库中显示:ARCH、MRPO和RFS 表示正常

    3.先切换一次日志,再进到归档目录里,看两边的归档文件号是否对得上

    4.用命令查看两边归档是否对得上

    SQL> select max(sequence#) from v$archived_log where applied='YES';

    二、切换DG步骤

    关闭:先主库,后备机,开启的时候先开备库启动备库监听,再开主库

    1.先将主库切换成备库,然后将原主库启动到物理库的状态

    SQL> Alter database commit to switchover to physical standby with session shutdown;

    2.关闭主库

    SQL> shutdown immediate

    3.打开数据库nomount

    SQL> startup nomount

    4.更改主库为备库

    SQL> alter database mount standby database;

    SQL> alter database recover managed standby database disconnect from session;

    如果配置了 standby redo log 并需要启用实时同步则执行以下代码

    SQL>alter database recover managed standby database using current logfile disconnect from session;

    5.将备库切换成主库

    SQL> select switchover_status from v$database;

    SQL> select * from v$version where rownum<2;

    SQL> alter database commit to switchover to primary with session shutdown;

    如果备库还有未应用的日志则执行

    SQL>alter database recover managed standby database disconnect from session;

    SQL> shutdown immediate

    SQL> startup

    切换日志进行检查

    SQL> select max(sequence#) from v$log;

    SQL>select sequence#,applied from v$archived_log;

    SQL> alter system switch logfile;

     

    展开全文
  • oracle dg 三种模式切换

    千次阅读 2013-11-20 22:55:47
    DG在最大性能模式MAXIMUM PERFORMANCE [sql] view plaincopy SQL> select protection_mode,protection_level from v$database;    PROTECTION_MODE PROTECTION_LEVEL  -------------

    DG在最大性能模式MAXIMUM PERFORMANCE

    1. SQL> select protection_mode,protection_level from v$database;  
    2.    
    3. PROTECTION_MODE      PROTECTION_LEVEL  
    4. -------------------- --------------------  
    5. MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  
    6.    
    7. SQL> select * from tab;  
    8.    
    9. TNAME                          TABTYPE  CLUSTERID  
    10. ------------------------------ -----------------  
    11. BONUS                          TABLE  
    12. DEPT                           TABLE  
    13. EMP                            TABLE  
    14. SALGRADE                       TABLE  
    15.    
    16. SQL> create table emp001 as select *from emp;    创建了一张表emp001  
    17.    
    18. Table created.  
    19.    
    20. SQL> select * from tab;  
    21.    
    22. TNAME                          TABTYPE  CLUSTERID  
    23. ------------------------------ -----------------  
    24. BONUS                          TABLE  
    25. DEPT                           TABLE  
    26. EMP                            TABLE  
    27. EMP001                         TABLE  
    28. SALGRADE                       TABLE  

    去备机上查看,这张表并没有出现:

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. SALGRADE                       TABLE  

    1. 这个时候,我需要在主库上执行一次日志切换:  
    2. SQL> alter system switch logfile;  
    3.    
    4. System altered.  
    5.    
    6. 再备库上再次查询,表已经出来:  
    7. SQL> /  
    8.    
    9. TNAME                          TABTYPE  CLUSTERID  
    10. ------------------------------ -----------------  
    11. BONUS                          TABLE  
    12. DEPT                           TABLE  
    13. EMP                            TABLE  
    14. EMP001                         TABLE    ----在主库新创建的表  
    15. SALGRADE                       TABLE  


     

     

    DG在最大可用性模式Maximum availability

    Primary端操作

    1. 修改初始化参数  
    2. SQL> alter system set log_archive_dest_2='SERVICE=sty OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=sty';  
    3.    
    4. System altered.  
    5.    
    6. SQL> show parameter log_archive_dest_2  
    7.    
    8. NAME                                 TYPE        VALUE  
    9. ----------------------------------------------- ------------------------------  
    10. log_archive_dest_2                   string      SERVICE=sty OPTIONAL LGWR SYNC  
    11.                                                  AFFIRM VALID_FOR=(ONLINE_LOGF  
    12.                                                 ILES,PRIMARY_ROLE) DB_UNIQUE_N  
    13.                                                  AME=sty  
    14. SQL> startup mount;  
    15. ORACLE instance started.  
    16.    
    17. Total System Global Area  839282688 bytes  
    18. Fixed Size                  2217992 bytes  
    19. Variable Size             549455864 bytes  
    20. Database Buffers          285212672 bytes  
    21. Redo Buffers                2396160 bytes  
    22. Database mounted.  
    23.    
    24. SQL> alter database set standby databaseto maximize availability;  
    25.    
    26. Database altered.  


    提示:maximize后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分别对应最大保护,最高可用性及最高性能。

    Down掉数据库,重新启动

     

    1. SQL> alter database open;  
    2.    
    3. Database altered.  
    4.    
    5. 看一下当前的保护模式    --primary数据库操作  
    6. SQL> select protection_mode,protection_level from v$database;  
    7.    
    8. PROTECTION_MODE      PROTECTION_LEVEL  
    9. -------------------- --------------------  
    10. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY  
    11.    
    12. SQL>  


     

    Standby端操作

    1. SQL> alter system set log_archive_dest_2='SERVICE=pri OPTIONAL LGWR SYNCAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri';  
    2.    
    3. System altered.  
    4.    
    5. SQL> show parameter log_archive_dest_2  
    6.    
    7. NAME                                 TYPE        VALUE  
    8. ----------------------------------------------- ------------------------------  
    9. log_archive_dest_2                   string      SERVICE=pri OPTIONAL LGWR SYNC  
    10.                                                  AFFIRM VALID_FOR=(ONLINE_LOGF  
    11.                                                  ILES,PRIMARY_ROLE)DB_UNIQUE_N  
    12.                                                 AME=pri  
    13.    
    14. SQL> selectprotection_mode,protection_level from v$database;  
    15.    
    16. PROTECTION_MODE      PROTECTION_LEVEL  
    17. -------------------- --------------------  
    18. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY  
    19.    
    20. SQL>  


     

    这样就已经配置完成了。

    我们现在停掉standby数据库,再看看primary数据库状态

    1. SQL> shutdown immediate  
    2. Database closed.  
    3. Database dismounted.  
    4. ORACLE instance shut down.  
    5.    
    6. SQL> selectprotection_mode,protection_level,name from v$database;  
    7.    
    8. PROTECTION_MODE      PROTECTION_LEVEL     NAME  
    9. -------------------- ------------------------------  
    10. MAXIMUM AVAILABILITY RESYNCHRONIZATION    WOO  


    Standby数据库shutdown后,primary数据库保护级别切换为待同步。

     

    启备机器后,一会儿就好了:

    1. SQL> startup  
    2. ORACLE instance started.  
    3.    
    4. Total System Global Area  839282688 bytes  
    5. Fixed Size                  2217992 bytes  
    6. Variable Size             507512824 bytes  
    7. Database Buffers          327155712 bytes  
    8. Redo Buffers                2396160 bytes  
    9. Database mounted.  
    10. Database opened.  
    11. SQL> selectprotection_mode,protection_level,name from v$database;  
    12.    
    13. PROTECTION_MODE      PROTECTION_LEVEL     NAME  
    14. -------------------- ----------------------------------------------------------------------  
    15. MAXIMUM AVAILABILITY RESYNCHRONIZATION    WOO  
    16.    
    17. SQL> selectprotection_mode,protection_level,name from v$database;  
    18.    
    19. PROTECTION_MODE      PROTECTION_LEVEL     NAME  
    20. -------------------- ----------------------------------------------------------------------  
    21. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITYWOO  
    22.    
    23. SQL>  


    再查看下主库状态:

    1. SQL> selectprotection_mode,protection_level,name from v$database;  
    2.    
    3. PROTECTION_MODE      PROTECTION_LEVEL     NAME  
    4. -------------------- ------------------------------  
    5. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITYWOO  

    测试:

    在primary 执行创建表

      查看当前表的数量

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                        TABLE  
    9. EMP003                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  

    删除emp003表

    1. SQL> drop table emp003 purge;  
    2.    
    3. Table dropped.  

    创建emp004表

    1. SQL> create table emp004 as select *from emp001;  
    2.    
    3. Table created.  

    查看emp003表已经被删除,emp004表被创建成功。

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP004                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  


    备库上数据直接就可以过来了:

    查询到数据和第一次pry数据库一致:

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP003                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  

    在pri端删除emp003后,可以看到在sty端也随即删除。

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. SALGRADE                       TABLE  

    在pri端创建emp004后,在sty端也随即实时创建。

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------ ------- ----------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP004                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  
    13.    
    14. SQL>  

    实验二,在maximum availability 模式下关闭standby端,在主库执行DML操作后起备库,是否会有数据丢失:

    1、  关闭standby端:

    1. [root@sty ~]# shutdown -h now  
    2.    
    3. Broadcast message from root (pts/1) (TueMay 21 02:09:34 2013):  
    4.    
    5. The system is going down for system haltNOW!  
    6. [root@sty ~]#  
    7.    


    2、  查看主库这个时候的状态,已经检测到了standby失败

    1. SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;  
    2.    
    3. NAME                           OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      SWITCHOVER_STATUS  
    4. -------------------------------------------------- ---------------- -------------------- --------------------  
    5. WOO                            READ WRITE           PRIMARY          MAXIMUM AVAILABILITY FAILEDDESTINATION  
    6.    
    7. SQL>  


    3、  这个时候我们删除emp004及创建emp005

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP004                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  
    13.    
    14. SQL> drop table emp004 purge;  
    15.    
    16. Table dropped.  
    17.    
    18. SQL> create table emp005 as select *from emp001;  
    19.    
    20. Table created.  
    21.    
    22. SQL> select * from tab;  
    23.    
    24. TNAME                          TABTYPE  CLUSTERID  
    25. ------------------------------ -----------------  
    26. BONUS                          TABLE  
    27. DEPT                           TABLE  
    28. EMP                            TABLE  
    29. EMP001                         TABLE  
    30. EMP005                         TABLE  
    31. SALGRADE                       TABLE  
    32.    
    33. rows selected.  
    34.    


    4、  把sty服务器启起来,open数据库:

    打开备库后,我们可以看到,standby现在正在应用日志:

    1. SQL> select process, status fromv$managed_standby;  
    2.    
    3. PROCESS  STATUS  
    4. --------- ------------  
    5. ARCH     CLOSING  
    6. ARCH     CLOSING  
    7. ARCH     CONNECTED  
    8. ARCH     CLOSING  
    9. RFS      IDLE  
    10. RFS      IDLE  
    11. RFS      IDLE  
    12. MRP0     APPLYING_LOG  
    13.    

    过一会儿,我们再查询,发现standby 端宕机过程中primary端数据库的改变也同样通过日志更新过来了。

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------ -----------------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP005                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  


     我们通过这个实验可以看出,将DataGuard配置为Maximumavailability模式后,pri数据是实时同步到sty端。

     

     

    DG最大保护模式Maximum protection

    1、将主库修改为最大保护模式

    1. 先关闭主库  
    2. SQL>shutdown immediate  
    3. Databaseclosed.  
    4. Databasedismounted.  
    5. ORACLEinstance shut down.  
    6.  启动到mount状态  
    7. SQL>startup mount;  
    8. ORACLEinstance started.  
    9.    
    10. TotalSystem Global Area  839282688 bytes  
    11. FixedSize                  2217992 bytes  
    12. VariableSize             557844472 bytes  
    13. DatabaseBuffers          276824064 bytes  
    14. RedoBuffers                2396160 bytes  
    15. Databasemounted.  
    16.    
    17.  修改为最大保护模式  
    18. SQL>alter database set standby database to maximize protection;  
    19.    
    20. Databasealtered.  
    21.    
    22. Open数据库  
    23. SQL>alter database open;  
    24.    
    25. Databasealtered.  
    26.    

    Primary端查询状态:

    1. SQL>select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;  
    2.    
    3. NAME                           OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      SWITCHOVER_STATUS  
    4. -------------------------------------------------- ---------------- -------------------- --------------------  
    5. WOO                            READ WRITE           PRIMARY          MAXIMUM PROTECTION   TO STANDBY  


     

    Standby端查询状态(切换只需要操作主库,备库不需要动即可)

     

    1. SQL>select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;  
    2.    
    3. NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      SWITCHOVER_STATUS  
    4. ----------------------------- ---------------- -------------------- --------------------  
    5. WOO       READ ONLY WITH APPLY PHYSICAL STANDBYMAXIMUM PROTECTION   NOT ALLOWED  
    6.    

    我们现在可以看到,primary和standby端现在都为Maximumprotection 最大保护模式。

     

    实验

    先查看当前的表

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------------- ----------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP005                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  

    我们删除emp005以及创建emp006表

    1. SQL> drop table emp005 purge;  
    2.    
    3. Table dropped.  
    4.    
    5. SQL> create table emp006 as selectfrom emp001;  
    6.    
    7. Table created.  
    8.    

    我们可以看到emp005已经被删除,并且emp006表也被创建好了。

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------------- ----------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP006                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  
    13.    
    14. SQL>  


    现在看standby端,我们可以发现如下

    两边的表是一样的

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------------- ----------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP005                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  

     

    在主库端删除的emp005及新创建的emp006也实时同步过来了

    1. SQL> select * from tab;  
    2.    
    3. TNAME                          TABTYPE  CLUSTERID  
    4. ------------------------------------- ----------  
    5. BONUS                          TABLE  
    6. DEPT                           TABLE  
    7. EMP                            TABLE  
    8. EMP001                         TABLE  
    9. EMP006                         TABLE  
    10. SALGRADE                       TABLE  
    11.    
    12. rows selected.  
    13.    
    14. SQL>  

    我现在关闭sty端服务器: 

    1. [root@sty ~]# shutdown -h now  
    2.    
    3. Broadcast message from root (pts/1)(Tue May 21 03:14:28 2013):  
    4.    
    5. The system is going down for systemhalt NOW!  
    6.    


    返回来看主库的状态:

     日志传输以及终止了:

    1. Log Transport Services   Error        ORA-16198: LGWR received timedout error from KSR  
    2. Log Transport Services   Error        Error 12543 received logging on to the standby  
    3. Log Transport Services   Error        LGWR: Error 12543 attaching to RFS for reconnect  
    4. Log Transport Services   Error        Error 12543 received logging on to the standby  
    5. Log Transport Services   Error        LGWR: Error 12543 attaching to RFS for reconnect  
    6.    


     一段时间之后,primary端也宕机了:

    1. SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;  
    2.    
    3. NAME                                    OPEN_MODE           DATABASE_ROLE   PROTECTION_MODE      SWITCHOVER_STATUS  
    4. ------------------------------------------------------------ ---------------- -------------------- --------------------  
    5. WOO                                      READWRITE           PRIMARY          MAXIMUM PROTECTION   TO STANDBY  
    6.    
    7. SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;  
    8. selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database  
    9. *  
    10. ERROR at line 1:  
    11. ORA-03135: connection lost contact  
    12. Process ID: 8386  
    13. Session ID: 39 Serial number: 5  

    这个时候需要把standby端起来,primary端,数据库才能起来。

    1. SQL> startup mount;  
    2. ORACLE instance started.  
    3.    
    4. Total System Global Area  839282688 bytes  
    5. Fixed Size                  2217992 bytes  
    6. Variable Size             507512824 bytes  
    7. Database Buffers          327155712 bytes  
    8. Redo Buffers                2396160 bytes  
    9. Database mounted.  

    停止redo应用

    1. SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASECANCEL;  
    2. Database altered.  

    Open数据库

    1. SQL> alter database open;  
    2.    
    3. Database altered.  

    开启redo应用

    1. SQL> ALTER DATABASE RECOVER MANAGEDSTANDBY DATABASE DISCONNECT FROM SESSION;  
    2.   
    3. Database altered.  

    Database altered.再启主库

    1. SQL> startup  
    2. ORACLE instance started.  
    3.    
    4. Total System Global Area  839282688 bytes  
    5. Fixed Size                  2217992 bytes  
    6. Variable Size             507512824 bytes  
    7. Database Buffers          327155712 bytes  
    8. Redo Buffers                2396160 bytes  
    9. Database mounted.  
    10. Database opened.  
    展开全文
  • DG_模式切换

    2019-09-02 13:31:22
    =================================== 1 最大性能模式MAXIMUM PERFORMANCE ------默认模式 ==================================...
    ===================================
    1  最大性能模式MAXIMUM PERFORMANCE   ------默认模式
    ===================================

    一 最大性能模式特点


    192.168.1.181

    SQL> select database_role,protection_mode,protection_level from v$database;

    DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
    ---------------- -------------------- --------------------
    PRIMARY          MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE


    SQL> col dest_name for a25
    SQL> select dest_name,status from v$archive_dest_status;

    DEST_NAME                 STATUS
    ------------------------- ---------
    LOG_ARCHIVE_DEST_1        VALID
    LOG_ARCHIVE_DEST_2        VALID

    SQL> show parameter log_archive
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_config                   string      dg_config=(orcl,db01)
    log_archive_dest_1                   string      location=/home/oracle/arch_orc
                                                     l valid_for=(all_logfiles,all_
                                                     roles) db_unique_name=orcl

    log_archive_dest_2                   string      service=db_db01 LGWR ASYNC val
                                                     id_for=(online_logfiles,primar
                                                     y_roles) db_unique_name=db01

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     31
    Next log sequence to archive   33
    Current log sequence           33


    192.168.1.183
    SQL> select database_role,protection_mode,protection_level from v$database;
    DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
    ---------------- -------------------- --------------------
    PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE


    SQL> col dest_name for a25
    SQL> select dest_name,status from v$archive_dest_status;
    DEST_NAME                 STATUS
    ------------------------- ---------
    LOG_ARCHIVE_DEST_1        VALID
    LOG_ARCHIVE_DEST_2        VALID


    SQL> show parameter log_archive
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_config                   string      dg_config=(db01,orcl)
    log_archive_dest_1                   string      location=/home/oracle/arch_db0
                                                     1 valid_for=(all_logfiles,all_
                                                     roles) db_unique_name=db01

    log_archive_dest_2                   string      service=db_orcl LGWR ASYNC val
                                                     id_for=(online_logfiles,primar
                                                     y_roles) db_unique_name=orcl




    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     31
    Next log sequence to archive   33
    Current log sequence           33


    192.168.1.181

    SQL> alter system switch logfile;

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     32
    Next log sequence to archive   34
    Current log sequence           34


    192.168.1.183

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_db01
    Oldest online log sequence     32
    Next log sequence to archive   0
    Current log sequence           34



    ===================================
    2 最大性能模式--切换到--&gt最大高可用  (默认是最大性能模式---MAXIMUM PERFORMANCE)
    ===================================
    192.168.1.181
    SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;  

    DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
    ---------------- -------------------- --------------------
    PRIMARY          MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE


    SQL> show parameter log_archive_dest_2
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_2                   string      service=db_db01 LGWR ASYNC val
                                                     id_for=(online_logfiles,primar
                                                     y_roles) db_unique_name=db01



    192.168.1.181
    SQL> shutdown immediate

    192.168.1.183
    SQL> alter database recover managed standby database cancel;

    SQL> shutdown immediate

    192.168.1.181
    SQL> startup mount;
    SQL> alter database set standby database to maximize availability;
    SQL> alter system set log_archive_dest_2='service=db_db01 LGWR SYNC valid_for=(online_logfiles,primary_roles) db_unique_name=db01' scope=spfile;


    192.168.1.183

    SQL> startup nomount

    SQL> alter database mount standby database;

    SQL> alter system set log_archive_dest_2='service=db_orcl LGWR SYNC valid_for=(online_logfiles,primary_roles) db_unique_name=orcl' scope=spfile;

    SQL> shutdown immediate

    SQL> startup nomount

    SQL> alter database mount standby database;

    192.168.1.181

    SQL> startup

    SQL> col dest_name for a25

    SQL> select dest_name,status from v$archive_dest_status;

    DEST_NAME                 STATUS
    ------------------------- ---------
    LOG_ARCHIVE_DEST_1        VALID
    LOG_ARCHIVE_DEST_2        VALID



    SQL> show parameter log_archive_dest_2

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_2                   string      service=db_db01 LGWR SYNC vali
                                                     d_for=(online_logfiles,primary
                                                     _roles) db_unique_name=db01


    SQL> select database_role,protection_level,protection_mode from v$database;

    DATABASE_ROLE    PROTECTION_LEVEL     PROTECTION_MODE
    ---------------- -------------------- --------------------
    PRIMARY          MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY


    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     34
    Next log sequence to archive   36
    Current log sequence           36


    192.168.1.183

    SQL> col dest_name for a25

    SQL> select dest_name,status from v$archive_dest_status;

    DEST_NAME                 STATUS
    ------------------------- ---------
    LOG_ARCHIVE_DEST_1        VALID
    LOG_ARCHIVE_DEST_2        VALID




    SQL> show parameter log_archive_dest_2

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_2                   string      service=db_orcl LGWR SYNC vali
                                                     d_for=(online_logfiles,primary
                                                     _roles) db_unique_name=orcl


    SQL> select database_role,protection_level,protection_mode from v$database;
    DATABASE_ROLE    PROTECTION_LEVEL     PROTECTION_MODE
    ---------------- -------------------- --------------------
    PHYSICAL STANDBY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_db01
    Oldest online log sequence     35
    Next log sequence to archive   0
    Current log sequence           36

    192.168.1.181

    SQL> alter system switch logfile;

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     35
    Next log sequence to archive   37
    Current log sequence           37

    192.168.1.183

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_db01
    Oldest online log sequence     36
    Next log sequence to archive   0
    Current log sequence           37



    ===================================
    3 最大高可用--切换到--&gt最保护能模式
    ===================================

    DG最大保护模式Maximum protection


    192.168.1.181
    SQL> shutdown immediate

    192.168.1.183
    SQL> shutdown immediate

    192.168.1.181
    SQL> alter database set standby database to maximize protection;

    SQL> shutdown immediate

    192.168.1.183
    SQL> startup nomount

    SQL> alter database mount standby database;

    192.168.1.181
    SQL> startup

    SQL> col dest_name for a25

    SQL> select dest_name,status from v$archive_dest_status;

    DEST_NAME                 STATUS
    ------------------------- ---------
    LOG_ARCHIVE_DEST_1        VALID
    LOG_ARCHIVE_DEST_2        VALID

    SQL> show parameter log_archive_dest_2

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_2                   string      service=db_db01 LGWR SYNC vali
                                                     d_for=(online_logfiles,primary
                                                     _roles) db_unique_name=db01


    SQL> select database_role,protection_level,protection_mode from v$database;

    DATABASE_ROLE    PROTECTION_LEVEL     PROTECTION_MODE
    ---------------- -------------------- --------------------
    PRIMARY          MAXIMUM PROTECTION   MAXIMUM PROTECTION

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     37
    Next log sequence to archive   39
    Current log sequence           39


    192.168.1.183

    SQL> col dest_name for a25
    SQL> select dest_name,status from v$archive_dest_status;

    DEST_NAME                 STATUS
    ------------------------- ---------
    LOG_ARCHIVE_DEST_1        VALID
    LOG_ARCHIVE_DEST_2        VALID


    SQL> show parameter log_archive_dest_2

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_2                   string      service=db_db01 LGWR SYNC vali
                                                     d_for=(online_logfiles,primary
                                                     _roles) db_unique_name=db01




    SQL> select database_role,protection_level,protection_mode from v$database;

    DATABASE_ROLE    PROTECTION_LEVEL     PROTECTION_MODE
    ---------------- -------------------- --------------------
    PRIMARY          MAXIMUM PROTECTION   MAXIMUM PROTECTION

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_db01
    Oldest online log sequence     37
    Next log sequence to archive   0
    Current log sequence           39

    192.168.1.181

    SQL> alter system switch logfile;

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_orcl
    Oldest online log sequence     38
    Next log sequence to archive   40
    Current log sequence           40

    192.168.1.183

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/arch_db01
    Oldest online log sequence     37
    Next log sequence to archive   0
    Current log sequence           40



















    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29785807/viewspace-1355291/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/29785807/viewspace-1355291/

    展开全文
  • DG有下面三种模式– Maximum protection– Maximum availability– Maximum performance 在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才算事务完成...
  • OracleDG三种保护模式及切换方式

    千次阅读 2017-09-19 14:48:29
    一、三种保护方式 Required Redo Transport Attributes for Data Protection Modes Maximum Availability Maximum Performance Maximum Protection AFFIRM NOAFFIRM AFFIRM
  • Oracle之ADG与DG的区别?

    千次阅读 2019-07-20 20:07:05
    在上云后的Oracle数据灾备场景中,我们经常听到DBA迁移工程师讲到“在这个项目中用ADG进行数据实时备份,ADG比DG更好!”。究竟ADG作Oracle数据灾备的优势在什么地方? 一、ADG主要解决了DG时代读写不能并行的...
  • DG既可以同步,也可以异步。 DG三种模式: 最大保护 是同步 最大性能 是异步 最高可用 能同步就不异步,不能同步时才会异步。
  • oracle dg打开备库为读写数据库,慎重!

    千次阅读 2014-08-01 20:05:14
    --确保standby数据库置于flashback on 状态 --设置闪回恢复区 alter system set db_recovery_dest_size=2g; ...alter system set db_recovery_file_dest='+DATA';...alter database recover managed standby d
  • HA/DG/RAC 者的区别

    千次阅读 2010-08-14 16:04:00
    高可用性解决方案分为4 (DG AR RAC HA): 一oracle提供的被用方法,Standby (=9i DataGuard) 一是AR (高级复制Advanced Replication,在以前版本叫快照snapshot) 一oracle 并行...
  • oracle dataguard 传输方式(基本原理)

    千次阅读 2014-04-14 22:19:38
     那么对于oracle dataguard(简称DG)有两传输模式:async(异步)和sync(同步),在介绍这两传输模式前,说一下dg的重做传输进程架构。 在主库使用LNS进程从sga中的重做缓冲区中获得相应redo数据,然后...
  • 【RAC】ORACLE ASM提供的三种冗余方式

    千次阅读 2018-03-19 11:37:49
    ORACLE ASM提供的三种冗余方式redundancy---冗余三种模式:external、normal、high 外部、正常、高一般情况下三种模式需要的磁盘组:external 1块normal 3块high 5块1、 外部冗余(external redundancy):表示...
  • oracle DG 启动和关闭顺序

    千次阅读 2018-02-26 17:35:16
    启动顺序:先启动备库,后启动主库关闭顺序:先关闭主库,后关闭备库1、正确打开备库和主库备库:SQL&gt; STARTUP MOUNT;SQL&gt;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;...
  • Oracle DG环境如何正确地删除Archivelog

    万次阅读 2016-07-31 16:07:05
    清理归档日志最稳妥的原则: 主备库清理归档,都要配置。RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;  主库才用备份归档并清理。 备库应该是直接清理! Archivelog并不能直接得从OS层...
  • Oracle 11gR2 DG部署(RMAN方式

    千次阅读 2018-12-04 09:47:16
    Oracle DG部署(RMAN方式Oracle DG部署(RMAN方式) 1.环境介绍 2.DG部署 2.1.建立主库orcl 2.2.主库开启归档 2.3.主库添加Standby Redo Log 2.4.从主库创建pfile文件 2.5.设置主库初始化参数 2.6.设置备库...
  • oracle创建dblink访问Sqlserver数据库

    千次阅读 2018-08-08 16:15:58
    需求:通过在oracle创建dblink的方式直接访问Sqlserver数据库 操作方式:利用Oracle组件,透明网关(Transparent Gateway),建立dblink ,访问SQL SERVER 1.首先在官网上先下载个透明网关。网址(11g): htt...
  • 1 背景说明 正常情况下,我们在安装Oracle数据库的时候,都会创建一个oracle的用户。 其根目录就是/home/oracle.  并且根据Oracle 的OFA的架构,也是建议使用/u01 这样的目录来单独安装oracle的软件,包括存放数据...
  • Oracle数据库迁移的几种方式

    万次阅读 2016-08-08 22:26:38
    Oracle数据库迁移的几种方式 我们常常需要对数据进行迁移,迁移到更性能配置更高级的主机OS上、迁移到远程的机房、迁移到不同的平台下,以下介绍ORACLE的几数据库迁移方案:    一、exp/imp逻辑备份...
  • 使用DG方式来做升级和迁移,转RAC, 是很常见的方式:通常有 升级: 先搭建一个同版本同平台DG, 停源库后,在DG做本地升级, 升级后搭建GG到源库,做回滚。 转RAC: 同平台同版本转RAC, 1. 搭建一个单实例DG, 停源库后,...
  • 配置Oracle Gateway 12连接到SQL server 2014

    千次阅读 2016-01-18 16:12:51
    最近的工作中需要基于Oracle连接到SQLserver2014,我们可以通过配置Gateway的方式来实现这个功能。这个Gateway的实质是透过dblink来实现的。即把SQLserver模拟成一个远端的Oracle实例,这个实例由Gateway来负责进行...
1 2 3 4 5 ... 20
收藏数 8,781
精华内容 3,512
关键字:

dg三种模式 oracle