sqlplus 之跟蹤文件+警告文件
oracle數(shù)據(jù)庫(kù)(以及應(yīng)用服務(wù)器和oracle應(yīng)用)都是可以充分測(cè)量的,數(shù)據(jù)庫(kù)中這種測(cè)量性反應(yīng)在以下幾個(gè)方面:
V$視圖????????????????大多數(shù)V$視圖都包含"調(diào)試"信息
審計(jì)命令????????????可以指定數(shù)據(jù)庫(kù)要記錄哪些事件以便日后分析
資源管理器(dbms_resource_manager) ????允許對(duì)數(shù)據(jù)庫(kù)中的資源(cpu、I/O等)實(shí)現(xiàn)微管理
oracle"事件"????????基于oracle事件,能讓oracle生成所需的跟蹤或診斷信息
dbms_trace????????這是pl/sql引擎中的一個(gè)工具,它會(huì)全面的記錄存儲(chǔ)過(guò)程的調(diào)用樹(shù)、所產(chǎn)生的異常,以及遇到的錯(cuò)誤
數(shù)據(jù)庫(kù)事件觸發(fā)器? ? 這些觸發(fā)器(如on servererror)允許你監(jiān)控和記錄你覺(jué)得"意外"或非正常的情況
sql_trace????????? ? 這個(gè)sql跟蹤工具還可以采用一種擴(kuò)展方式使用,即通過(guò)10046 oracle事件
請(qǐng)求的跟蹤文件
一般跟蹤文件都是因?yàn)樵O(shè)置了sql_trace=true生成的結(jié)果,或者通過(guò)10046事件使用擴(kuò)展的跟蹤工具生成的:
sys@ORCL>alter?session?set?events ??2??'10046?trace?name?context?forever,level?12'; 會(huì)話已更改。
1.文件位置
不論使用sql_trace還是擴(kuò)展的跟蹤工具,oracle都會(huì)在數(shù)據(jù)庫(kù)服務(wù)器主機(jī)的以下兩個(gè)位置生成一個(gè)跟蹤文件:
專用服務(wù)器連接--在user_dump_dest參數(shù)指定的目錄中生成跟蹤文件
共享服務(wù)器連接--在background_dump_dest參數(shù)指定的目錄中生成跟蹤文件
sys@ORCL>select?name,value?from?v$parameter?where?name?like?'%dump_dest%' ??2??/ NAME -------------------------------------------------------------------------------- VALUE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------- background_dump_dest d:appadministratordiagrdbmsorclorcltrace user_dump_dest d:appadministratordiagrdbmsorclorcltrace core_dump_dest d:appadministratordiagrdbmsorclorclcdump
如果無(wú)法訪問(wèn)v$parameter視圖,還可以使用dbms_utility來(lái)訪問(wèn)大多數(shù)(但不是全部)參數(shù)的值:
least_privs@ORCL>declare ??2??l_string?varchar2(255); ??3??l_dummy?number; ??4??begin ??5???l_dummy?:=?dbms_utility.get_parameter_value ??6??('background_dump_dest',?l_dummy,l_string); ??7??dbms_output.put_line('background:'||l_string); ??8???l_dummy?:=?dbms_utility.get_parameter_value ??9??('user_dump_dest',l_dummy,l_string); ?10??dbms_output.put_line('user:'||l_string); ?11??end; ?12??/ background:d:appadministratordiagrdbmsorclorcltrace user:d:appadministratordiagrdbmsorclorcltrace PL/SQL?過(guò)程已成功完成。
2.命名約定
文件名的第一部分是oracle_sid
文件名的第二部分是ora
跟蹤文件名中的數(shù)字是專用服務(wù)器的進(jìn)程id,可以從v$process視圖中得到
因?yàn)?,在?shí)際中(假設(shè)使用專用服務(wù)器模式),需要訪問(wèn)四個(gè)視圖:
v$parameter? ? 查找user_dump_dest指定的跟蹤文件位置
v$process????? ? 查找進(jìn)程ID
v$session????? ? 正確的標(biāo)識(shí)其他視圖中的會(huì)話信息
v$instance? ? 得到oracle_sid
scott@ORCL>alter?session?set?sql_trace=true; 會(huì)話已更改。 scott@ORCL>select?c.value||'/'||d.instance_name|| ??2??'_ora_'||a.spid||'.trc'trace ??3??from?v$process?a,??v$session?b,?v$parameter?c???,v$instance?d ??4??where?a.addr=b.paddr ??5??and?b.audsid=userenv('sessionid') ??6??and?c.name='user_dump_dest' ??7??/ TRACE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------- d:appadministratordiagrdbmsorclorcltrace/orcl_ora_4404.trc
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í)的串:
scott@ORCL>alter?session?set?tracefile_identifier='Look_For_Me'; 會(huì)話已更改。 scott@ORCL>alter?session?set?sql_trace=true; 會(huì)話已更改。
針對(duì)內(nèi)部錯(cuò)誤生成的跟蹤文件
它們對(duì)oracle support有用。
如果得到內(nèi)部錯(cuò)誤,修改這個(gè)錯(cuò)誤的唯一辦法就是提交一個(gè)iTAR
----------------------------------------------------------------------
告警日志文件
是一類特殊的跟蹤文件(trace?file),命名一般為alert_
告警日志位置在ORACLE?10g中,BACKGROUND_DUMP_DEST參數(shù)確定了告警日志的位置,但是告警日志的文件名無(wú)法修改,告警日志的名稱為:alert_