内容
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)}}' [アラートログファイル名]
動作確認
環境
- OS:Red Hat Enterprise Linux Server release 7.2 (Maipo)
- Oracle:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
動作確認
インスタンス名を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'
以上