dg切换 oracle_oracle dg切换 - CSDN
精华内容
参与话题
  • 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.  
    展开全文
  • oracle dg切换操作示例

    2019-09-03 08:04:46
    背景:应对发生灾难、故障和其他割接场合进行的灾备演练,包括主备切换和主机意外宕机。 一、主备切换( switch over ) ...

      背景:应对发生灾难、故障和其他割接场合进行的灾备演练,包括主备切换和主机意外宕机。

      一、主备切换( switch over

      #################

    #  primary 操作

    #################

    1 )确认主机打开方式

    SQL> select DATABASE_ROLE,PROTECTION_MODE,open_mode from v$database; 

    2 )切换到备机模式

    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

     

    ###############

    #  standby 操作

    ###############

    1 )取消备机日志应用

    SQL> alter database recover managed standby database cancel;

    2 )切换到主机模式

    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

    3 )重启备库

    SQL> SHUTDOWN IMMEDIATE;

    SQL> STARTUP;

      ###############

    #  primary 操作

    ###############

    1 )重启主库

    SQL> SHUTDOWN IMMEDIATE;

    SQL> STARTUP MOUNT;

    2 )调整为“ READ ONLY ”状态

    SQL> alter database open;

    3 )应用日志

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

    4 )确认 open_mode 为“ READ ONLY WITH APPLY

    SQL> select open_mode from v$database;

     

    #############

    #  test 测试

    #############

    在原备机上插入数据,测试原主机是否收到。

     

     

    二、主库宕机( failover

     

    ###############

    #  primary 操作

    ###############

    $ ps –ef | grep pmon

    $ kill -9 {pid_pmon}

     

    ###############

    #  standby 操作

    ###############

    1. 取消 standby 日志应用

    standby SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

    standby SQL> alter database recover managed standby database finish;

    ※如果没有应用standby redolog,此处使用下面的命令:

    standby SQL> alter database recover managed standby database finish skip standby logfile;

    2 )重启 db mount 状态

    standby SQL> shutdown immediate;

    standby SQL> startup mount; 

    3 )切换到主机模式

    standby SQL> alter database commit to switchover to primary;

    standby SQL> alter database open;

     

    #############

    #  test 测试

    #############

    测试原备机是否可以连接使用,并统计丢失数据。

     

    如果是Oracle rac,在进行切换操作时,需要关闭一个节点即可,方法是一样的

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

    转载于:http://blog.itpub.net/29371470/viewspace-2286738/

    展开全文
  • oracle dg切换

    2020-06-23 00:04:01
    服务器属性 ip 主机名 db_name db_unique_name server_name 主库 192.168.6.30 enmotech1 ...1.DG三种模式 1.1.最大性能模式max performance-默认 这种保护模式(默认)提供了可能...
    服务器属性          ip 主机名 db_name db_unique_name server_name
    主库 192.168.6.30 enmotech1 orcl

    orcl

    orcl
    备库 192.168.6.31 enmotech2 orcl orcldg orcldg
    1.DG三种模式
    1.1.最大性能模式max performance-默认
    这种保护模式(默认)提供了可能的最高级别的数据保护,而不影响主数据库的性能。这是通过允许事务
    在恢复该事务所需重做数据在写到本地联机重做日志后立即提交而实现的。主数据库的重做数据流也写到
    至少一个备数据库,但是那个重做流相对于创建重做数据的事务是异步写的。当所用的网络连接有足够的
    带宽,这种模式提供了近似于最大可用性模式的数据保护级别,并且对主数据库性能的影响最小。
    
    1.2.最大可用性模式max availability
    这种保护模式提供了可能的最高级别的数据保护,而不用与主数据库的可用性相折中。与最大保护模式相
    同,在恢复事务所需的重做写到本地联机重做日志和至少一个事务一致性备数据库上的备重做日志之前,
    事务将不会提交。与最大保护模式不同的是,如果故障导致主数据库无法写重做流到异地备重做日志时,
    主数据库不会关闭。替代地,主数据库以最大性能模式运行直到故障消除,并且解决所有重做日志文件中
    的中断。当所有中断解决之后,主数据库自动继续以最大可用性模式运行。
    这种模式确保如果主数据库故障,但是只有当第二次故障没有阻止完整的重做数据集从主数据库发送到至
    少一个备数据库时,不发生数据丢失。
    
    1.3.最大保护模式max protection
    这种保护模式确保如果主数据库故障不会发生数据丢失。要提供这种级别的保护,恢复每个事务所需的重
    做数据必须在事务提交之前同时写到本地联机重做日志和至少一个备数据库上的备重做日志。要确保不发
    生数据丢失,如果故障导致主数据库无法写重做流到至少一个事务一致性备数据库的备重做日志时,主数
    据库会关闭。
    
    1.4.查询当前模式
    SYS@orcl> select protection_mode,protection_level from v$database;
    
    2.DG切换测试
    2.1 DG switchover 切换测试
    enmotech1:主库--------->备库
    enmotech2:备库--------->主库
    
    2.2主备库角色状态查询
    主备库角色状态查询
    enmotech1主库:
    set linesize 120;
    set pagesize 999;
    col SWITCHOVER_STATUS for a30;
    col  DATABASE_ROLE for a30;
    col OPEN_MODE for a30;
    select switchover_status,database_role,open_mode from v$database;
    
    SWITCHOVER_STATUS	       DATABASE_ROLE		      OPEN_MODE
    ------------------------------ ------------------------------ ------------------------------
    SESSIONS ACTIVE 	       PRIMARY			      READ WRITE
    enmotech2备库:
    set linesize 120;
    set pagesize 999;
    col SWITCHOVER_STATUS for a30;
    col  DATABASE_ROLE for a30;
    col OPEN_MODE for a30;
    SYS@orcl> select switchover_status,database_role,open_mode from v$database;
    
    SWITCHOVER_STATUS	       DATABASE_ROLE		      OPEN_MODE
    ------------------------------ ------------------------------ ------------------------------
    NOT ALLOWED		           PHYSICAL STANDBY 	      READ ONLY WITH APPLY
    
    enmotech1显示:TO STANDBY/PRIMARY,如果显示SESSION ACTIVE表示还有活动的会话,需要关闭会话再检查
    enmotech2显示:NOT ALLOWED/PHYSICAL STANDBY
    
    2.3主库切到备库(enmotech1操作)
    SYS@orcl> alter database commit to switchover to physical standby;
    SYS@orcl> alter database commit to switchover to physical standby with session shutdown;
    --如果状态显示SESSION ACTIVE,在切换的时候可以指定with session shutdown 子句强制关闭活动的会话。
    SYS@orcl> shutdown immediate
    SYS@orcl> startup mount
    
    2.4备库切换到主库(enmotech2操作)
    SYS@orcl> alter database commit to switchover to primary;
    SYS@orcl> alter database open;
    
    2.5新备库(enmotech1操作)执行APPLY LOG命令
    --启用mount状态下的APPLY LOG
    SYS@orcl> alter database recover managed standby database disconnect from session;
    --启用open状态(READ ONLY WITH APPLY)下的APPLY LOG
    SYS@orcl> alter database recover managed standby database cancel;
    SYS@orcl> alter database open;
    SYS@orcl> alter database recover managed standby database disconnect from session;
    SYS@orcl> select switchover_status,database_role,open_mode from v$database;
    
    2.5对换主备库的ip,并修改主备库的host文件,重启监听
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.6.30 enmotech1 oracle
    192.168.6.31 enmotech2 oracle
    
    3.1.DG failover 切换测试
    enmotech1:主库------>崩溃
    enmotech2:备库------>主库
    
    3.2
    主备库角色状态查询
    SYS@orcl> select switchover_status,database_role,open_mode from v$database;
    
    3.2.1主库(enmotech1)通过shutdown abort方式人工模拟主库崩溃,直接关闭
    SYS@orcl> select open_mode from v$database;
    SYS@orcl> shutdown abort
    SYS@orcl> startup mount
    SYS@orcl> alter system flush redo to 'orcldg';
    
    3.2.2备库(enmotech2)执行如下操作切换为主库
    SYS@orcl> select thread#, low_sequence#, high_sequence# from v$archive_gap;
    --如果没有发现明显的gap现象,说明此次的failover不会有数据损失情况。在备库,要进行关闭apply和结束应用动作。
    SYS@orcl> alter database recover managed standby database cancel;
    SYS@orcl> alter database recover managed standby database finish;
    SYS@orcl> alter database commit to switchover to primary;
    SYS@orcl> alter database open;
    SYS@orcl> select open_mode, switchover_status from v$database;
    
    4.DG failover后重建DG
    enmotech1:崩溃------>备库
    enmotech2:主库------>主库(保持主库状态不变)
    
    4.1.新主库(enmotech2)角色状态查询
    SYS@orcl> select switchover_status,database_role,open_mode from v$database;
    
    4.2新主库(enmotech2)创建备库控制文件
    mkdir -p /u01/bak/
    SYS@orcl> alter database create standby controlfile as '/u01/bak/control01.ctl';
    
    4.3将备库控制文件拷贝至db11
    scp ezdb12:/u01/bak/control01.ctl /u01/app/oracle/oradata/orcl/control01.ctl
    cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/
    mv /u01/app/oracle/fast_recovery_area/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
    
    4.4恢复对应数据文件至db11,并启动enmotech1到mount状态,应用APPLY模式
    SYS@orcl> startup mount;
    SYS@orcl> alter database recover managed standby database disconnect from session;
    
    4.5启动enmotech1至OPEN状态,并应用APPLY REDO模式
    SYS@orcl> alter database recover managed standby database cancel;
    SYS@orcl> alter database open;
    SYS@orcl> alter database recover managed standby database disconnect from session;
    
    5.开启和关闭DataGuard的流程
    5.1.关闭
    关闭主库
    SYS@orcl> shutdown immediate
    
    5.2关闭主库监听
    lsnrctl stop
    
    5.3查询备库是否正在执行重做应用或实时应用。如果MRP0或MRP进程存在,则备库正在应用重做。
    SYS@orcl> select process, status from v$managed_standby;
    
    5.4如果重做应用程序正在运行,停止备库的Redo日志的应用
    SYS@orcl> alter database recover managed standby database cancel;
    
    5.5关闭备库
    SYS@orcl> shutdown immediate
    
    5.6关闭备库监听
    lsnrctl stop
    
    6.1.开启
    启动备库监听
    lsnrctl start
    
    6.2启动备库到mount状态
    SYS@orcl> startup mount;
    
    6.3开启备库的Redo日志应用
    SYS@orcl> alter database recover managed standby database using current logfile disconnect from session;
    
    6.4启动主库监听
    lsnrctl start
    
    6.5启动主库
    SYS@orcl> startup;
    
    6.6检查日志情况的SQL语句
    select al.thrd "Thread", almax "Last Seq Received", lhmax "Last Seq Applied"
     from (select thread# thrd, max(sequence#) almax
           from v$archived_log
           where resetlogs_change#=(select resetlogs_change# from v$database)
           group by thread#) al,
          (select thread# thrd, max(sequence#) lhmax
           from v$log_history
           where first_time=(select max(first_time) from v$log_history)
           group by thread#) lh
     where al.thrd = lh.thrd;

     

    展开全文
  • oracle DG主备切换

    千次阅读 2017-04-12 11:08:09
    ---------正常切换 --切换前确认下主备信息 select open_mode, switchover_status, database_role, db_unique_name from v$database; --主库 alter database commit to switchover to physical standby with...
  • 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 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 adg failover switchover broker
  • oracle11g主备库切换

    千次阅读 2016-06-13 15:48:49
     众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据;另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动不起来了,为failover,有...
  • dg主备库切换步骤

    千次阅读 2012-05-11 13:06:26
    先将主库切换成备库,然后将原主库启动到物理库的状态 SQL> select switchover_status from v$database; SWITCHOVER_STATUS -------------------- TO STANDBY SQL> Alter database commit to ...
  • HA/DG/RAC 三者的区别

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

    万次阅读 2017-02-17 09:57:01
    oracle dg datagurad failover swithover broker fsfo
  • 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 DG主备切换VIP

    千次阅读 2018-02-05 13:04:26
    在做DG主备切换时,为使应用端在不修改连接配置的情况下,正常连接DG数据库,方法有几种; 一是,应用端连接主机为主机名,可以通过域名解析调整实现; 二是,应用端连接主机为IP, 通过设置VIP(手动配置或者f5等...
  • Oracle 11g RAC+DG项目实战-视频分享

    千次阅读 2013-10-28 10:45:25
    在15集视频中详细阐述了Oracle RAC的安装,RAC如何配置Active Data Guard,DG如何切换!绝对重量级的视频。掌握这个技术,资深Oracle DBA的岗位你也轻松秒杀! 实验手册在最后一集视频中! 概述: 本系列视频是...
  • oracle dg 状态检查

    万次阅读 2018-05-18 10:04:40
    先检查备库的归档日志同步情况 SELECT NAME,applied FROM v$archived_log; alter database recover managed standby database cancel;select thread#,sequence#,standby_dest,archived,applied,status from v$...
  • oracle物理dg安装:主库创建

    千次阅读 2016-04-26 22:18:43
    oracle用户执行dbca,如果是root用户登录图形图面,则su切换用户前需要先执行一下xhost +x,否则oracle不能启动图形界面程序,下一步 ​ 选择Create Database,下一步 选择General Purpose or Transaction ...
  • Oracle修改spfile文件的路径

    千次阅读 2013-04-02 10:27:40
    问题背景:今天同事在做DB双机切换的时候发现oracle的spfile文件作为+DG_DATA 下的一个资源,本意是在+DG_ORA下  后来发现spfile的路径建错了,但是重建带来一个问题启动的时候使用默认启动方式spfile,在此场景下...
  • 有关DG的RFS进程不存在的解决办法

    千次阅读 2015-02-26 16:15:15
    当时有时候备库重新启动归档日志应用 时,发现主机不传日志过来,配置也没改过,网络也是通的,万分不解,查看备库的DG进程,发现没有RFS进程,主库切换日志不起作用。只好重新在主库上声明备机的相关参数,也不知道...
  • DG既可以同步,也可以异步。 DG有三种模式: 最大保护 是同步 最大性能 是异步 最高可用 能同步就不异步,不能同步时才会异步。
1 2 3 4 5 ... 20
收藏数 4,806
精华内容 1,922
关键字:

dg切换 oracle