Oracle Database のアラートログを時間で串刺しする
LYSITHE TOOLS 003の構想を練っています。
実際に手を動かさずに
頭のなかで利用イメージやユースケースを考えたり
する作業です。
たくさんある工程の中で
ひょっとしたら一番楽しい時間かもしれません。
(実際に作り出すと想定外のエラーが出てくるんですよね)
動作確認するため、
最近インストールした環境(21c)で
アラートログをみてみました。
アラートログがこれ(★は筆者追記)
2021-09-11T04:54:30.247214+00:00 <★-- PDB$SEED(2):Opening pdb with no Resource Manager plan active <★-- Starting background process CJQ0 Completed: ALTER DATABASE OPEN
アラートログと同じ情報が格納されているlog.xmlがこれ(★は筆者追記)
<msg time='2021-09-11T04:54:30.247+00:00' org_id='oracle' comp_id='rdbms' <★-- type='UNKNOWN' level='16' host_id='instance-20210816-oracledb2130' host_addr='10.0.0.166' module='sqlplus@instance-20210816-oracledb2130 (TNS V1-V3)' pid='6932' con_uid='3150230680' con_id='2' con_name='PDB$SEED'> <txt>Opening pdb with no Resource Manager plan active </txt> </msg> <msg time='2021-09-11T04:54:30.663+00:00' org_id='oracle' comp_id='rdbms' <★-- msg_id='ksbs1p_int:6514:1349786505' type='NOTIFICATION' group='process start' level='16' host_id='instance-20210816-oracledb2130' host_addr='10.0.0.166' module='sqlplus@instance-20210816-oracledb2130 (TNS V1-V3)' pid='6932' con_uid='1' con_id='1' con_name='CDB$ROOT'> <txt>Starting background process CJQ0 </txt> </msg> <msg time='2021-09-11T04:54:30.681+00:00' org_id='oracle' comp_id='rdbms' <★-- msg_id='opiexe:4046:2802784106' type='NOTIFICATION' group='admin_ddl' level='16' host_id='instance-20210816-oracledb2130' host_addr='10.0.0.166' module='sqlplus@instance-20210816-oracledb2130 (TNS V1-V3)' pid='6932' con_uid='1' con_id='1' con_name='CDB$ROOT'> <txt>Completed: ALTER DATABASE OPEN </txt> </msg>
log.xmlを別のディレクトリにもっていって、adrciで確認したアラートがこれ(★は筆者追記)
2021-09-11 04:54:29.866000 +00:00 <★--時刻が少しずれている SUPLOG: Set PDB SUPLOG SGA at PDB OPEN, old 0x0, new 0x0 (no suplog) <★--メッセージが若干違う Opening pdb with no Resource Manager plan active Starting background process CJQ0 Completed: ALTER DATABASE OPEN CJQ0 started with pid=53, OS id=7091
微妙に内容が変わっているのがわかります。
ポイントは以下かなと思います。
・アラートログの時刻は、0.5秒間くらいのウィンドウでまとめて情報を出すもよう
・PDB$SEED等のcon_id!=1の情報は、出力テキストが少し変わる模様(con_name + txtタグの情報?)
・アラートログとxmlから出したアラート情報は、タイムスタンプが一致する保証なし
いやらしいですね。
log.xmlをXMLパースして情報を取り出し、
オブジェクト生成する案もあったのですが、
もともと存在するアラートログと時刻と内容が異なるのは
回避したいので却下します。
(ログって、時刻と内容が信用ならないなら、それ以外なに信用すんの?改行?って感じ)
別案ですね。