2013-04-11 46 views
0

假設數據庫中有n個表。無論在數據庫中的任何表上進行插入,更新還是刪除,都必須在名爲「Audit_Trail」的表中捕獲,我們在審計跟蹤表中具有以下列。plsql中DML命令的系統級觸發器

SERVER_NAME AT_date AT_time TABLE_NAME 列名 行動 OLD_VALUE NEW_VALUE

上表中的服務器,在其列,其上被捕獲的日期和時間的需求。此外,「動作」欄跟蹤動作是插入,更新還是刪除,我們還必須捕獲舊值和新值。

那麼最好的方法是什麼?我們可以創建一個數據庫級觸發器,在任何插入,更新或刪除的情況下觸發觸發器嗎?

回答

0

最好的方法是使用Oracle自己的審計功能。

AUDIT ALL ON DEFAULT BY ACCESS; 

http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG392

在迴應評論...

沒有什麼不尋常的希望審計對數據庫中的表的每次改變 - 因此有已經在系統中提供的功能爲了做到這一點。最好使用觸發器,因爲它不能被輕鬆繞過。但是,如果您想要使用這種預先提供的,功能強大且易於使用的功能,您可能需要稍微妥協一下您的特定需求,但回報將是一個優秀的解決方案,它將使用代碼和配置與其他數千個Oracle系統。

+0

假設數據庫中有n個表。無論在數據庫中的任何表上進行插入,更新還是刪除,都必須在名爲「Audit_Trail」的表中捕獲,我們在審計跟蹤表中具有以下列。我想以這種方式,我可以不,如果我可以得到所有的細節到一個單獨的表Server_Name AT_date AT_time Table_name Column_name操作Old_value New_Value – user2001117 2013-04-11 10:50:24

+0

可以在dba水平完成 – user2001117 2013-04-11 10:51:39

+0

好吧我將檢查鏈接並恢復回你。 – user2001117 2013-04-11 10:58:51