Найдите таблицы sql, которые были обработаны в рабочем процессе, или извлеките таблицу из V$sql

#sql #oracle11g

Вопрос:

Если я запускаю рабочий процесс переднего плана, как мне найти, для каких таблиц были выполнены транзакции (выберите вставить удалить или обновить)? Я использую Oracle 11g, есть ли способ извлечь имена таблиц из sql_text V$sql ИЛИ v$sqlarea

Комментарии:

1. То, что вы описываете, звучит как аудит. Вы, скорее всего, не найдете то, что ищете в V$SQL; нет никакой гарантии, что в нем будет какая-либо информация, не относящаяся к реальному времени. Даже SQL, созданный несколько секунд назад, может устареть, если ваша база данных занята. Аудит фиксирует столько деталей, сколько вы могли бы пожелать, и является историческим по замыслу.

2. Итак, невозможно ли найти последнюю транзакцию DML(выбрать, обновить, вставить)

3. Таблицы V$ показывают вам только то, что верно в реальном времени, в этот момент. Они могут дать вам представление о том, что находится в кэше библиотеки, но это перезаписывается по мере выполнения нового SQL, поэтому нет никакой гарантии , что через 5 секунд в нем появится информация или что вы увидите такие вещи, как значение переменных привязки. Если вам нужна история транзакций, переменные привязки и другие метаданные, вам нужно либо собрать фактические журналы транзакций (которые не будут включать инструкции select), либо использовать аудит, который фиксирует все, для чего вы его настраиваете.

4. Спасибо, откуда я могу получить журналы или данные аудита. Как мне их запросить

5. Начните с чтения этого для 11g и серьезно подумайте об обновлении до поддерживаемой версии, если это возможно: docs.oracle.com/cd/E11882_01/server.112/e10575/…