您好,登錄后才能下訂單哦!
跟蹤文件通常都是因?yàn)橥ㄟ^(guò)DBMS_MONITOR(在Oracle Database 9i Relese 2)及更早版本中則是ALTER SESSION SET SQL_TRACE=TRUE啟用了跟蹤的結(jié)果,或者是通過(guò)10046事件使用擴(kuò)展的跟蹤工具生成的,如下
這些跟蹤文件包含與診斷和性能有關(guān)的信息。它們對(duì)于了解數(shù)據(jù)庫(kù)應(yīng)用的內(nèi)部工作有著非凡的意義。在一個(gè)正常運(yùn)行的數(shù)據(jù)庫(kù)中,你會(huì)經(jīng)??吹竭@些跟蹤文件,而且遠(yuǎn)比看到其他類型的跟蹤文件多得多。
1 文件位置
不論是使用DBMS_MONITOR、SQL_TRACE還是擴(kuò)展的跟蹤工具,Oracle都會(huì)在數(shù)據(jù)庫(kù)服務(wù)器主機(jī)的以下兩個(gè)位置生成一個(gè)跟蹤文件。
如果使用專用服務(wù)器連接,會(huì)在user_dump_dest參數(shù)指定的目錄中生成跟蹤文件。
如果使用共享服務(wù)器連接,則會(huì)在background_dump_dest參數(shù)指定的目錄中生成跟蹤文件。
注意:11g版本中background_dump_dest和user_dump_dest參數(shù)將要被廢棄掉,雖然還可以使用這兩個(gè)參數(shù)進(jìn)行查詢但可以使用使用新的參數(shù)或視圖進(jìn)行查詢。
使用show parameter dump_dest命令來(lái)查看目錄,也可以直接查詢V$PARAMETER視圖,或查詢新的V$DIAG_INFO 視圖。
V$DIAG_INFO是Oracle Database 11g新增的視圖,這在較早的版本中還沒(méi)有。它是訪問(wèn)新增ADR工具所用跟蹤信息的一個(gè)更容易的接口。
Oracle Database 11g調(diào)整了很多文件的默認(rèn)存儲(chǔ)位置,使它們組織得更好一些,從而能更容易地記錄對(duì)Oracle的服務(wù)請(qǐng)求。其中最重要的行包括下面兩項(xiàng):
Diag Trace:這是Oracle Database 11g中跟蹤文件(包括后臺(tái)和用戶轉(zhuǎn)儲(chǔ)目標(biāo))所在的位置。
Default Trace File:這是當(dāng)前會(huì)話的跟蹤文件名。在較早的版本中,這個(gè)文件名可能很難得到。在Oracle Database 11g中,只需要對(duì)V$DIAG_INFO簡(jiǎn)單的查詢就可以返回這個(gè)文件的完全限定文件名。
2命名約定
Oracle中跟蹤文件的命名約定總在變化,示例如下:
跟蹤文件名 | 數(shù)據(jù)庫(kù)版本 |
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 |
跟蹤文件名可以分為以下幾個(gè)部分。
文件名的第一部分是ORACLE_SID(但9i Release 1例外)
文件名的下一部分只有一個(gè)ora。
跟蹤文件名中的數(shù)字是專用服務(wù)器的進(jìn)程ID,可以從V$PROCESS視圖得到。
Oracle Database 11g能方便使用V$DIAG_INFO視圖,在該版本之前,實(shí)際(假設(shè)使用專用服務(wù)器模式)需要訪問(wèn)4個(gè)視圖。
V$PARAMETER:找到USER_DUMP_DEST指定的跟蹤文件位置,找到可能在跟蹤文件名中用到的可選的tracefile_identifier。
V$PROCESS:查找進(jìn)程ID。
V$SESSION:正確地標(biāo)識(shí)其他視圖中的會(huì)話信息。
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';
如果文件存在就可以通過(guò)名字訪問(wèn)它。只有在啟用跟蹤后才能出現(xiàn)跟蹤文件。在Windows平臺(tái)上要把/換成\。
3 對(duì)跟蹤文件加標(biāo)記
有一種辦法可以對(duì)跟蹤文件“加標(biāo)記”,這樣即便無(wú)權(quán)訪問(wèn)V$PROCESS和V$SESSION,也能找到跟蹤文件。假設(shè)你能讀取user_dump_dest目錄,就可以使用會(huì)話參數(shù)tracefile_identifier。采用這種方法可以為跟蹤文件名增加一個(gè)可以唯一標(biāo)識(shí)的串:
可以看到,跟蹤文件還是采用標(biāo)準(zhǔn)的<ORACLE_SID>_ora_<PROCESS_ID>格式命名,但是這里還有為它指定的唯一的串,這樣就能很容易找到跟蹤文件名。
參考《Oracle 9i 10g 11g編程藝術(shù) 深入數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 》
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。