STREAMS筆記(3) REDO清理 & 異常處理
-----------------------------
歸檔和REDO清理
-----------------------------
1.超過CHECKPOINT_RETENTION_TIME保留條件,可以刪除的歸檔
DBA_REGISTERED_ARCHIVED_LOG.PURGEABLE='YES’
DBA_LOGMNR_PURGED_LOG
2.絕對不能刪除的redo log,apply啟動時需要
>= DBA_CAPTURE.REQUIRED_CHECKPOINT_SCN 的歸檔
****************
PS:10gR2後,需要用如下存過判斷
Minimum Archived Log Necessary to Restart 10g and 11g Streams Capture Process [ID 290143.1]
----- Begin ckpt_scn_query_10GR2_above.sql -----
prompt ++ Minimum Archive Log Necessary to Restart Capture ++
prompt Note: This query is valid for databases where the capture processes exist for the same source database.
prompt
set serveroutput on
DECLARE
hScn number := 0;
lScn number := 0;
sScn number;
ascn number;
alog varchar2(1000);
begin
select min(start_scn), min(applied_scn) into sScn, ascn
from dba_capture;
DBMS_OUTPUT.ENABLE(2000);
for cr in (select distinct(a.ckpt_scn)
from system.logmnr_restart_ckpt$ a
where a.ckpt_scn <= ascn and a.valid = 1
and exists (select * from system.logmnr_log$ l
where a.ckpt_scn between l.first_change# and l.next_change#)
order by a.ckpt_scn desc)
loop
if (hScn = 0) then
hScn := cr.ckpt_scn;
else
lScn := cr.ckpt_scn;
exit;
end if;
end loop;
if lScn = 0 then
lScn := sScn;
end if;
dbms_output.put_line('Capture will restart from SCN ' || lScn ||' in the following file:');
for cr in (select name, first_time
from DBA_REGISTERED_ARCHIVED_LOG
where lScn between first_scn and next_scn order by thread#)
loop
dbms_output.put_line(cr.name||' ('||cr.first_time||')');
end loop;
end;
/
----- End ckpt_scn_query_10GR2_above.sql -----
****************
3.CHECKPOINT_RETENTION_TIME
預設:60天
查詢:DBA_CAPTURE.CHECKPOINT_RETENTION_TIME
修改:DBMS_CAPTURE_ADM.ALTER_CAPTURE
4.local capture process
源必須開啟歸檔
使用RMAN的backup archivelog all delete input,可以支援upstream需要的日誌保留,只刪除可以刪除的歸檔
5.real-time downstream capture process
源和下流捕獲端必須開啟歸檔
6.archived-log downstream capture process
源必須開啟歸檔
下流捕獲,傳遞到挖掘端的主庫日誌,只有通過指令碼刪除
-----------------------------
異常處理
-----------------------------
預設遇到錯誤,立刻中斷;通過修改Apply程式的DISABLE_ON_ERROR引數,可以遇錯誤繼續執行
一些常見的資料一致性問題導致的Apply程式錯誤,可以修改:ALLOW_DUPLICATE_ROWS,COMPARE_KEY_ONLY
錯誤的ORA-程式碼,在dba_apply中查詢
錯誤事務的資訊,在dba_apply_errors中查詢,使用print_transaction / print_error_id / print_errors 顯示報錯資料
重啟apply程式後,會自動跳過發生錯誤的事務。
使用dbms_apply_adm.delete_error / delete_all_errors 刪除錯誤的事務
使用dbms_apply_adm.execute_error / execute_all_errors 重新執行報錯的事務
錯誤事務不影響CHECKPOINT的推進,也不允許日誌清理
錯誤事務儲存在STREAMS$_APPLY_SPILL_MSGS_PART中,如何清理還需要觀察觀察
如果Apply/Propagation程式異常沒有啟動,那麼Capture將WAITING FOR INACTIVE DEQUEUERS,停止入隊。那麼logmnr已將停止,檢查點推進已將停止
歸檔和REDO清理
-----------------------------
1.超過CHECKPOINT_RETENTION_TIME保留條件,可以刪除的歸檔
DBA_REGISTERED_ARCHIVED_LOG.PURGEABLE='YES’
DBA_LOGMNR_PURGED_LOG
2.絕對不能刪除的redo log,apply啟動時需要
>= DBA_CAPTURE.REQUIRED_CHECKPOINT_SCN 的歸檔
****************
PS:10gR2後,需要用如下存過判斷
Minimum Archived Log Necessary to Restart 10g and 11g Streams Capture Process [ID 290143.1]
----- Begin ckpt_scn_query_10GR2_above.sql -----
prompt ++ Minimum Archive Log Necessary to Restart Capture ++
prompt Note: This query is valid for databases where the capture processes exist for the same source database.
prompt
set serveroutput on
DECLARE
hScn number := 0;
lScn number := 0;
sScn number;
ascn number;
alog varchar2(1000);
begin
select min(start_scn), min(applied_scn) into sScn, ascn
from dba_capture;
DBMS_OUTPUT.ENABLE(2000);
for cr in (select distinct(a.ckpt_scn)
from system.logmnr_restart_ckpt$ a
where a.ckpt_scn <= ascn and a.valid = 1
and exists (select * from system.logmnr_log$ l
where a.ckpt_scn between l.first_change# and l.next_change#)
order by a.ckpt_scn desc)
loop
if (hScn = 0) then
hScn := cr.ckpt_scn;
else
lScn := cr.ckpt_scn;
exit;
end if;
end loop;
if lScn = 0 then
lScn := sScn;
end if;
dbms_output.put_line('Capture will restart from SCN ' || lScn ||' in the following file:');
for cr in (select name, first_time
from DBA_REGISTERED_ARCHIVED_LOG
where lScn between first_scn and next_scn order by thread#)
loop
dbms_output.put_line(cr.name||' ('||cr.first_time||')');
end loop;
end;
/
----- End ckpt_scn_query_10GR2_above.sql -----
****************
3.CHECKPOINT_RETENTION_TIME
預設:60天
查詢:DBA_CAPTURE.CHECKPOINT_RETENTION_TIME
修改:DBMS_CAPTURE_ADM.ALTER_CAPTURE
4.local capture process
源必須開啟歸檔
使用RMAN的backup archivelog all delete input,可以支援upstream需要的日誌保留,只刪除可以刪除的歸檔
5.real-time downstream capture process
源和下流捕獲端必須開啟歸檔
6.archived-log downstream capture process
源必須開啟歸檔
下流捕獲,傳遞到挖掘端的主庫日誌,只有通過指令碼刪除
-----------------------------
異常處理
-----------------------------
預設遇到錯誤,立刻中斷;通過修改Apply程式的DISABLE_ON_ERROR引數,可以遇錯誤繼續執行
一些常見的資料一致性問題導致的Apply程式錯誤,可以修改:ALLOW_DUPLICATE_ROWS,COMPARE_KEY_ONLY
錯誤的ORA-程式碼,在dba_apply中查詢
錯誤事務的資訊,在dba_apply_errors中查詢,使用print_transaction / print_error_id / print_errors 顯示報錯資料
重啟apply程式後,會自動跳過發生錯誤的事務。
使用dbms_apply_adm.delete_error / delete_all_errors 刪除錯誤的事務
使用dbms_apply_adm.execute_error / execute_all_errors 重新執行報錯的事務
錯誤事務不影響CHECKPOINT的推進,也不允許日誌清理
錯誤事務儲存在STREAMS$_APPLY_SPILL_MSGS_PART中,如何清理還需要觀察觀察
如果Apply/Propagation程式異常沒有啟動,那麼Capture將WAITING FOR INACTIVE DEQUEUERS,停止入隊。那麼logmnr已將停止,檢查點推進已將停止
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-763046/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java異常處理筆記Java筆記
- swoft 學習筆記之異常處理筆記
- 筆記:異常處理之report與render筆記
- Java中的異常處理(隨堂筆記)Java筆記
- SpringMVC學習筆記10-異常處理SpringMVC筆記
- Django筆記三十一之全域性異常處理Django筆記
- 異常篇——異常處理
- 記錄Laravel異常處理類Laravel
- 異常處理
- 異常處理 - Go 學習記錄Go
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- Streams 流處理
- 異常處理機制(二)之異常處理與捕獲
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- Python零基礎學習筆記(二十八)——異常處理Python筆記
- C++語言程式設計筆記 - 第12章 - 異常處理C++程式設計筆記
- NodeJS之異常處理NodeJS
- JAVA_異常處理Java
- React Native 異常處理React Native