本篇文檔學習,DG備庫,實時應用如何判斷,MR進程,及MRP應用歸檔,三種情況的查詢及驗證
1.取消MRP進程
備庫查詢進程狀態
select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby;
PROCESS CLIENT_P SEQUENCE# STATUS BLOCK# BLOCKS
--------- -------- ---------- ------------ ---------- ----------
ARCH ARCH 0 CONNECTED 0 0
ARCH ARCH 0 CONNECTED 0 0
ARCH ARCH 0 CONNECTED 0 0
ARCH ARCH 0 CONNECTED 0 0
RFS UNKNOWN 0 IDLE 0 0
RFS UNKNOWN 0 IDLE 0 0
MRP0 N/A 1124 WAIT_FOR_LOG 0 0
WAIT_FOR_LOG --等待日志傳輸,說明當前MRP進程應用歸檔文件進行介質恢復
取消MRP進程應用
alter database recover managed standby database cancel;
select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby where PROCESS like '%M%';
no rows selected
2.啟用Foreground recovery session MR(fg),前台恢復進程應用歸檔文件進行恢復
啟用MRP進程,應用歸檔進行進行恢復
SYS@dage >recover managed standby database;
查詢MRP進程狀態
PROCESS CLIENT_P SEQUENCE# STATUS BLOCK# BLOCKS
--------- -------- ---------- ------------ ---------- ----------
MR(fg) N/A 1126 APPLYING_LOG 58451 86733 --前台等待狀態,應用歸檔日志
WAIT_FOR_LOG - 進程正在等待歸檔的重做日志完成
WAIT_FOR_GAP - 進程正在等待解決存檔差距
APPLYING_LOG - 進程正在將歸檔的重做日志主動應用於備用數據庫
查詢歸檔進程狀態
select dest_name,status,recovery_mode from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_1';
DEST_NAME STATUS RECOVERY_MODE
---------------------------------------- --------- -----------------------
LOG_ARCHIVE_DEST_1 VALID MANAGED (Managed recovery is active)應用歸檔日志
--查詢當前已歸檔的最大歸檔文件序列號
SYS@dage >select max(sequence#),thread# from v$archived_log group by thread#;
MAX(SEQUENCE#) THREAD#
-------------- ----------
1162 1
--再次查詢MRP進程狀態,WAIT_FOR_LOG,
MR(fg) N/A 1163 WAIT_FOR_LOG 0 0
小結:如下命令直接啟用MR進程,會話不斷開,最初MR進程,Foreground recovery session,進程狀態最初APPLYING_LOG,應用歸檔日志,隨后歸檔日志應用完畢后,進程處於等待WAIT_FOR_LOG狀態,等待主庫傳輸歸檔
recover managed standby database;
3.啟用MRP進程,后台恢復進程應用歸檔文件進行恢復
alter database recover managed standby database cancel;
recover managed standby database disconnect from session;
select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby where PROCESS like '%M%';
PROCESS CLIENT_P SEQUENCE# STATUS BLOCK# BLOCKS
--------- -------- ---------- ------------ ---------- ----------
MRP0 N/A 1163 WAIT_FOR_LOG 0 0
--進程為MRP0進程, 處於WAIT_FOR_LOG 等待主庫傳輸歸檔狀態
查詢歸檔進程狀態
select dest_name,status,recovery_mode from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_1';
DEST_NAME STATUS RECOVERY_MODE
---------------------------------------- --------- ----------
LOG_ARCHIVE_DEST_1 VALID MANAGED
4.啟用Foreground recovery session MR(fg),前台恢復進程應用standby redo logfile進行恢復
alter database recover managed standby database cancel;
--啟用MR前台恢復進程
alter database recover managed standby database using current logfile;
or
recover managed standby database using current logfile; --等價
--查詢進程狀態,APPLYING_LOG
select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby where PROCESS like '%M%';
PROCESS CLIENT_P SEQUENCE# STATUS BLOCK# BLOCKS
--------- -------- ---------- ------------ ---------- ----------
MR(fg) N/A 1169 APPLYING_LOG 202 203
查詢歸檔進程狀態
select dest_name,status,recovery_mode from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_1';
DEST_NAME STATUS RECOVERY_MODE
--------------------------------------- --------- -----------------------
LOG_ARCHIVE_DEST_1 VALID MANAGED REAL TIME APPLY
查詢standby 狀態發現
select group#,thread#,sequence#,bytes/1024/1024 m,blocksize,status from v$standby_log;
GROUP# THREAD# SEQUENCE# M BLOCKSIZE STATUS
---------- ---------- ---------- ---------- ---------- ----------
11 1 1172 50 512 ACTIVE
12 1 0 50 512 UNASSIGNED
13 1 0 50 512 UNASSIGNED
5.啟用MRP 進程,后台恢復進程應用standby redo logfile進行恢復
recover managed standby database using current logfile disconnect;
or
alter database recover managed standby database using current logfile disconnect;
--主庫查詢
select DEST_NAME,STATUS,TRANSMIT_MODE,NET_TIMEOUT from v$archive_dest;
DEST_NAME STATUS TRANSMIT_MOD NET_TIMEOUT
---------------------------------------- --------- ------------ -----------
LOG_ARCHIVE_DEST_1 VALID SYNCHRONOUS 0
LOG_ARCHIVE_DEST_2 VALID PARALLELSYNC 30 --並行同步數據
--備庫查詢
select dest_name,status,recovery_mode from v$archive_dest_status;
DEST_NAME STATUS RECOVERY_MODE
---------------------------------------- --------- -----------------------
LOG_ARCHIVE_DEST_1 VALID MANAGED REAL TIME APPLY
--進程狀態MRP進程
select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby;
PROCESS CLIENT_P SEQUENCE# STATUS BLOCK# BLOCKS
--------- -------- ---------- ------------ ---------- ----------
MRP0 N/A 1172 APPLYING_LOG 1272 102400
總結:備庫應用恢復有四種狀態
MRP0 后台 應用歸檔 or 應用standby redo log
MR((fg) 前台 應用歸檔 or 應用standby redo log
什么是前台,后台,前台進程,會話斷開,進程關閉
什么時候開啟前台進程MR,什么時候開啟后台MRP0進程
在執行程命令時,未加入disconnect參數,會話不斷開,及開啟MR前台進程
MRP0進程應用歸檔,v$managed_standby視圖中status為何還存在APPLYING_LOG?
APPLYING_LOG,只是說明了進程正在應用歸檔,並非標識MRP0進程是否實時應用
如何查詢,是否實時應用?
select dest_name,status,recovery_mode from v$archive_dest_status;
recovery_mode=MANAGED REAL TIME APPLY
開啟實時應用的前提條件
1.數據庫版本>10g
2.需要提取創建standby redo logfile