oracleデータベースファイルの転送とトラッキングの整理
6609 ワード
トレースファイル
11 gの後、現在のユーザのtrcファイルを確認するときは、直接v$diag_を使用することができます.intoビューで見る
oradebugを使って追跡します.
基本的な手順の考え方:1、pidまたは会話id oradebug setmypid oradebug setoraphidデータベースpid oradebug setootpidトラッキングプロセスを設定する2、traceファイルサイズoradebu ulimitを設定する無制限3、tracfileを確認するname oradebug tracfile_name 4、イベントoradebug session_を設定します.event 10046 trace name context forever、level 4はセッションレベル10046 oradebug event 10046 trace name context offシステムレベルを有効にします.
その他のまとめ:oradebug helpは、oradebug setmypidを使用して、現在のセッションoradebug setsysspid pidを追跡し、システムセッションoradebug dump system 10を利用してシステムの状態oradebug hanalyze 10を取得し、システムhangの原因を分析する.traceに生成され、原因をさらに分析します.
トラッキングはORA-00 xxxを生成するセッションを追跡する:このORA-000942/ORA-00952を引き起こすセッションを追跡するなら、oradebug event 942 trace name errorstack level 3 oradebug event 952 trace name errorstack 3 alter system set events'942 trace name rorstack 3;
alter sessionまたはalter systemでtraceイベントを設定して、イベントのトレースを行います.
命令形式:alter session set events'[eventnumber]trace name eventname[forever][,level levelnumber]
eventnumber:イベント番号immdediate:直ちに追跡して、alter session文の中でだけ使って、しかもeventnumberとforeverキーワードとeventnameを使うことができません.イベント名、つまりdump構造で、固定のキーワードがあります.eventnameがcontextの場合、コマンドのヘッダはイベント番号eventnumberを使用して追跡foreverを必要とします.イベントはインスタンスまたはセッション期間内で有効で、immediateと一緒にlevelイベントのキーワードレベルを使用することができません.しかし、dumpエラースタック時、レベルが存在しないという説は、レベル別に次のように説明されています.
dumpファイルのヘッダの時:level 1ファイルのヘッダのコントロール項目level 2ファイルのヘッダの最初のオプションlevel 10の完全なファイルのヘッダ、最も詳しい内容
10046イベントのSQL traceを使用する場合:10046はSQLに基づく追跡であり、SQL 0デバッグ禁止イベント1デバッグイベントを追跡するために使用される.各処理されたデータベース呼び出しに対して、SQL文、応答時間、サービス時間処理の行数、処理の行数、論理読みの数、物理読みと書き込みの数、実行計画、およびいくつかの追加情報4が与えられています.レベル1の場合、バインディング変数の追加情報が含まれます.主にデータタイプ、精度、各実行時に使用される値8は同じレベル1であり、待ち時間に関する詳細情報を加える.処理中の各待ち時間のために、待ち時間の名前、持続時間、およびいくつかの追加的なパラメータは、待ち時間のリソース12が同時に起動レベル4とレベル8を示すことができます.
dump buffes 1 buffer header 2 level 1+block header 3 level 2+block contens 4 level 1+hash chain 5 level 2+hash chain 6 level 3+hash chain 8 level 4+users/waiters 9 level 5+users/waiters 10 vell+6
常用dumpコマンド
コントロールファイルalter session set events'immediate trace name controlf level 2'またはoradebug dump controlf 2
ALTER SESSION SET EVENTS‘immediate trace name controlf level’;1ファイルヘッダ情報2 level 1+データベース情報+チェックポイント情報3 level 2+再利用可能節情報10 level 3
データファイル:oradebug dump file_hdrs 10 alter session set events'immediate trace name file_hdrs level 10';
ALTER SESSION SET EVENTS'immediate trace name file_hdrs level n’1制御ファイルのファイルヘッダ情報2 level 1+ファイルヘッダ情報3 level 2+データファイルヘッダ情報10 level 3
redo logファイルalter session set events'immediate trace name redohdr level 2'具体的なレベルは上記の通りです.
dump一時ファイルalter system dump tempfile'/ap/oradaa/BIRD/temp 01.dbf'block 1;
データファイルalter system dump datafile blockは、データブロックalter system dump datafile[|]block min block maxを導出し、連続する複数のデータブロックを導出する.
library cache:alter session set events'immediate trace name library_cache level 10';
heappdump:alter session set events'immediate trace name library_cache level 10';
row_cache:alter session set events'immediate trace name row_cache level 1'
processプロセス情報:alter session set events‘immediate trace name processsate level 10’;
undo header:alter system dump undo header'uSYSSMU 1'
10046イベントSQL追跡詳細
oradebugによりoradebug setorappid 156 oradebug unlimit oradebug event 10046 trace name context forever level 8 oradebug tracfile_name oradebug event 10046 trace name context off
グローバルトラッキングイベント:(パラメータファイルの設定)event=「10046 trace name context forever,level 12」
alter sessionによって現在のセッションを追跡する:altersession set tracfile="10046";追跡符altersession set eventsを設定する;10046 trace name context forever、level 12";alter session set events'10046 trace name contextを開く;クローズ
dbmsmonitorパッケージを通して10046イベントの追跡を行います.
注:tkprofの具体的な使い方は命令ヘルプオプションを見てください.
11 gの後、現在のユーザのtrcファイルを確認するときは、直接v$diag_を使用することができます.intoビューで見る
SYS @ BIRD>select * from v$diag_info;
INST_ID NAME VALUE
---------- ---------------------- --------------------------------------------------
1 Diag Enabled TRUE
1 ADR Base /app/oracle
1 ADR Home /app/oracle/diag/rdbms/bird/BIRD
1 Diag Trace /app/oracle/diag/rdbms/bird/BIRD/trace
1 Diag Alert /app/oracle/diag/rdbms/bird/BIRD/alert
1 Diag Incident /app/oracle/diag/rdbms/bird/BIRD/incident
1 Diag Cdump /app/oracle/diag/rdbms/bird/BIRD/cdump
1 Health Monitor /app/oracle/diag/rdbms/bird/BIRD/hm
1 Default Trace File /app/oracle/diag/rdbms/bird/BIRD/trace/BIRD_ora_14
007.trc
1 Active Problem Count 0
1 Active Incident Count 0
出力項目のDefault Trace Fileの値は、現在のセッションのtrcトラックファイルであり、現在のセッションのtraceイベントを実行する場合、このファイルは対応する情報を記録することができます.oradebugを使って追跡します.
基本的な手順の考え方:1、pidまたは会話id oradebug setmypid oradebug setoraphidデータベースpid oradebug setootpidトラッキングプロセスを設定する2、traceファイルサイズoradebu ulimitを設定する無制限3、tracfileを確認するname oradebug tracfile_name 4、イベントoradebug session_を設定します.event 10046 trace name context forever、level 4はセッションレベル10046 oradebug event 10046 trace name context offシステムレベルを有効にします.
その他のまとめ:oradebug helpは、oradebug setmypidを使用して、現在のセッションoradebug setsysspid pidを追跡し、システムセッションoradebug dump system 10を利用してシステムの状態oradebug hanalyze 10を取得し、システムhangの原因を分析する.traceに生成され、原因をさらに分析します.
トラッキングはORA-00 xxxを生成するセッションを追跡する:このORA-000942/ORA-00952を引き起こすセッションを追跡するなら、oradebug event 942 trace name errorstack level 3 oradebug event 952 trace name errorstack 3 alter system set events'942 trace name rorstack 3;
alter sessionまたはalter systemでtraceイベントを設定して、イベントのトレースを行います.
命令形式:alter session set events'[eventnumber]trace name eventname[forever][,level levelnumber]
eventnumber:イベント番号immdediate:直ちに追跡して、alter session文の中でだけ使って、しかもeventnumberとforeverキーワードとeventnameを使うことができません.イベント名、つまりdump構造で、固定のキーワードがあります.eventnameがcontextの場合、コマンドのヘッダはイベント番号eventnumberを使用して追跡foreverを必要とします.イベントはインスタンスまたはセッション期間内で有効で、immediateと一緒にlevelイベントのキーワードレベルを使用することができません.しかし、dumpエラースタック時、レベルが存在しないという説は、レベル別に次のように説明されています.
dumpファイルのヘッダの時:level 1ファイルのヘッダのコントロール項目level 2ファイルのヘッダの最初のオプションlevel 10の完全なファイルのヘッダ、最も詳しい内容
10046イベントのSQL traceを使用する場合:10046はSQLに基づく追跡であり、SQL 0デバッグ禁止イベント1デバッグイベントを追跡するために使用される.各処理されたデータベース呼び出しに対して、SQL文、応答時間、サービス時間処理の行数、処理の行数、論理読みの数、物理読みと書き込みの数、実行計画、およびいくつかの追加情報4が与えられています.レベル1の場合、バインディング変数の追加情報が含まれます.主にデータタイプ、精度、各実行時に使用される値8は同じレベル1であり、待ち時間に関する詳細情報を加える.処理中の各待ち時間のために、待ち時間の名前、持続時間、およびいくつかの追加的なパラメータは、待ち時間のリソース12が同時に起動レベル4とレベル8を示すことができます.
dump buffes 1 buffer header 2 level 1+block header 3 level 2+block contens 4 level 1+hash chain 5 level 2+hash chain 6 level 3+hash chain 8 level 4+users/waiters 9 level 5+users/waiters 10 vell+6
常用dumpコマンド
コントロールファイルalter session set events'immediate trace name controlf level 2'またはoradebug dump controlf 2
ALTER SESSION SET EVENTS‘immediate trace name controlf level’;1ファイルヘッダ情報2 level 1+データベース情報+チェックポイント情報3 level 2+再利用可能節情報10 level 3
データファイル:oradebug dump file_hdrs 10 alter session set events'immediate trace name file_hdrs level 10';
ALTER SESSION SET EVENTS'immediate trace name file_hdrs level n’1制御ファイルのファイルヘッダ情報2 level 1+ファイルヘッダ情報3 level 2+データファイルヘッダ情報10 level 3
redo logファイルalter session set events'immediate trace name redohdr level 2'具体的なレベルは上記の通りです.
dump一時ファイルalter system dump tempfile'/ap/oradaa/BIRD/temp 01.dbf'block 1;
データファイルalter system dump datafile blockは、データブロックalter system dump datafile[|]block min block maxを導出し、連続する複数のデータブロックを導出する.
library cache:alter session set events'immediate trace name library_cache level 10';
heappdump:alter session set events'immediate trace name library_cache level 10';
row_cache:alter session set events'immediate trace name row_cache level 1'
processプロセス情報:alter session set events‘immediate trace name processsate level 10’;
undo header:alter system dump undo header'uSYSSMU 1'
10046イベントSQL追跡詳細
oradebugによりoradebug setorappid 156 oradebug unlimit oradebug event 10046 trace name context forever level 8 oradebug tracfile_name oradebug event 10046 trace name context off
グローバルトラッキングイベント:(パラメータファイルの設定)event=「10046 trace name context forever,level 12」
alter sessionによって現在のセッションを追跡する:altersession set tracfile="10046";追跡符altersession set eventsを設定する;10046 trace name context forever、level 12";alter session set events'10046 trace name contextを開く;クローズ
dbmsmonitorパッケージを通して10046イベントの追跡を行います.
begin
dbms_monitor.session_trace_enable(session_id => 122,
serial_num => 6734,
waits => true,
binds => false);
end;
SQLトレースをオフにしますbegin
dbms_monitor.session_trace_disable(session_id => 122, serial_num => 6734);
end;
SQLでトレイファイルの位置を調べます.
select s.SID,
s.SERVER,
lower(case
when s.SERVER in ('DEDICATED', 'SHARED') then
i.INSTANCE_NAME || '_' || nvl(pp.SERVER_NAME, nvl(ss.NAME, 'ora')) || '_' ||
p.SPID || '.trc'
else
null
end) as trace_file_name
from v$instance i,
v$session s,
v$process p,
v$px_process pp,
v$shared_server ss
where s.PADDR = p.ADDR
and s.SID = pp.SID(+)
and s.PADDR = ss.PADDR(+)
and s.TYPE = 'USER'
and s.SID = 'your sid'
order by s.SID
現在のセッションのtraceファイルを表示します.select d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||
p.spid || '.trc' trace_file_name
from (select p.spid
from v$mystat m, v$session s, v$process p
where m.statistic# = 1
and s.sid = m.sid
and p.addr = s.paddr) p,
(select t.instance
from v$thread t, v$parameter v
where v.name = 'thread'
and (v.value = 0 or t.thread# = to_number(v.value))) i,
(select value from v$parameter where name = 'user_dump_dest') d
tkprofでtrcファイルをフォーマットするtkprof*.trc*.txt注:tkprofの具体的な使い方は命令ヘルプオプションを見てください.