我有一个Java / Hibernate / Spring应用程序,启用了oracle的审计(11g非集群),并且它似乎已正确配置。
但是,有些条目没有写入SYS.AUD $。
这是我的情景:
我有一个在Oracle上执行8次插入的事务,由hibernate的showsql显示,实际上写入了数据库。
对于给定的表,我有一个AUDIT INSERT RULE BY ACCESS,并且,我希望在给定事务的Oracle AUDIT上看到8个审计条目,但我只记录了4个插入。 有时候会记录5个条目,有时候会记录3个条目。
我设法追查到这种行为与hibernate.jdbc.batch_size属性值有关。
在所描述的场景中,该值设置为10.
如果我将值更改为0但是禁用jdbc批处理,一切都按预期工作,我总是得到8个插入审核日志。
我认为它可能是ojdbc驱动程序的一个错误,但即使在我升级到最新版本之后该错误仍然存在。
禁用jdbc批处理对我来说不是一个选项。这是一个错误吗?有关如何克服这个问题的任何想法?
答案 0 :(得分:1)
我认为它与Direct-Path INSERT有关。如果您使用FGA,(我认为)将不会发生直接路径INSERT,以便审计始终有效。我认为你必须选择一个 - 直接路径INSERT或审计。
为什么需要jdbc批处理?这是什么类型的应用程序?你是否打开和关闭了性能测试?