繁体   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