單實例數據庫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、成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM