注册
以考促学---DCP审计功能使用分享
专栏/培训园地/ 文章详情 /

以考促学---DCP审计功能使用分享

漠云 2024/07/08 695 2 0
摘要

第一次机考的时候还是大意了,随随便便写了个txt文件就当作业交上去了,对达梦本来也不熟悉,光靠平时管oracle的老本儿,挂了也是情理之中。
继续学习一周准备补考,意外发现了审计功能一个疑似bug的地方。
开审计
sp_set_enable_audit(2);
sp_audit_object('UPDATE', 'DMTEST', 'DMTEST', 'PROD', 'ALL');
验证
update DMTEST.PROD set "Code"='Database' where "ProdID"=1001;
select username, objname operation, succ_flag, sql_text from v$auditrecords order by optime;
----结果是38条,ok

输入一条错误的update语句
update DMTEST.PROD set "Code"='Database' where "ID"=1001;
----执行报错
select username, objname operation, succ_flag, sql_text from v$auditrecords order by optime;
----结果还是38条,错误的语句并没有被审计记录

再执行一条正确的update语句
update DMTEST.PROD set "Code"='Database' where "ProdID"=1001;
-----执行成功
select username, objname operation, succ_flag, sql_text from v$auditrecords order by optime;
----结果是40条,那条错误的语句也被记录了,只是延迟了。

得出一个小小的结论:如果一直输入错误的语句,那么审计记录中不会存在。直到执行一次正确的语句,那么之前所有语句都会进入审计记录。

哈~有点延迟,算bug不

2024.7.4补充一下
1.执行一条错误的update语句,不提交,audit不到这条语句
2.执行一条正确的update语句,不提交,可以audit这条语句
3.执行一条错误的update语句,提交,可以audit这条语句
4.执行一条错误的语句,随后执行一条正确的语句,不提交,可以audit以上两条语句。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服