1. 程式人生 > >oracle中Job定期執行儲存過程重新整理物化檢視並記錄異常(我的物化檢視不能自己刷)

oracle中Job定期執行儲存過程重新整理物化檢視並記錄異常(我的物化檢視不能自己刷)

(一)問題:

最近一個專案,我們的系統中需要處理老資料,但是有一些客觀限制:(都是Oracle11.2.0.2)

(1)這些老資料儲存在人家的資料庫中

(2)這些老資料還會持續更新

(3)不能動人家的資料庫

(4)我們需要針對人家的資料庫中的兩張表做左連結

最終我們決定用DBLink建立到改老資料庫的資料庫連結,然後建立一個物化檢視,該物化檢視5分鐘更新一次,給予兩個表的左連結,所以只能採用complete的重新整理方式。

但是工作了幾天之後,我通過select * from user_jobs發現我的物化檢視不再自動更新了,failure失敗的次數為16次,不知道是不是因為我們每天下班都會將老資料庫以及我們系統用到的新資料庫都關閉的原因。

(二)解決方案:

不管了,我決定建立一個Job,定時執行一個儲存過程,在這個儲存過程中來重新整理這個物化檢視,並且將異常資訊記錄到資料庫表中:

1 建立存放異常資訊的資料庫表:


2 建立儲存過程重新整理物化檢視:


3 建立Job定時執行儲存過程:


如果要刪除Job,用remove命令,傳入Job號(通過select * from user_jobs檢視)即可。

這下可以等幾天看看刷這個物化檢視到底有些什麼異常發生了。