Oracle массовая вставка отсутствующих записей аудита

У меня есть приложение Java / Hibernate / Spring с включенным аудитом Oracle (11g некластеризованным), и, похоже, оно правильно настроено.

Однако некоторые записи не записываются в SYS.AUD $.

Вот мой сценарий:

У меня есть транзакция, которая выполняет 8 вставок в Oracle, которые отображаются с помощью showql hibernate и фактически записываются в БД.

У меня есть правило AUDIT INSERT BY ACCESS для данной таблицы, и я ожидал увидеть 8 записей аудита в Oracle AUDIT для данной транзакции, но у меня было зарегистрировано только 4 вставки. Иногда регистрируется 5 записей, а иногда 3 жесткие.

Мне удалось выяснить, что такое поведение связано со значением свойства hibernate.jdbc.batch_size.

В описанном сценарии было установлено значение 10.

Однако если я изменю значение на 0, что отключит пакетную обработку jdbc, все будет работать так, как ожидалось, и я всегда получаю 8 журналов аудита вставки.

Я думал, что это может быть ошибка драйвера ojdbc, но ошибка не исчезла даже после того, как я обновился до последней версии.

Отключение пакета jdbc для меня не вариант. Это ошибка? Есть мысли о том, как это преодолеть?


person Luiz Henrique Martins Lins Rol    schedule 09.01.2013    source источник


Ответы (1)


Я думаю, это связано с Direct-Path INSERT. Если вы используете FGA, (я думаю) Direct-Path INSERT не произойдет, поэтому аудит всегда работает. Думаю, вам придется выбрать один - Direct-Path INSERT или audit.

Зачем вам нужна пакетная обработка jdbc? Что это за приложение? Вы проводили тестирование производительности с его включением и выключением?

person RMAN Express    schedule 09.01.2013
comment
Спасибо за подсказку, я исследую это. Относительно вашего вопроса о пакете jdbc: это действительно огромное веб-приложение, и я просто не могу провести тест производительности всех его функций, чтобы узнать, используют ли они пакетирование jdbc или нет. Я знаю некоторые места, которые действительно используются, и у них есть проблемы с производительностью. - person Luiz Henrique Martins Lins Rol; 10.01.2013
comment
Не могу найти как его отключить. Вы знаете какой-нибудь простой способ? После прочтения документации о Direct-Path INSERT я запускаю принудительное ведение журнала ALTER DATABASE в надежде, что все операторы будут регистрироваться, даже если я работаю в параллельном режиме (чего я еще не знаю), но все равно получаю ту же ошибку. Я буду копать посильнее - person Luiz Henrique Martins Lins Rol; 10.01.2013
comment
Нет, вы не можете переопределить собственное поведение Oracle. У вас не может быть обоих способов (аудит и вставка прямого пути). Вам нужно выбрать один. ... и имел бы недостаток в производительности Откуда вы знаете? Я думал, ты не проводил настоящий тест производительности? Вот мое обоснованное предположение после 20 лет работы администратором баз данных. Ваше использование группировки 5-10 строк не будет замечено в приложении. Конечно, единственный способ узнать это - проверить это. - person RMAN Express; 10.01.2013
comment
Извините, я неправильно выразился. Я не могу найти, как его отключить, и попытался установить параметр принудительного ведения журнала. Я думаю, мне не нужен прямой путь (жестко, мне придется это проверить). Вы можете помочь мне отключить его? Я также подумаю об отключении пакетной обработки, но мне придется обсудить это с другими членами команды (и, возможно, с техническим директором). - person Luiz Henrique Martins Lins Rol; 10.01.2013
comment
Я также написал в OTN и получил один хороший ответ. Пожалуйста, посмотрите, поможет ли это вам понять проблему forum.oracle.com / форумы / - person Luiz Henrique Martins Lins Rol; 10.01.2013