Dの小部屋

忘れやすい私のメモ帳

Oracleのalert.logを、少し見やすく整形するワンライナー

内容

Oracleのalert.logが、以下のようなフォーマットになっており、日時が分かりにくい。

<日時1>
<  …情報1…  >
<  …情報2…  >
<  …情報3…  >
<日時2>
<  …情報4…  >
<日時3>
<  …情報5…  >
<  …情報6…  >

分かりやすくするため、以下のフォーマットに整形するコマンドを作成する。

<日時1> <  …情報1…  >
<日時1> <  …情報2…  >
<日時1> <  …情報3…  >
<日時2> <  …情報4…  >
<日時3> <  …情報5…  >
<日時3> <  …情報6…  >

コマンド

awk 'begin{t="--fail--"}; {if (match($0, /^... ... .. ..:..:.. ....$/)){t=$0} else {printf("%s | %s\n",t,$0)}}' [アラートログファイル名]

動作確認

環境

動作確認 インスタンス名をTESTとし、アラートログファイル名をalert_TEST.logとする。

▼ 変換前のalert_TEST.logの内容

Sat Sep 03 15:31:58 2016
alter pluggable database all open
Sat Sep 03 15:32:27 2016
Database Characterset for PDB1 is AL32UTF8
Sat Sep 03 15:32:27 2016
Database Characterset for PDB2 is AL32UTF8
Opening pdb PDB2 (4) with no Resource Manager plan active
Pluggable database PDB2 opened read write
Sat Sep 03 15:32:36 2016
Opening pdb PDB1 (3) with no Resource Manager plan active
Pluggable database PDB1 opened read write
Completed: alter pluggable database all open

▼ 実行

awk 'begin{t=""}; {if (match($0, /^... ... .. ..:..:.. ....$/)){t=$0} else {printf("%s | %s\n",t,$0)}}' alert_TEST.log

▼ 結果

Sat Sep 03 15:31:58 2016 | alter pluggable database all open
Sat Sep 03 15:32:27 2016 | Database Characterset for PDB1 is AL32UTF8
Sat Sep 03 15:32:27 2016 | Database Characterset for PDB2 is AL32UTF8
Sat Sep 03 15:32:27 2016 | Opening pdb PDB2 (4) with no Resource Manager plan active
Sat Sep 03 15:32:27 2016 | Pluggable database PDB2 opened read write
Sat Sep 03 15:32:36 2016 | Opening pdb PDB1 (3) with no Resource Manager plan active
Sat Sep 03 15:32:36 2016 | Pluggable database PDB1 opened read write
Sat Sep 03 15:32:36 2016 | Completed: alter pluggable database all open

その他

▼ tailで使用することも可能

tail -f alert_TEST.log | awk 'begin{t="--"}; {if (match($0, /^... ... .. ..:..:.. ....$/)){t=$0} else {printf("%s | %s\n",t,$0)}}'

grepなどでの情報取得時、日時が出るのでわかりやすい。

awk 'begin{t="--"}; {if (match($0, /^... ... .. ..:..:.. ....$/)){t=$0} else {printf("%s | %s\n",t,$0)}}' alert_TEST.log | \
 grep  -e 'Starting ORACLE instance' -e 'Instance shutdown complete'

以上