數據庫環境
物理備庫:
主庫 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、成功