Прежде всего, пожалуйста, решите:
- Имеются ли какие-либо прямые операции записи для доступа к вашей таблице вне хранимых процедур?
- Хотите ли вы сохранить фактическую таблицу и таблицу аудита? полная синхронизация?
Если вы планируете выполнять действия по записи только из хранимой процедуры - просто создайте новую таблицу и запишите операции аудита сразу после каждого действия. Это наиболее явный вариант, потому что здесь нет никаких скрытых вызовов. И обе таблицы могут быть полностью синхронизированы (если вы заключите свой оператор в транзакцию)
Если вы хотите заполнить основную таблицу и таблицу аудита в одной транзакции, однако insert / update / delete / merge вызываются из Java / . Net и др. c., Затем вы должны добавить триггер. Пожалуйста, проверьте здесь, как это можно сделать .
Если вы можете жить с задержкой между главной таблицей и таблицей аудита, отметьте опцию FLASHBACK ARCHIVE . Он работает с Oracle Журнал транзакций и заполняет таблицу аудита с небольшой задержкой. Однако это работает на отдельной работе, что означает, что операции вставки / обновления / удаления / слияния не замедляются из-за таблицы аудита (обратите внимание, что Oracle всегда имеет журнал транзакций, например, вы просто добавляете еще одну работу в обработать это). Так что это самый быстрый вариант.