oracle database 12cよりADR(自動診断レポジトリ)に実行されたDDLだけを抽出するDDLログが追加されました。
SQL> show parameter enable_ddl_logging
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_ddl_logging boolean FALSE
SQL> alter system set enable_ddl_logging=true scope=both;
システムが変更されました。
SQL> show parameter enable_ddl_logging
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_ddl_logging boolean TRUE
DDLログを有効にするにはenable_ddl_loggingパラメータをtrueに設定します。
SQL> CREATE TABLE test1 (id NUMBER);
表が作成されました。
SQL> ALTER TABLE test1 ADD CONSTRAINT test1_pk PRIMARY KEY (id);
表が変更されました。
SQL> DROP TABLE test1 PURGE;
表が削除されました。
色々なDDLを実行してみます。
[oracle@DB01 ~]$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/log/
[oracle@DB01 log]$ ls
ddl ddl_orcl.log debug imdb test
[oracle@DB01 log]$ cat ddl_orcl.log
Mon Oct 03 00:38:46 2016
diag_adl:drop user u1
diag_adl:alter database close immediate
diag_adl:alter database dismount
diag_adl:ALTER DATABASE OPEN
diag_adl:CREATE TABLE test1 (id NUMBER)
diag_adl:ALTER TABLE test1 ADD CONSTRAINT test1_pk PRIMARY KEY (id)
diag_adl:DROP TABLE test1 PURGE
「$ORACLE_BASE/diag/rdbms/(DB名)/(インスタンス名)/log/」内にDDLログが出力されます。
例えばddl_orcl.logには実行したDDL文が記録されます。
時間は記録されていません。
[oracle@DB01 log]$ cd ddl
[oracle@DB01 ddl]$ cat log.xml
<msg time='2016-10-03T00:38:46.615+09:00' org_id='oracle' comp_id='rdbms'
msg_id='opiexe:4415:2946163730' type='UNKNOWN' group='diag_adl'
level='16' host_id='DB01' host_addr='172.17.9.198'
version='1'>
<txt>drop user u1
</txt>
</msg>
さらにddlフォルダのlog.xmlはDDLがxml形式で記録されます。
こちらは実行時間、実行クライアント、実行DDL文が記録されます。
[oracle@DB01 ddl]$ adrci exec="set editor cat;show log -l ddl"
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
Output the results to file: /tmp/utsout_10546_13996_1.ado
[oracle@DB01 ddl]$ 2016-10-03 00:38:46.615000 +09:00
drop user u1
2016-10-03 00:39:17.929000 +09:00
alter database close immediate
2016-10-03 00:39:26.789000 +09:00
alter database dismount
2016-10-03 00:41:22.680000 +09:00
ALTER DATABASE OPEN
2016-10-03 00:42:02.616000 +09:00
CREATE TABLE test1 (id NUMBER)
2016-10-03 00:42:28.966000 +09:00
ALTER TABLE test1 ADD CONSTRAINT test1_pk PRIMARY KEY (id)
2016-10-03 00:42:39.486000 +09:00
DROP TABLE test1 PURGE
またadrclコマンドからDDLログを参照することも可能です。
こちらでは実行時間とDDL文が出力されます。
SQL> show parameter enable_ddl_logging
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_ddl_logging boolean FALSE
SQL> alter system set enable_ddl_logging=true scope=both;
システムが変更されました。
SQL> show parameter enable_ddl_logging
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_ddl_logging boolean TRUE
DDLログを有効にするにはenable_ddl_loggingパラメータをtrueに設定します。
SQL> CREATE TABLE test1 (id NUMBER);
表が作成されました。
SQL> ALTER TABLE test1 ADD CONSTRAINT test1_pk PRIMARY KEY (id);
表が変更されました。
SQL> DROP TABLE test1 PURGE;
表が削除されました。
色々なDDLを実行してみます。
[oracle@DB01 ~]$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/log/
[oracle@DB01 log]$ ls
ddl ddl_orcl.log debug imdb test
[oracle@DB01 log]$ cat ddl_orcl.log
Mon Oct 03 00:38:46 2016
diag_adl:drop user u1
diag_adl:alter database close immediate
diag_adl:alter database dismount
diag_adl:ALTER DATABASE OPEN
diag_adl:CREATE TABLE test1 (id NUMBER)
diag_adl:ALTER TABLE test1 ADD CONSTRAINT test1_pk PRIMARY KEY (id)
diag_adl:DROP TABLE test1 PURGE
「$ORACLE_BASE/diag/rdbms/(DB名)/(インスタンス名)/log/」内にDDLログが出力されます。
例えばddl_orcl.logには実行したDDL文が記録されます。
時間は記録されていません。
[oracle@DB01 log]$ cd ddl
[oracle@DB01 ddl]$ cat log.xml
<msg time='2016-10-03T00:38:46.615+09:00' org_id='oracle' comp_id='rdbms'
msg_id='opiexe:4415:2946163730' type='UNKNOWN' group='diag_adl'
level='16' host_id='DB01' host_addr='172.17.9.198'
version='1'>
<txt>drop user u1
</txt>
</msg>
さらにddlフォルダのlog.xmlはDDLがxml形式で記録されます。
こちらは実行時間、実行クライアント、実行DDL文が記録されます。
[oracle@DB01 ddl]$ adrci exec="set editor cat;show log -l ddl"
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
Output the results to file: /tmp/utsout_10546_13996_1.ado
[oracle@DB01 ddl]$ 2016-10-03 00:38:46.615000 +09:00
drop user u1
2016-10-03 00:39:17.929000 +09:00
alter database close immediate
2016-10-03 00:39:26.789000 +09:00
alter database dismount
2016-10-03 00:41:22.680000 +09:00
ALTER DATABASE OPEN
2016-10-03 00:42:02.616000 +09:00
CREATE TABLE test1 (id NUMBER)
2016-10-03 00:42:28.966000 +09:00
ALTER TABLE test1 ADD CONSTRAINT test1_pk PRIMARY KEY (id)
2016-10-03 00:42:39.486000 +09:00
DROP TABLE test1 PURGE
またadrclコマンドからDDLログを参照することも可能です。
こちらでは実行時間とDDL文が出力されます。

コメント