考虑一个模式下的表(学生),比如说候选人(而不是DBA):
学生 {RollNumber : VARCHAR2(10), 名称: VARCHAR2(100), CLass : VARCHAR2(5), … … … }
让我们假设表已经包含了一些有效的数据。
我执行了一个update查询来修改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的权限。
我所需要的只是在模式候选项下的上次事务中更新的列列表,i不具有DBA权限。
请给我一些建议。
注意:在这里,我提到了一个简单的表。但实际上,我有8-10个表,我需要对这些表进行审计,其中一个关键因素可以说,ROLLNUMBER为所有其他表都执行一个外键。编写触发器对于所有表来说都是一个复杂的过程。因此,如果有其他方法获取相同的信息,请帮助我。
发布于 2016-09-06 11:27:32
“我确信oracle必须在DBA可以访问的某些表日志中维护这一点。”
事实上,不是默认的。审计跟踪维护起来非常昂贵,因此Oracle什么都不做。它让我们决定我们要审计什么(操作、对象、粒度),然后对这些事情进行审计。
Oracle需要DBA访问才能启用内置功能,因此无论如何这可能会排除它的可能性。
审计是一个非常广泛的话题,有很多事情需要考虑和配置。Oracle文档将安全手册中的一大部分用于审计。找到这里的审计简介。对于监视特定列的更新,您要讨论的是细粒度审计。了解更多信息。
“我有8-10张表.写触发器对所有表来说都是复杂的。”
不一定。触发器将彼此相似,因此您可以使用数据字典视图USER_TAB_COLUMNS构建代码生成器,以自定义一些通用的样板文本。
https://stackoverflow.com/questions/39344899
复制相似问题