
■ Oracleのバックアップ
Oracleのバックアップをデータポンプ・エクスポートで取得しているのですが、様々な理由から異常終了することがあります。そして、何故か異常終了を検出できません。
エクスポートはUNIX(Solaris)で実行しています。エクスポートを実行するシェルの中で処理の終了コードは確認しているのですが、異常終了(警告終了なのかな?)しても終了コードが正常(0)になっているんですよね。
うーむ、どうしたものやら。
■ ログによる確認
UNIX側でチェックするのが筋だとは思うのですが、取得したバックアップ(dmpファイル)とログはWindowsサーバに転送しているので、Windowsサーバ側でログの内容を精査するエラーチェックを行うことにしました。
どっかでも書いた気がしますが、UNIXのシェルはどうにも苦手です。
なお、判定は「正常に完了しました」という文字が含まれていて、かつ「ORA-」という文字が含まれていなければ正常と判断することにしました。少なくとも、私が経験した範囲ではこれでエラーを拾いきれるはずです。
ちなみに、ログ自体が作成されない異常もあり得るので、事前にログファイルの存在チェックもしておきます(もちろん、ログが無ければ異常です)。
チェックは、PowerShellで行います。
# ログのパスを設定
[System.String]$textLog = 'D:¥EXPDP.log'
# ログの存在チェック
if ((Test-Path $expLog -eq $false) {
throw 'expdp異常(ログ無し)'
}
# ログファイル中に「正常終了メッセージ」が存在しない場合はエラー
if ((Get-Content $expLog | Select-String -SimpleMatch '正常に完了しました' -quiet) -ne $True) {
throw 'expdp異常(正常終了メッセージ無し)'
}
# ログファイル中にORACLEのエラーコード「ORA-******」が存在する場合はエラー
if ((Get-Content $expLog | Select-String 'ORA-' -quiet) -eq $True) {
throw 'expdp異常(ORA-あり)'
}
・存在チェック:powerShellでファイル操作をしてみた
・文字検索:a href="http://harikofu.blog.fc2.com/blog-entry-970.html" target="_blank" title="PowerShellでファイルから文字検索チェック">PowerShellでファイルから文字検索チェック
■ ログのサンプル
なお、データポンプのログはこんなのです。
;;;
Export: Release 11.2.0.2.0 - Production on 金 2月 6 05:03:17 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
;;;
接続先: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning option
"HARIKOFU"."EXPDP_HARIKOFU_3"を起動しています: HARIKOFU/********@hari parfile=/sysadm/csh/oracle/expdp_HARIKOFU.pfile
BLOCKSメソッドを使用して見積り中です...
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
BLOCKSメソッドを使用した見積り合計: 15.62 GB
オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
オブジェクト型TABLE_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
. . "HARIKOFU"."ABCD" 8.975 GB 13907833行がエクスポートされました
. . "HARIKOFU"."SOID" 2.823 GB 4552055行がエクスポートされました
マスター表"HARIKOFU"."EXPDP_HARIKOFU"は正常にロード/アンロードされました
******************************************************************************
HARIKOFU.EXPDP_HARIKOFUに設定されたダンプ・ファイルは次のとおりです:
/sysadm/csh/oracle/EXPDP_HARIKOFU.dmp
ジョブ"HARIKOFU"."EXPDP_HARIKOFU_3"が05:14:03で正常に完了しました
これは正常終了パターン。異常終了パターンのログは手元になかったのでサンプルはありません。
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


