首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle审计跟踪以获取在上一次事务中更新的列列表

Oracle审计跟踪以获取在上一次事务中更新的列列表
EN

Stack Overflow用户
提问于 2016-09-06 09:04:14
回答 1查看 904关注 0票数 0

考虑一个模式下的表(学生),比如说候选人(而不是DBA):

学生 {RollNumber : VARCHAR2(10), 名称: VARCHAR2(100), CLass : VARCHAR2(5), }

让我们假设表已经包含了一些有效的数据。

我执行了一个update查询来修改Student表的名称和类

代码语言:javascript
复制
UPDATE STUDENT SET Name = 'ASHWIN' , CLASS = 'XYZ' 
WHERE ROLLNUMBER = 'AQ1212'

后面是另一个更新查询,在该查询中,我正在更新其他一些字段。

代码语言:javascript
复制
UPDATE STUDENT SET Math_marks = 100 ,PHY_marks , CLASS = 'XYZ' 
WHERE ROLLNUMBER = 'AQ1212'

因为我在两个不同的查询中修改了不同的列。我需要获取在上一次事务中更新的特定列列表。我确信oracle必须在某些表日志中维护它,DBA可以访问这些日志。但我没有DBA的权限。

我所需要的只是在模式候选项下的上次事务中更新的列列表,i不具有DBA权限。

请给我一些建议。

注意:在这里,我提到了一个简单的表。但实际上,我有8-10个表,我需要对这些表进行审计,其中一个关键因素可以说,ROLLNUMBER为所有其他表都执行一个外键。编写触发器对于所有表来说都是一个复杂的过程。因此,如果有其他方法获取相同的信息,请帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-06 11:27:32

“我确信oracle必须在DBA可以访问的某些表日志中维护这一点。”

事实上,不是默认的。审计跟踪维护起来非常昂贵,因此Oracle什么都不做。它让我们决定我们要审计什么(操作、对象、粒度),然后对这些事情进行审计。

Oracle需要DBA访问才能启用内置功能,因此无论如何这可能会排除它的可能性。

审计是一个非常广泛的话题,有很多事情需要考虑和配置。Oracle文档将安全手册中的一大部分用于审计。找到这里的审计简介。对于监视特定列的更新,您要讨论的是细粒度审计。了解更多信息

“我有8-10张表.写触发器对所有表来说都是复杂的。”

不一定。触发器将彼此相似,因此您可以使用数据字典视图USER_TAB_COLUMNS构建代码生成器,以自定义一些通用的样板文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39344899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档