Oracle の監査 (11g 非クラスター化) が有効になっている Java/Hibernate/Spring アプリケーションを使用していますが、適切に構成されているようです。
ただし、一部のエントリは SYS.AUD$ に書き込まれません。
これが私のシナリオです:
Oracle で 8 つの挿入を実行するトランザクションがあります。これは休止状態の showsql によって表示され、実際には DB に書き込まれます。
特定のテーブルに対して AUDIT INSERT RULE BY ACCESS があり、特定のトランザクションに対して Oracle の AUDIT で 8 つの監査エントリが表示されることを期待していましたが、ログに記録された挿入は 4 つだけでした。5 つのエントリがログに記録されることもあれば、3 つのエントリがログに記録されることもあります。
この動作が hibernate.jdbc.batch_size プロパティ値に関連していることを突き止めることができました。
説明されているシナリオでは、値は 10 に設定されています。
ただし、値を 0 に変更すると、jdbc バッチ処理が無効になり、すべてが期待どおりに機能し、常に 8 つの挿入監査ログが取得されます。
ojdbc ドライバーのバグかと思いましたが、最新バージョンにアップグレードしてもバグが消えませんでした。
jdbc バッチを無効にすることは、私にとって選択肢ではありません。バグですか?これを克服する方法について何か考えはありますか?