アーカイブログ運用を行っていない場合やアーカイブログ運用を行っていてもバッチ業務中などでリカバリを適用しない運用の場合には、rdbrcvコマンドのLOADモードにより、退避データ取得時点の状態にデータベースをリカバリします。そのあと、アプリケーションを再実行することにより、最新状態までデータベースをリカバリすることができます。
“2.4.2.3 アプリケーションの再実行との協調によるリカバリ”の“図2.6 アプリケーションの再実行との協調によるリカバリの流れ”にそったリカバリ操作の手順とリカバリ操作例を以下に示します。
ここでは、アーカイブログ運用のバッチ業務などで、リカバリを適用しない運用中に、入出力障害が発生した場合を想定し、ディスク配置については“5.2.1 データベーススペースをローデバイスに割り付けている場合のリカバリ”を例にしています。
(1) 対象データベースを“更新抑止”に変更します。 ――― rdbrtrコマンド (2) 対象DSIの退避データを取得します。 ――― rdbdmpコマンド (Nオプション) (3) 対象データベースの“更新抑止”を解除します。 ――― rdbrlsコマンド (4) バッチ業務を実行します。 ★ 媒体障害発生 (5) 事前に作成しておいたディスク上のデータベーススペー ス情報一覧から破壊されているディスク上のデータベース スペース名を確認します。 (6) 媒体障害が発生したボリュームに割り付けられたデータ ――― rdbinfコマンド ベーススペースより、リカバリ対象のDSIを把握します。 (pオプション) (7) 媒体障害が発生したボリュームに割り付けられたデータ ――― rdbexspcコマンド ベーススペースを切り離します。 (mdetachオプション) (8) 障害ボリュームを取り換えます。 ――― CE作業 (9) ボリュームの構成情報をリカバリします。 ―――【RHEL-AS4の場合】 partedコマンドかつ rawコマンド 【RHEL5またはRHEL6の場合】 partedコマンド (10) 切り離したデータベーススペースを接続します。 ――― rdbexspcコマンド (mattachオプション) (11) 対象DSIを“アクセス禁止”にします。 ――― rdbinhコマンド (12) 対象DSIをリカバリします。 ――― rdbrcvコマンド (LOADモード) (13) バッチ業務を再実行します。
リカバリ操作例を以下に示します。
$ rdbrtr -r -i 在庫管理DB.在庫表DSI1 $ rdbrtr -r -i 在庫管理DB.在庫表DSI2 $ rdbdmp -i 在庫管理DB.在庫表DSI1 -f stock1@/backup/rdb -e -y -N $ rdbdmp -i 在庫管理DB.在庫表DSI2 -f stock1@/backup/rdb -e -y -N $ rdbrls -r -i 在庫管理DB.在庫表DSI1 $ rdbrls -r -i 在庫管理DB.在庫表DSI2 バッチ業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev/raw/raw10' 物理ブロック番号='99' 原因 コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名 ='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブロック 番号='99' (システム名=rdbsys1) オペレータ操作 … 破壊されているディスク上のデータベーススペース名を確認する。 $ rdbinf -p 在庫管理DB.DBSP_1 -a $ rdbinf -p 在庫管理DB.DBSP_2 -a $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_2 CE作業 … 障害ボリュームの交換およびボリューム構成情報のリカバリ $ rdbexspc -mattach -p 在庫管理DB.DBSP_1 $ rdbexspc -mattach -p 在庫管理DB.DBSP_2 $ rdbinh -i 在庫管理DB.在庫表DSI1 $ rdbinh -i 在庫管理DB.在庫表DSI2 $ rdbrcv -L -i 在庫管理DB.在庫表DSI1 -f stock1@/backup/rdb -w /home/rdb1/work rdb: INFO: qdg02654i:rdbrcvコマンドの処理を開始します (システム名=rdbsys1) rdb: INFO: qdg14116i:指定した表のDSIに属するインデックスのDSIの復旧を開始します (システム名=rdbsys1) rdb: INFO: qdg02595i:指定した資源'在庫管理DB.在庫表DSI1'に属するインデックスの DSI'在庫管理DB.製品名IXDSI1'のリカバリが正常終了しました (システム名=rdbsys1) rdb: INFO: qdg02655i:rdbrcvコマンドの処理が正常終了しました (システム名=rdbsys1) $ rdbrcv -L -i 在庫管理DB.在庫表DSI2 -f stock2@/backup/rdb -w /home/rdb1/work rdb: INFO: qdg02654i:rdbrcvコマンドの処理を開始します (システム名=rdbsys1) rdb: INFO: qdg14116i:指定した表のDSIに属するインデックスのDSIの復旧を開始します (システム名=rdbsys1) rdb: INFO: qdg02595i:指定した資源'在庫管理DB.在庫表DSI2'に属するインデックスの DSI'在庫管理DB.製品名IXDSI2'のリカバリが正常終了しました (システム名=rdbsys1) rdb: INFO: qdg02655i:rdbrcvコマンドの処理が正常終了しました (システム名=rdbsys1) バッチ業務の再実行
注意
アーカイブログ運用を行っていない場合、アーカイブログ運用を行っていてバッチ業務などでリカバリを適用しない運用の場合およびOBJECT構造のDSIの退避データを取得する場合は、rdbdmpコマンドの前後で更新抑止の設定と解除を行ってください。また、rdbdmpコマンド実行時にはNオプションを指定してください。ただし、この方法で取得した退避データでは、rdbrcvコマンドのFWモードによって、最新状態にまでリカバリすることはできません。