Dump Trace File For Troubleshooting

トラブルを解決するためトレースファイルがよく必要とされる。
取得方法は

該当セッション自身、一般のエラー
ALTER SESSION SET SQL_TRACE=ON;
 
-- 問題のSQL文を実行する
...
 
ALTER SESSION SET SQL_TRACE=OFF;
該当セッション自身、高度のエラー(ラッチ、待機など情報が必要)
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
 
-- 問題のSQL文を実行する
...
 
ALTER SESSION SET EVENTS '10046 trace name context off';

レベルの詳細は下記のとおり。

レベル 内容
LEVEL 1 SQL_TRACE機能と同等
LEVEL 4 LEVEL 1の情報に追加して、バインド変数情報が出力される
LEVEL 8 LEVEL 1の情報に追加して、待機イベント情報が出力される
LEVEL 12 LEVEL 1の情報に追加して、バインド変数情報、待機イベント情報が出力される
アプリケーションに組み込む場合

場合によって、直接問題文の発行する前に手で発行できないことがあるため、
アプリケーション、プロシージャに組み込むことができる。

execute 'ALTER SESSION SET EVENTS ''10046 trace name context forever, level 12'' ';
 
-- 問題のSQL文を実行する
...
 
execute 'ALTER SESSION SET EVENTS ''10046 trace name context off'' ';
他のセッションのトレースファイルの取得
--セッションのSIDSERIAL#の取得
SQL> SELECT sid,serial#,username,program,machine,status,last_call_et FROM v$session
  2  WHERE username='SCOTT';
 
  SID    SERIAL# USERNAME     PROGRAM                           MACHINE      STATUS   LAST_CALL_ET
----- ---------- ------------ --------------------------------- ------------ -------- ------------
   10          2 SCOTT        sqlplus@linuxtest (TNS V1-V3)     linux006     INACTIVE            2
 
--セッションのトレース
EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(10,12,TRUE);
 
-- 問題のSQL文を実行する
...
 
EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(10,12,FALSE);
 
--セッションに対してレベルを指定してトレース
EXECUTE DBMS_SYSTEM.SET_EV(10,2,10046,12,'');
 
-- 問題のSQL文を実行する
...
 
EXECUTE DBMS_SYSTEM.SET_EV(10,2,10046,0,'');
トレースファイルの特定
トレースファイルの特定

http://www.builder.com.cn/2007/0910/497699.shtml

-- under 11g
SELECT    a.VALUE || b.symbol || c.instance_name || '_ora_' || d.spid || '.trc' trace_file
  FROM (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') a,
       (SELECT SUBSTR (VALUE, -6, 1) symbol FROM v$parameter
         WHERE NAME = 'user_dump_dest') b,
       (SELECT instance_name FROM v$instance) c,
       (SELECT spid FROM v$session s, v$process p, v$mystat m
         WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d
;
-- after 11g
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';

あるいは初期化パラメータのuser_dump_destの指定したフォルダを時間順でみれば、最新のほうに並んでいるはず。

SQL> show parameter user_dump_dest
 
NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
user_dump_dest                       string
/u01/oracle/app/oracle/admin/sid/udump
 
host
 
[oracle@linuxtest ~]$ cd /u01/oracle/app/oracle/admin/sid/udump
[oracle@ linuxtest udump]$ ls -ltr
 
...
 
-rw-r-----  1 oracle oinstall      2541  8月 21 16:34 dbsid_ora_10101.trc
-rw-r-----  1 oracle oinstall       943  8月 21 16:43 dbsid_ora_14837.trc
-rw-r-----  1 oracle oinstall      1361  8月 21 16:43 dbsid_ora_10773.trc
page_revision: 6, last_edited: 1250841358|%e %b %Y, %H:%M %Z (%O ago)