Oracleで実行されたDDLをログ出力する(ENABLE_DDL_LOGGING)

Oracleで実行されたDDLをログ出力する方法です。

ENABLE_DDL_LOGGINGという設定をTRUEにすることで、実行されたDDLをOracleのログに出力することができます。

まずは、現在の設定の確認。

FALSEになっているので、TRUEに変更します。

再度、設定を確認する。

TRUEになっています。この状態でなんでもいいので、DDL文を実行します。

記録されるのは、以下のDDL文。

  • ALTER/CREATE/DROP/TRUNCATE CLUSTER
  • ALTER/CREATE/DROP FUNCTION
  • ALTER/CREATE/DROP INDEX
  • ALTER/CREATE/DROP OUTLINE
  • ALTER/CREATE/DROP PACKAGE
  • ALTER/CREATE/DROP PACKAGE BODY
  • ALTER/CREATE/DROP PROCEDURE
  • ALTER/CREATE/DROP PROFILE
  • ALTER/CREATE/DROP SEQUENCE
  • CREATE/DROP SYNONYM
  • ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE
  • ALTER/CREATE/DROP TRIGGER
  • ALTER/CREATE/DROP TYPE
  • ALTER/CREATE/DROP TYPE BODY
  • DROP USER
  • ALTER/CREATE/DROP VIEW

ログは以下のパスに出力されます。↓

例えば、ddl_orcl.logにはこんな感じでDDLがログ出力される。

余談だが、この機能を使った理由。。。。とある製品がDBを内包しており、製品のバージョンアップに伴い、テーブル定義を変更する処理を実行していた。バージョンアップの過程でどう変更しているのか、気になって仕込みました。