fc2ブログ

(元)社内SEの徒然なる日記

Oracleのデータポンプ・エクスポートの結果をPowerShellでチェック

■ 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 ---


スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する