1

我有一个启用了 oracle 审计(11g 非集群)的 Java/Hibernate/Spring 应用程序,它似乎配置正确。

但是,某些条目并未写入 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 批处理对我来说不是一个选项。这是一个错误吗?关于如何克服这个问题的任何想法?

4

1 回答 1

1

我认为它与 Direct-Path INSERT 有关。如果您使用 FGA,(我认为)Direct-Path INSERT 将不会发生,因此审核始终有效。我认为您将不得不选择一个 - Direct-Path INSERT 或审计。

为什么需要 jdbc 批处理?这是什么类型的应用程序?您是否在开启和关闭的情况下进行了性能测试?

于 2013-01-09T20:11:31.567 回答