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'' ';
他のセッションのトレースファイルの取得
--セッションのSIDとSERIAL#の取得 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)





