zoukankan      html  css  js  c++  java
  • 单实例数据库DataGuard主库与备库切换

    数据库环境

    物理备库:

    主库  SHDB

    备库  BJDB

    1、查看当前主备库角色、状态信息

    主库(SHDB)

    10:48:37 SYS@ SHDB>col name for a10
    10:54:03 SYS@ SHDB>col database_role for a20
    10:54:03 SYS@ SHDB>col protection_mode for a20
    10:54:04 SYS@ SHDB>col switchover_status for a20
    10:54:04 SYS@ SHDB>select name,protection_mode,database_role,switchover_status from v$database;
    
    NAME       PROTECTION_MODE      DATABASE_ROLE        SWITCHOVER_STATUS
    ---------- -------------------- -------------------- --------------------
    BJDB       MAXIMUM PERFORMANCE  PRIMARY              TO STANDBY

    备库(BJDB)

    01:12:20 SYS@ BJDB>col name for a10
    01:16:50 SYS@ BJDB>col database_role for a20
    01:16:50 SYS@ BJDB>col protection_mode for a20
    01:16:51 SYS@ BJDB>col switchover_status for a20
    01:16:51 SYS@ BJDB>select name,protection_mode,database_role,switchover_status from v$database;
    
    NAME       PROTECTION_MODE      DATABASE_ROLE        SWITCHOVER_STATUS
    ---------- -------------------- -------------------- --------------------
    BJDB       MAXIMUM PERFORMANCE  PHYSICAL STANDBY     NOT ALLOWED

    2、主库切换成物理备库

    10:54:04 SYS@ SHDB>alter database commit to switchover to standby;
    
    Database altered.

    注意:如果执行上述SQL命令失败,如下述现象,说明有其他的SESSION(除当前的SYS用户之外)在登陆ORACLE;当然如果直接执行成功,下面的情况就可以不用再执行了.

    23:25:58 SYS@ BJDB>alter database commit to switchover to standby;
    alter database commit to switchover to standby
    *
    ERROR at line 1:
    ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected

    解决办法:

    23:32:38 SYS@ BJDB>alter database commit to switchover to standby with session shutdown;
    
    Database altered.
    
    23:35:10 SYS@ BJDB>

    2.1、执行完成切换之后,数据库处于关闭状态,需要手工启动到mount状态;

    11:03:06 SYS@ SHDB>select open_mode from v$database;
    select open_mode from v$database
                          *
    ERROR at line 1:
    ORA-01507: database not mounted
    
    
    11:03:25 SYS@ SHDB>shutdown immediate;
    ORA-01507: database not mounted
    
    
    ORACLE instance shut down.
    
    11:04:05 SYS@ SHDB>startup mount;
    ORACLE instance started.
    
    Total System Global Area  849530880 bytes
    Fixed Size                  1339824 bytes
    Variable Size             499125840 bytes
    Database Buffers          343932928 bytes
    Redo Buffers                5132288 bytes
    Database mounted.
    11:04:17 SYS@ SHDB>select open_mode from v$database;
    
    OPEN_MODE
    ------------------------------------------------------------
    MOUNTED
    
    11:04:26 SYS@ SHDB>

    2.2、查看当前数据库(SHDB)角色为PHYSICAL STANDBY

    11:04:17 SYS@ SHDB>select open_mode from v$database;
    
    OPEN_MODE
    ------------------------------------------------------------
    MOUNTED
    
    11:04:26 SYS@ SHDB>col name for a10
    11:05:45 SYS@ SHDB>col database_role for a20
    11:05:45 SYS@ SHDB>col protection_mode for a20
    11:05:45 SYS@ SHDB>col switchover_status for a20
    11:05:45 SYS@ SHDB>select name,protection_mode,database_role,switchover_status from v$database;
    
    NAME       PROTECTION_MODE      DATABASE_ROLE        SWITCHOVER_STATUS
    ---------- -------------------- -------------------- --------------------
    BJDB       MAXIMUM PERFORMANCE  PHYSICAL STANDBY     TO PRIMARY

    3、备库(BJDB)切换为主库

    01:16:51 SYS@ BJDB>col name for a10
    01:30:48 SYS@ BJDB>col database_role for a20
    01:30:48 SYS@ BJDB>col protection_mode for a20
    01:30:48 SYS@ BJDB>col switchover_status for a20
    01:30:48 SYS@ BJDB>select name,protection_mode,database_role,switchover_status from v$database;
    
    NAME       PROTECTION_MODE      DATABASE_ROLE        SWITCHOVER_STATUS
    ---------- -------------------- -------------------- --------------------
    BJDB       MAXIMUM PERFORMANCE  PHYSICAL STANDBY     SESSIONS ACTIVE

    此时我们注意到一个奇怪的现象,主库(SHDB)与备库(BJDB)此时此刻都处于PHYSICAL STANDBY状态。实际上这是一个中间状态.

    3.1、执行备库(BJDB)切换为主库

    01:30:48 SYS@ BJDB>alter database commit to switchover to primary;
    alter database commit to switchover to primary
    *
    ERROR at line 1:
    ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected
    
    
    01:32:42 SYS@ BJDB>alter database commit to switchover to primary with session shutdown;
    
    Database altered.

    3.2、查看备库(BJDB)已经处于PRIMARY状态,也就是说备库切换为主库成功了

    01:32:42 SYS@ BJDB>alter database commit to switchover to primary with session shutdown;
    
    Database altered.
    
    01:33:22 SYS@ BJDB>col name for a10
    01:33:55 SYS@ BJDB>col database_role for a20
    01:33:55 SYS@ BJDB>col protection_mode for a20
    01:33:55 SYS@ BJDB>col switchover_status for a20
    01:33:56 SYS@ BJDB>select name,protection_mode,database_role,switchover_status from v$database;
    
    NAME       PROTECTION_MODE      DATABASE_ROLE        SWITCHOVER_STATUS
    ---------- -------------------- -------------------- --------------------
    BJDB       MAXIMUM PERFORMANCE  PRIMARY              NOT ALLOWED

    3.3、切换完成数据库(SHDB)之后,数据库处于mounted状态,需要手工切换至open

    01:35:33 SYS@ BJDB>select status from v$instance;
    
    STATUS
    ------------------------------------
    MOUNTED
    
    01:35:41 SYS@ BJDB>alter database open;
    
    Database altered.
    
    01:35:50 SYS@ BJDB>select status from v$instance;
    
    STATUS
    ------------------------------------
    OPEN

    4、监控主库(BJDB)启动进程

    01:36:03 SYS@ BJDB>select process,status from v$managed_standby;
    
    PROCESS                     STATUS
    --------------------------- ------------------------------------
    ARCH                        CLOSING
    ARCH                        CLOSING
    ARCH                        CLOSING
    LNS                         WRITING

    5、监控备库(SHDB)启动进程.

    11:05:46 SYS@ SHDB>select process,status from v$managed_standby;
    
    PROCESS                     STATUS
    --------------------------- ------------------------------------
    ARCH                        CONNECTED
    ARCH                        CONNECTED
    ARCH                        CONNECTED
    RFS                         IDLE
    RFS                         IDLE
    RFS                         IDLE
    
    6 rows selected.

    注意:备库上才有RFS进程的

    6、至此主库与备库的角色已经成功切换完成.接下来可以在监控主库与备库的告警日志、归档日志信息的同时,主库产生一些新数据,备库接收并应用归档日志.

    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 华丽的分割线 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    #############################################################################################################################
    试验:验证备库接收应用归档日志

    1、主库产生新数据

    01:38:36 SYS@ BJDB>conn test/test
    Connected.
    01:49:49 TEST@ BJDB>select count(*) from emp;
    
      COUNT(*)
    ----------
         54784
    
    01:49:56 TEST@ BJDB>insert into emp select * from emp;
    
    54784 rows created.
    
    01:50:24 TEST@ BJDB>commit;
    
    Commit complete.
    
    01:50:28 TEST@ BJDB>select count(*) from emp;
    
      COUNT(*)
    ----------
        109568
    
    01:50:33 TEST@ BJDB>

    2、主库发生日志切换

    01:50:59 TEST@ BJDB>conn / as sysdba
    Connected.
    01:51:04 SYS@ BJDB>alter system switch logfile;
    
    System altered.

    3、备库应用归档日志(备库库处于mount状态)

    11:29:57 SYS@ SHDB>select open_mode from v$database;
    
    OPEN_MODE
    ------------------------------------------------------------
    MOUNTED
    11:30:48 SYS@ SHDB>select sequence#,name,applied from v$archived_log;
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           119 /dsk4/arch_shdb/arch_1_119_833385608.log                     YES
           120 /dsk4/arch_shdb/arch_1_120_833385608.log                     YES
           121 /dsk4/arch_shdb/arch_1_121_833385608.log                     YES
           122 /dsk4/arch_shdb/arch_1_122_833385608.log                     YES
           123 /dsk4/arch_shdb/arch_1_123_833385608.log                     YES
           123 BJDB                                                         YES
           124 /dsk4/arch_shdb/arch_1_124_833385608.log                     YES
           124 BJDB                                                         YES
           125 BJDB                                                         YES
           125 /dsk4/arch_shdb/arch_1_125_833385608.log                     YES
           126 /dsk4/arch_shdb/arch_1_126_833385608.log                     YES
           126 BJDB                                                         YES
           127 /dsk4/arch_shdb/arch_1_127_833385608.log                     YES
           127 BJDB                                                         YES
           128 BJDB                                                         YES
           128 /dsk4/arch_shdb/arch_1_128_833385608.log                     YES
           129 BJDB                                                         YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           129 /dsk4/arch_shdb/arch_1_129_833385608.log                     YES
           130 BJDB                                                         YES
           130 /dsk4/arch_shdb/arch_1_130_833385608.log                     YES
           131 /dsk4/arch_shdb/arch_1_131_833385608.log                     YES
           131 BJDB                                                         YES
           132 /dsk4/arch_shdb/arch_1_132_833385608.log                     YES
           132 BJDB                                                         YES
           133 /dsk4/arch_shdb/arch_1_133_833385608.log                     YES
           134 /dsk4/arch_shdb/arch_1_134_833385608.log                     YES
           135 /dsk4/arch_shdb/arch_1_135_833385608.log                     YES
           136 /dsk4/arch_shdb/arch_1_136_833385608.log                     YES
           137 /dsk4/arch_shdb/arch_1_137_833385608.log                     YES
           138 /dsk4/arch_shdb/arch_1_138_833385608.log                     YES
           139 /dsk4/arch_shdb/arch_1_139_833385608.log                     YES
           140 /dsk4/arch_shdb/arch_1_140_833385608.log                     YES
           141 /dsk4/arch_shdb/arch_1_141_833385608.log                     YES
           142 /dsk4/arch_shdb/arch_1_142_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           143 /dsk4/arch_shdb/arch_1_143_833385608.log                     YES
           144 /dsk4/arch_shdb/arch_1_144_833385608.log                     YES
           145 /dsk4/arch_shdb/arch_1_145_833385608.log                     YES
           146 /dsk4/arch_shdb/arch_1_146_833385608.log                     YES
           148 /dsk4/arch_shdb/arch_1_148_833385608.log                     YES
           147 /dsk4/arch_shdb/arch_1_147_833385608.log                     YES
           166 /dsk4/arch_shdb/arch_1_166_833385608.log                     YES
           149 /dsk4/arch_shdb/arch_1_149_833385608.log                     YES
           150 /dsk4/arch_shdb/arch_1_150_833385608.log                     YES
           151 /dsk4/arch_shdb/arch_1_151_833385608.log                     YES
           152 /dsk4/arch_shdb/arch_1_152_833385608.log                     YES
           154 /dsk4/arch_shdb/arch_1_154_833385608.log                     YES
           153 /dsk4/arch_shdb/arch_1_153_833385608.log                     YES
           155 /dsk4/arch_shdb/arch_1_155_833385608.log                     YES
           156 /dsk4/arch_shdb/arch_1_156_833385608.log                     YES
           157 /dsk4/arch_shdb/arch_1_157_833385608.log                     YES
           158 /dsk4/arch_shdb/arch_1_158_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           159 /dsk4/arch_shdb/arch_1_159_833385608.log                     YES
           160 /dsk4/arch_shdb/arch_1_160_833385608.log                     YES
           161 /dsk4/arch_shdb/arch_1_161_833385608.log                     YES
           162 /dsk4/arch_shdb/arch_1_162_833385608.log                     YES
           163 /dsk4/arch_shdb/arch_1_163_833385608.log                     YES
           165 /dsk4/arch_shdb/arch_1_165_833385608.log                     YES
           164 /dsk4/arch_shdb/arch_1_164_833385608.log                     YES
           167 /dsk4/arch_shdb/arch_1_167_833385608.log                     YES
           168 /dsk4/arch_shdb/arch_1_168_833385608.log                     YES
           169 /dsk4/arch_shdb/arch_1_169_833385608.log                     YES
           170 /dsk4/arch_shdb/arch_1_170_833385608.log                     YES
           171 /dsk4/arch_shdb/arch_1_171_833385608.log                     YES
           172 /dsk4/arch_shdb/arch_1_172_833385608.log                     YES
           173 /dsk4/arch_shdb/arch_1_173_833385608.log                     YES
           174 /dsk4/arch_shdb/arch_1_174_833385608.log                     YES
           175 /dsk4/arch_shdb/arch_1_175_833385608.log                     YES
           176 /dsk4/arch_shdb/arch_1_176_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           177 /dsk4/arch_shdb/arch_1_177_833385608.log                     YES
           178 /dsk4/arch_shdb/arch_1_178_833385608.log                     YES
           179 /dsk4/arch_shdb/arch_1_179_833385608.log                     YES
           180 /dsk4/arch_shdb/arch_1_180_833385608.log                     NO
           180 BJDB                                                         YES
           181 BJDB                                                         YES
           181 /dsk4/arch_shdb/arch_1_181_833385608.log                     NO
           182 BJDB                                                         YES
           182 /dsk4/arch_shdb/arch_1_182_833385608.log                     NO
           183 BJDB                                                         YES
           183 /dsk4/arch_shdb/arch_1_183_833385608.log                     NO
           184 /dsk4/arch_shdb/arch_1_184_833385608.log                     NO
           184 BJDB                                                         NO
           185 /dsk4/arch_shdb/arch_1_185_833385608.log                     YES
           185 BJDB                                                         NO
           186 /dsk4/arch_shdb/arch_1_186_833385608.log                     NO
           187 /dsk4/arch_shdb/arch_1_187_833385608.log                     NO
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           188 /dsk4/arch_shdb/arch_1_188_833385608.log                     NO
    
    86 rows selected.
    11:32:35 SYS@ SHDB>alter database recover managed standby database disconnect from session;
    
    Database altered.

    再次查看v$archived_log已经归开始陆续应用

    11:34:31 SYS@ SHDB>select sequence#,name,applied from v$archived_log;
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           119 /dsk4/arch_shdb/arch_1_119_833385608.log                     YES
           120 /dsk4/arch_shdb/arch_1_120_833385608.log                     YES
           121 /dsk4/arch_shdb/arch_1_121_833385608.log                     YES
           122 /dsk4/arch_shdb/arch_1_122_833385608.log                     YES
           123 /dsk4/arch_shdb/arch_1_123_833385608.log                     YES
           123 BJDB                                                         YES
           124 /dsk4/arch_shdb/arch_1_124_833385608.log                     YES
           124 BJDB                                                         YES
           125 BJDB                                                         YES
           125 /dsk4/arch_shdb/arch_1_125_833385608.log                     YES
           126 /dsk4/arch_shdb/arch_1_126_833385608.log                     YES
           126 BJDB                                                         YES
           127 /dsk4/arch_shdb/arch_1_127_833385608.log                     YES
           127 BJDB                                                         YES
           128 BJDB                                                         YES
           128 /dsk4/arch_shdb/arch_1_128_833385608.log                     YES
           129 BJDB                                                         YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           129 /dsk4/arch_shdb/arch_1_129_833385608.log                     YES
           130 BJDB                                                         YES
           130 /dsk4/arch_shdb/arch_1_130_833385608.log                     YES
           131 /dsk4/arch_shdb/arch_1_131_833385608.log                     YES
           131 BJDB                                                         YES
           132 /dsk4/arch_shdb/arch_1_132_833385608.log                     YES
           132 BJDB                                                         YES
           133 /dsk4/arch_shdb/arch_1_133_833385608.log                     YES
           134 /dsk4/arch_shdb/arch_1_134_833385608.log                     YES
           135 /dsk4/arch_shdb/arch_1_135_833385608.log                     YES
           136 /dsk4/arch_shdb/arch_1_136_833385608.log                     YES
           137 /dsk4/arch_shdb/arch_1_137_833385608.log                     YES
           138 /dsk4/arch_shdb/arch_1_138_833385608.log                     YES
           139 /dsk4/arch_shdb/arch_1_139_833385608.log                     YES
           140 /dsk4/arch_shdb/arch_1_140_833385608.log                     YES
           141 /dsk4/arch_shdb/arch_1_141_833385608.log                     YES
           142 /dsk4/arch_shdb/arch_1_142_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           143 /dsk4/arch_shdb/arch_1_143_833385608.log                     YES
           144 /dsk4/arch_shdb/arch_1_144_833385608.log                     YES
           145 /dsk4/arch_shdb/arch_1_145_833385608.log                     YES
           146 /dsk4/arch_shdb/arch_1_146_833385608.log                     YES
           148 /dsk4/arch_shdb/arch_1_148_833385608.log                     YES
           147 /dsk4/arch_shdb/arch_1_147_833385608.log                     YES
           166 /dsk4/arch_shdb/arch_1_166_833385608.log                     YES
           149 /dsk4/arch_shdb/arch_1_149_833385608.log                     YES
           150 /dsk4/arch_shdb/arch_1_150_833385608.log                     YES
           151 /dsk4/arch_shdb/arch_1_151_833385608.log                     YES
           152 /dsk4/arch_shdb/arch_1_152_833385608.log                     YES
           154 /dsk4/arch_shdb/arch_1_154_833385608.log                     YES
           153 /dsk4/arch_shdb/arch_1_153_833385608.log                     YES
           155 /dsk4/arch_shdb/arch_1_155_833385608.log                     YES
           156 /dsk4/arch_shdb/arch_1_156_833385608.log                     YES
           157 /dsk4/arch_shdb/arch_1_157_833385608.log                     YES
           158 /dsk4/arch_shdb/arch_1_158_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           159 /dsk4/arch_shdb/arch_1_159_833385608.log                     YES
           160 /dsk4/arch_shdb/arch_1_160_833385608.log                     YES
           161 /dsk4/arch_shdb/arch_1_161_833385608.log                     YES
           162 /dsk4/arch_shdb/arch_1_162_833385608.log                     YES
           163 /dsk4/arch_shdb/arch_1_163_833385608.log                     YES
           165 /dsk4/arch_shdb/arch_1_165_833385608.log                     YES
           164 /dsk4/arch_shdb/arch_1_164_833385608.log                     YES
           167 /dsk4/arch_shdb/arch_1_167_833385608.log                     YES
           168 /dsk4/arch_shdb/arch_1_168_833385608.log                     YES
           169 /dsk4/arch_shdb/arch_1_169_833385608.log                     YES
           170 /dsk4/arch_shdb/arch_1_170_833385608.log                     YES
           171 /dsk4/arch_shdb/arch_1_171_833385608.log                     YES
           172 /dsk4/arch_shdb/arch_1_172_833385608.log                     YES
           173 /dsk4/arch_shdb/arch_1_173_833385608.log                     YES
           174 /dsk4/arch_shdb/arch_1_174_833385608.log                     YES
           175 /dsk4/arch_shdb/arch_1_175_833385608.log                     YES
           176 /dsk4/arch_shdb/arch_1_176_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           177 /dsk4/arch_shdb/arch_1_177_833385608.log                     YES
           178 /dsk4/arch_shdb/arch_1_178_833385608.log                     YES
           179 /dsk4/arch_shdb/arch_1_179_833385608.log                     YES
           180 /dsk4/arch_shdb/arch_1_180_833385608.log                     YES
           180 BJDB                                                         YES
           181 BJDB                                                         YES
           181 /dsk4/arch_shdb/arch_1_181_833385608.log                     YES
           182 BJDB                                                         YES
           182 /dsk4/arch_shdb/arch_1_182_833385608.log                     YES
           183 BJDB                                                         YES
           183 /dsk4/arch_shdb/arch_1_183_833385608.log                     YES
           184 /dsk4/arch_shdb/arch_1_184_833385608.log                     YES
           184 BJDB                                                         NO
           185 /dsk4/arch_shdb/arch_1_185_833385608.log                     YES
           185 BJDB                                                         NO
           186 /dsk4/arch_shdb/arch_1_186_833385608.log                     YES
           187 /dsk4/arch_shdb/arch_1_187_833385608.log                     YES
    
     SEQUENCE# NAME                                                         APPLIED
    ---------- ------------------------------------------------------------ ---------------------------
           188 /dsk4/arch_shdb/arch_1_188_833385608.log                     YES
    
    86 rows selected.

    4、备库取消应用归档日志

    11:34:32 SYS@ SHDB>alter database recover managed standby database cancel;
    
    Database altered.

    5、备库开启到open(read only)状态

    11:35:58 SYS@ SHDB>alter database open;
    
    Database altered.
    
    11:36:18 SYS@ SHDB>select open_mode from v$database;
    
    OPEN_MODE
    ------------------------------------------------------------
    READ ONLY

    6、备库应用归档日志

    11:36:27 SYS@ SHDB>alter database recover managed standby database disconnect from session;
    
    Database altered.

    7、备库查看产生的新数据

    11:37:27 SYS@ SHDB>select count(*) from test.emp;
    
      COUNT(*)
    ----------
        109568

    8、在主库与备库都处于open状态下,模拟生产数据,备库应用归档日志同时对外提供查询服务

    主库truncate掉test.emp表中的10万多条数据,并发生一次切换日志

    01:51:11 SYS@ BJDB>conn test/test
    Connected.
    02:01:27 TEST@ BJDB>truncate table emp;
    
    Table truncated.
    
    02:01:38 TEST@ BJDB>select count(*) from emp;
    
      COUNT(*)
    ----------
             0
    
    02:01:49 TEST@ BJDB>conn / as sysdba
    Connected.
    02:01:54 SYS@ BJDB>alter system switch logfile;
    
    System altered.

    备库查看test.emp表中的数据

    11:37:57 SYS@ SHDB>select count(*) from test.emp;
    
      COUNT(*)
    ----------
             0

    9、成功

  • 相关阅读:
    React网络请求fetch之get请求
    英语学习
    人物传记
    四月
    启程
    情绪
    办公新址
    孩子大了
    幸福的生日
    hibernate---树状映射
  • 原文地址:https://www.cnblogs.com/arcer/p/3550713.html
Copyright © 2011-2022 走看看