11.向刷新組中添加復制對象:
begin
dbms_refresh.add (name => ’mvadmin.sh_refresh’,
list => ’SHORACL.CREDIT_CARD ’,lax => true);
end;
/
三.檢查復制進程:
1.查看sys.dba_jobs視圖是否生成了足夠的作業(yè)。
經(jīng)過以上的步驟應(yīng)該有三個作業(yè)分別是清除作業(yè)、調(diào)度作業(yè)和刷新作業(yè),查看視圖的what字段是否有下面的內(nèi)容:
a) declare rc binary_integer; begin rc := sys.dbms_defer_sys.
purge( delay_seconds=>0); end;
b) declare rc binary_integer; begin rc := sys.dbms_defer_sys.
push(destination=>’ORACLSH’, stop_on_error=>FALSE,
delay_seconds=>0, parallelism=>0); end;
c) dbms_refresh.refresh(’"MVADMIN"."SH_REFRESH"’);
如果排除其它系統(tǒng)作業(yè)本例中杭州和武漢的數(shù)據(jù)庫復制建立之后將會有7個作業(yè)(如果為每個復制分別建立刷新組的話),清除作業(yè)始終只有一個。每個復制對應(yīng)一個調(diào)度作業(yè),每個刷新組對應(yīng)一個刷新作業(yè)。
2.查看job_queue_processes參數(shù),確保該參數(shù)不為零(數(shù)據(jù)庫的默認值是零),如果該參數(shù)為零,除非每次手工執(zhí)行刷新,否則系統(tǒng)不會自動刷新復制數(shù)據(jù)。
3.確保復制執(zhí)行之后,觀察sys.dba_jobs視圖的failures字段。如果復制在刷新過程中除錯,Oracle會自動在1分鐘之后再次嘗試刷新,失敗之后再在2分鐘、4分鐘、8分鐘..之后嘗試刷新,直到失敗次數(shù)達到16次或者間隔時間超過作業(yè)設(shè)置的間隔時間,該作業(yè)將被標記為中斷,Oracle不再執(zhí)行該作業(yè)。要重新執(zhí)行改作業(yè)使用dbms_job包的run過程:
begin
dbms_job.run(job_no);
end;
/
job_no 是sys.dba_jobs 的Job字段的值,作業(yè)號。在重新執(zhí)行因出錯而中斷的作業(yè)前,需要手工找到出錯點,并更正。
總結(jié)
本文只是使用了Oracle高級復制中最簡單的功能,Oracle的高級復制還提供可更新視圖和復雜的只讀實體化視圖復制,當然并不是我們都要去用高級復雜強大的功能,在具體應(yīng)用的時候,還要根據(jù)系統(tǒng)功能和性能需求,選擇適當?shù)膹椭萍夹g(shù)。