簡體   English   中英

Oracle Audit Trail獲取在上次交易中更新的列的列表

[英]Oracle Audit Trail to get the list of columns which got updated in last transaction

考慮在名為Candidates(NOT DBA)的模式下的表(學生):

學生
{RollNumber:VARCHAR2(10),
名稱:VARCHAR2(100),
CLass:VARCHAR2(5),
...
...
...
}

讓我們假設該表已經包含一些有效數據。

我執行了一個更新查詢來修改Student表的名稱和類

UPDATE STUDENT SET Name = 'ASHWIN' , CLASS = 'XYZ' 
WHERE ROLLNUMBER = 'AQ1212'

其次是另一個更新查詢,其中我正在更新其他一些字段

UPDATE STUDENT SET Math_marks = 100 ,PHY_marks , CLASS = 'XYZ' 
WHERE ROLLNUMBER = 'AQ1212'

由於我在兩個不同的查詢中修改了不同的列。 我需要獲取在上次交易中更新的特定列列表。 我非常確定oracle必須在某些表日志中維護此設置,DBA可以訪問該表日志。 但是我沒有DBA訪問權限。

我需要的只是在上一個事務中在架構候選沒有我具有DBA權限的列的更新列表

請給我一些建議。

注意 :在上面我提到了一個簡單的表。 但是實際上我有8-10個表,我需要對其進行審計,其中一個關鍵因素可以說ROLLNUMBER對所有其他表都充當外鍵。 對於所有表而言,編寫觸發器都會很復雜。 因此,如果有其他獲取方法,請幫助我。

“我很確定oracle必須在某些表日志中維護此設置,DBA可以訪問該表日志。”

實際上,不,不是默認值。 審計跟蹤是一項非常昂貴的維護工作,因此Oracle不會立即采取任何措施。 它使我們可以決定要審核的內容(操作,對象,粒度),然后為這些內容開啟審核。

Oracle需要DBA訪問權才能啟用內置功能,因此無論如何仍可能需要排除它。

審計是一個非常廣泛的主題,需要考慮和配置許多事項。 Oracle文檔將《安全性》手冊的很大一部分專門用於審核。 此處找到審計簡介 為了監視特定列的更新,您要說的是“精細審核”。 了解更多


“我有8-10張桌子。寫觸發器對於所有桌子來說都是很復雜的。”

不必要。 觸發器將彼此相似,因此您可以使用數據字典視圖USER_TAB_COLUMNS來構建代碼生成器,以自定義一些通用樣板文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM