[英]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.