2016-04-06 2 views
1

У меня есть триггер аудита, используемый для управления версиями, где мы отслеживаем все модификации объекта oracle (12c). Как я могу получить «новое» имя объекта в рамках переименования (через «изменить» или «переименовать»)? Несмотря на то, что я запускаю триггер до или после «ALTER или RENAME или DDL ON DATABASE», я вижу «старое» имя в ORA_DICT_OBJ_NAME.Oracle 12C Audit Trigger On Rename

ответ

1

Вы можете использовать функцию ORA_SQL_TXT, чтобы поймать инструкцию триггера (через параметр out out), а затем извлечь имя нового объекта.

редактирования: Я заменил ORA_SQL_TEXT с ORA_SQL_TXT;

+1

Спасибо! Я смог сделать эту работу! если ora_sysevent = 'RENAME', то \t Объявление \t \t n PLS_INTEGER; \t \t sql_text sys.dbms_standard.ora_name_list_t; \t начало \t \t n: = ora_sql_txt (sql_text); \t \t FOR i IN 1..n LOOP \t \t \t v_obj_original: = v_obj_original || SQL_TEXT (я); \t \t END LOOP; \t исключение \t когда другие тогда \t \t v_obj_original: = 'Исключение получения DDL:' || SQLCODE || '-' || SQLERRM || 'at' || TO_CHAR (SYSDATE, 'HH24: MI'); \t end; end if; – Christine