1. 程式人生 > >Oracle的跟蹤文件(trace file)

Oracle的跟蹤文件(trace file)

oracle 跟蹤文件

跟蹤文件通常都是因為通過DBMS_MONITOR(在Oracle Database 9i Relese 2)及更早版本中則是ALTER SESSION SET SQL_TRACE=TRUE啟用了跟蹤的結果,或者是通過10046事件使用擴展的跟蹤工具生成的,如下

技術分享

這些跟蹤文件包含與診斷和性能有關的信息。它們對於了解數據庫應用的內部工作有著非凡的意義。在一個正常運行的數據庫中,你會經常看到這些跟蹤文件,而且遠比看到其他類型的跟蹤文件多得多。

1 文件位置

不論是使用DBMS_MONITORSQL_TRACE還是擴展的跟蹤工具,Oracle都會在數據庫服務器主機的以下兩個位置生成一個跟蹤文件。

  • 如果使用專用服務器連接,會在user_dump_dest參數指定的目錄中生成跟蹤文件。

  • 如果使用共享服務器連接,則會在background_dump_dest參數指定的目錄中生成跟蹤文件。

註意:11g版本中background_dump_destuser_dump_dest參數將要被廢棄掉,雖然還可以使用這兩個參數進行查詢但可以使用使用新的參數或視圖進行查詢。

使用show parameter dump_dest命令來查看目錄,也可以直接查詢V$PARAMETER

視圖,或查詢新的V$DIAG_INFO 視圖

技術分享

技術分享

V$DIAG_INFOOracle Database 11g新增的視圖,這在較早的版本中還沒有。它是訪問新增ADR工具所用跟蹤信息的一個更容易的接口。

Oracle Database 11g調整了很多文件的默認存儲位置,使它們組織得更好一些,從而能更容易地記錄對Oracle的服務請求。其中最重要的行包括下面兩項:

  • Diag Trace:這是Oracle Database 11g中跟蹤文件(包括後臺和用戶轉儲目標)所在的位置。

  • Default Trace File:這是當前會話的跟蹤文件名。在較早的版本中,這個文件名可能很難得到。在Oracle Database 11g中,只需要對V$DIAG_INFO簡單的查詢就可以返回這個文件的完全限定文件名。

2命名約定

Oracle中跟蹤文件的命名約定總在變化,示例如下:

跟蹤文件名

數據庫版本

ora_10583.trc

9i Release 1

ora9ir2_ora_1905.trc

9i Release 2

ora10gr2_ora_6793.trc

10g Release 2

ora11gr2_ora_1990.trc

11g Release 2

跟蹤文件名可以分為以下幾個部分。

文件名的第一部分是ORACLE_SID(9i Release 1例外)

文件名的下一部分只有一個ora

跟蹤文件名中的數字是專用服務器的進程ID,可以從V$PROCESS視圖得到。

Oracle Database 11g能方便使用V$DIAG_INFO視圖,在該版本之前,實際(假設使用專用服務器模式)需要訪問4個視圖。

V$PARAMETER:找到USER_DUMP_DEST指定的跟蹤文件位置,找到可能在跟蹤文件名中用到的可選的tracefile_identifier

V$PROCESS:查找進程ID

V$SESSION:正確地標識其他視圖中的會話信息。

V$INSTALCE:得到ORACLE_SID

使用下面的查詢可以生成跟蹤文件名:

SELECT C.VALUE || ‘/‘ || D.INSTANCE_NAME || ‘_ora_‘ || A.SPID || CASE

WHEN E.VALUE IS NOT NULL THEN

‘_‘ || E.VALUE

END || ‘.trc‘ TRACE

FROM V$PROCESS A, V$SESSION B, V$PARAMETER C, V$INSTANCE D, V$PARAMETER E

WHERE A.ADDR = B.PADDR

AND B.SID = USERENV(‘sid‘)

AND C.NAME = ‘user_dump_dest‘

AND E.NAME = ‘tracefile_identifier‘;

技術分享技術分享

如果文件存在就可以通過名字訪問它。只有在啟用跟蹤後才能出現跟蹤文件。在Windows平臺上要把/換成\

3 對跟蹤文件加標記

有一種辦法可以對跟蹤文件“加標記”,這樣即便無權訪問V$PROCESSV$SESSION,也能找到跟蹤文件。假設你能讀取user_dump_dest目錄,就可以使用會話參數tracefile_identifier。采用這種方法可以為跟蹤文件名增加一個可以唯一標識的串:


可以看到,跟蹤文件還是采用標準的<ORACLE_SID>_ora_<PROCESS_ID>格式命名,但是這裏還有為它指定的唯一的串,這樣就能很容易找到跟蹤文件名。


參考《Oracle 9i 10g 11g編程藝術 深入數據庫體系結構 》

本文出自 “DBA Fighting!” 博客,請務必保留此出處http://hbxztc.blog.51cto.com/1587495/1927326

Oracle的跟蹤文件(trace file)