跟蹤文件通常都是因為通過DBMS_MONITOR(在Oracle Database 9i Relese 2)及更早版本中則是ALTER SESSION SET SQL_TRACE=TRUE啟用了跟蹤的結(jié)果,或者是通過10046事件使用擴展的跟蹤工具生成的,如下
若羌網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
這些跟蹤文件包含與診斷和性能有關(guān)的信息。它們對于了解數(shù)據(jù)庫應(yīng)用的內(nèi)部工作有著非凡的意義。在一個正常運行的數(shù)據(jù)庫中,你會經(jīng)??吹竭@些跟蹤文件,而且遠比看到其他類型的跟蹤文件多得多。
1文件位置
不論是使用DBMS_MONITOR、SQL_TRACE還是擴展的跟蹤工具,Oracle都會在數(shù)據(jù)庫服務(wù)器主機的以下兩個位置生成一個跟蹤文件。
如果使用專用服務(wù)器連接,會在user_dump_dest參數(shù)指定的目錄中生成跟蹤文件。
如果使用共享服務(wù)器連接,則會在background_dump_dest參數(shù)指定的目錄中生成跟蹤文件。
注意:11g版本中background_dump_dest和user_dump_dest參數(shù)將要被廢棄掉,雖然還可以使用這兩個參數(shù)進行查詢但可以使用使用新的參數(shù)或視圖進行查詢。
使用show parameter dump_dest命令來查看目錄,也可以直接查詢V$PARAMETER視圖,或查詢新的V$DIAG_INFO視圖。
V$DIAG_INFO是Oracle Database 11g新增的視圖,這在較早的版本中還沒有。它是訪問新增ADR工具所用跟蹤信息的一個更容易的接口。
Oracle Database 11g調(diào)整了很多文件的默認存儲位置,使它們組織得更好一些,從而能更容易地記錄對Oracle的服務(wù)請求。其中最重要的行包括下面兩項:
Diag Trace:這是Oracle Database 11g中跟蹤文件(包括后臺和用戶轉(zhuǎn)儲目標)所在的位置。
Default Trace File:這是當(dāng)前會話的跟蹤文件名。在較早的版本中,這個文件名可能很難得到。在Oracle Database 11g中,只需要對V$DIAG_INFO簡單的查詢就可以返回這個文件的完全限定文件名。
2命名約定
Oracle中跟蹤文件的命名約定總在變化,示例如下:
跟蹤文件名 | 數(shù)據(jù)庫版本 |
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。
跟蹤文件名中的數(shù)字是專用服務(wù)器的進程ID,可以從V$PROCESS視圖得到。
Oracle Database 11g能方便使用V$DIAG_INFO視圖,在該版本之前,實際(假設(shè)使用專用服務(wù)器模式)需要訪問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';
如果文件存在就可以通過名字訪問它。只有在啟用跟蹤后才能出現(xiàn)跟蹤文件。在Windows平臺上要把/換成\。
3對跟蹤文件加標記
有一種辦法可以對跟蹤文件“加標記”,這樣即便無權(quán)訪問V$PROCESS和V$SESSION,也能找到跟蹤文件。假設(shè)你能讀取user_dump_dest目錄,就可以使用會話參數(shù)tracefile_identifier。采用這種方法可以為跟蹤文件名增加一個可以唯一標識的串:
可以看到,跟蹤文件還是采用標準的
參考《Oracle 9i 10g 11g編程藝術(shù) 深入數(shù)據(jù)庫體系結(jié)構(gòu) 》