LoginSignup
9
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-03

内容

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'

以上

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10