データベースの媒体が破壊された場合のデータベースのリカバリ方法について説明します。
データベースの媒体に入出力障害が発生した場合、システムメッセージ“qdg13039u”が出力されます。この場合のリカバリは、メディアリカバリにより行います。
なお、ここでの媒体障害とは、ETERNUS上に割り当てたデータベースにまったくアクセスできない状態となり、上記システムメッセージが出力される障害のことです。
媒体障害が発生した場合の、障害の検出からリカバリまでの手順を説明します。
運用ごとのリカバリ操作の手順や操作例の詳細は、“15.4.2.2 アーカイブログ適用によるリカバリ”以降で説明します。
システムメッセージの確認および障害ディスクの特定
障害ディスク上のデータベーススペースの切離し
障害ディスクのリカバリ
障害データベーススペースのリカバリ
在庫管理DBに属する在庫表DSI1、製品名IXDSI1、在庫表DSI2、製品名IXDSI2が、ETERNUS上のボリュームに以下のように配置されている場合を例にとって、検出方法と確認方法を説明します。
DBS名: データベーススペース名
データベースのアクセス中に媒体障害が発生した場合、Symfoware/RDBは、以下のメッセージを出力します。このメッセージから、媒体障害が発生したデータベース名、データベーススペース名およびデータベーススペースが割り付けられているデバイス名を確認してください。
rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を 検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名 ='/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス 禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブロック番号='99' (システム名=rdbsys1)
AdvancedCopy Managerの構成管理機能を用いて、障害が発生したディスクに他のデータベーススペースが割り付けられていないか確認してください。
参照
詳細は、“ETERNUS SF AdvancedCopy Manager 運用手引書”または“ETERNUS SF AdvancedCopy Manager 運用ガイド”を参照してください。
媒体障害からのリカバリを行うためにはディスクを交換します。交換作業を行う間、そのディスク上のすべてのデータベーススペースに対するアクセスを抑止する必要があります。そのため、Symfoware/RDBから一時的にそれらのデータベーススペースを切り離します。切り離されたすべてのデータベーススペースには、アクセス禁止状態が設定されます。データベーススペースの切離しは、rdbexspcコマンドのmdetachオプションにより行います。
$ rdbexspc -mdetach -p 在庫管理DB.DBSP_1
CE作業により、ETERNUSのディスクをリカバリします。
Advanced Backup Controllerでは、媒体障害が発生したディスク上に存在したデータベーススペースを、swstrestoreコマンドによりリカバリします。
$ swstrestore -g 2 /dev_symfoware/raw10
参照
swstrestoreコマンドの指定方法の詳細については、“ETERNUS SF AdvancedCopy Manager 運用手引書”または“ETERNUS SF AdvancedCopy Manager 運用ガイド”を参照してください。
ロググループ単位など複数のデータベーススペースのリカバリが必要な場合に、特定のデータベーススペースを優先してリカバリすることができます。
特定のデータベーススペースのリカバリは、swstrestoreコマンドによりログを適用しないリカバリを実施したあと、rdbmrrcvコマンドによりアーカイブログを適用して行います。
swstrestoreコマンドでは、リカバリ処理のみを行いデータベーススペースのリカバリは行わないオプションnologを指定します。さらに、リカバリ処理で利用するためのリカバリ制御ファイルの出力先ディレクトリを指定します。
$ swstrestore -nolog /rcvctl /dev_symfoware/raw10
参照
swstrestoreコマンドの指定方法の詳細については、“ETERNUS SF AdvancedCopy Manager 運用手引書”または“ETERNUS SF AdvancedCopy Manager 運用ガイド”を参照してください。
swstrestoreコマンドによりリカバリ処理の行われたデータベーススペースを、rdbmrrcvコマンドによりアーカイブログを適用してリカバリします。
この例では、swstrestoreコマンドで取り出したリカバリ制御ファイルを指定して、データベーススペース名DBSP_1のリカバリを行っています。
$ rdbmrrcv -M -o -p 在庫管理DB.DBSP_1 -f /rcvctl -w /tmp
参照
rdbmrrcvコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。
アーカイブログ適用によるリカバリについて説明します。
ETERNUSのEC機能を利用する場合
ETERNUSのEC(Equivalent Copy)機能を利用したAdvanced Backup Controllerのオンラインバックアップを利用し、アーカイブログと連携した運用を行っている場合のリカバリ操作の手順とリカバリ操作例を以下に示します。リカバリ時に使用する退避データは、通常ダンプを使用してください。
ここではDBSP_1とDBSP_2の2つのデータベーススペースにより構成され、ロググループ名が“grp1”であるデータベースをAdvanced Backup Controllerで運用した例を示しています。
DBSP: データベーススペース
(1) 同期処理を行います。 ――― swststartsyncコマンド (2) 同期処理の完了を確認します。 ――― swstsyncstatコマンド (3) Advanced Backup Controllerにより退避データを ――― swstbackupコマンド 取得します。 (nオプション) (4) 次回の退避データ取得に備えて、同期処理を行い ――― swststartsyncコマンド ます。 (5) 目的業務を実行します。 (6) 同期処理の完了を確認します。 ――― swstsyncstatコマンド (7) アーカイブログファイルの強制切替えを行います。 ――― rdblogコマンド (Sオプションかつ aオプションかつ gオプション) (8) Advanced Backup Controller により退避データを ――― swstbackupコマンド 取得します。 (nオプション) (9) 次回の退避データ取得に備えて、同期処理を行い ――― swststartsyncコマンド ます。 (10) アーカイブログを破棄します。 ――― rdblogコマンド (Rオプションかつ aオプションかつ gオプション) (11) 目的業務を実行します。 ★ 媒体障害発生 (12) デバイス異常の影響範囲を確認します。 他ボリュームがある場合 → (13)へ 他ボリュームがない場合 → (14)へ (13) ディスク上のデータベーススペース名を確認し ――― rdbexspcコマンド ます。 (mpオプション) (14) 媒体障害が発生したデータベーススペースを切り ――― rdbexspcコマンド 離します。 (mdetachオプション) (15) 媒体障害が発生していたデータベーススペースの ――― swstcancelsyncコマンド 同期処理をキャンセルします。 (16) ETERNUSのディスクをリカバリします。 ――― CE作業 (17) 媒体障害が発生していたデータベーススペースを ――― swstrestoreコマンド メディアリカバリモードで最新状態にリカバリします。 (gオプション) (18) 次回の退避データ取得に備えて、媒体障害が発生 ――― swststartsyncコマンド していたデータベーススペースの同期処理を行います。 (19) 目的業務を再実行します。
以下の例は、デバイス異常の影響範囲に他ボリュームがない場合を想定しています。
$ swststartsync -n grp1 $ swstsyncstat -n grp1 $ swstbackup -n grp1 $ swststartsync -n grp1 目的業務の実行 $ swstsyncstat -n grp1 $ rdblog -S -a -g grp1 $ swstbackup -n grp1 $ swststartsync -n grp1 $ rdblog -R -a -g grp1 目的業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブロック番号='99' (システム名=rdbsys1) デバイス異常の影響範囲を確認 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 $ swstcancelsync /dev_symfoware/raw10 CE作業 … ETERNUSのディスクリカバリ $ swstrestore -g 1 /dev_symfoware/raw10 /dev_symfoware/raw10 swstrestore completed $ swststartsync /dev_symfoware/raw10 目的業務の再実行
ETERNUSのOPC機能を利用する場合
ETERNUSのOPC(One Point Copy)機能を利用したAdvanced Backup Controllerのオンラインバックアップを利用し、アーカイブログと連携した運用を行っている場合のリカバリ操作の手順とリカバリ操作例を以下に示します。リカバリ時に使用する退避データは、通常ダンプを使用してください。
ここではDBSP_1とDBSP_2の2つのデータベーススペースにより構成され、ロググループ名が“grp1”であるデータベースをAdvanced Backup Controllerで運用した例を示しています。
DBSP: データベーススペース
(1) Advanced Backup Controllerにより退避データを ――― swstbackupコマンド 取得します。 (nオプション) (2) 目的業務を実行します。 (3) アーカイブログファイルの強制切替えを行います。 ――― rdblogコマンド (Sオプションかつ aオプションかつ gオプション) (4) Advanced Backup Controller により退避データを ――― swstbackupコマンド 取得します。 (nオプション) (5) アーカイブログを破棄します。 ――― rdblogコマンド (Rオプションかつ aオプションかつ gオプション) (6) 目的業務を実行します。 ★ 媒体障害発生 (7) デバイス異常の影響範囲を確認します。 他ボリュームがある場合 → (8)へ 他ボリュームがない場合 → (9)へ (8) ディスク上のデータベーススペース名を確認し ――― rdbexspcコマンド ます。 (mpオプション) (9) 媒体障害が発生したデータベーススペースを切り ――― rdbexspcコマンド 離します。 (mdetachオプション) (10) ETERNUSのディスクをリカバリします。 ――― CE作業 (11) 媒体障害が発生していたデータベーススペースを ――― swstrestoreコマンド メディアリカバリモードで最新状態にリカバリします。 (gオプション) (12) 目的業務を再実行します。
以下の例は、デバイス異常の影響範囲に他ボリュームがない場合を想定しています。
$ swstbackup -n grp1 目的業務の実行 $ rdblog -S -a -g grp1 $ swstbackup -n grp1 $ rdblog -R -a -g grp1 目的業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブロック番号='99' (システム名=rdbsys1) デバイス異常の影響範囲を確認 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 CE作業 … ETERNUSのディスクリカバリ $ swstrestore -g 1 /dev_symfoware/raw10 /dev_symfoware/raw10 swstrestore completed 目的業務の再実行
参考
アーカイブログ適用によるリカバリでは、バックアップ時点へのリカバリおよびrdbsetrpコマンドで設定したリカバリポイントまでのリカバリも可能です。
詳細については、“ETERNUS SF AdvancedCopy Manager 運用手引書”または“ETERNUS SF AdvancedCopy Manager 運用ガイド”を参照してください。
Advanced Backup Controllerを利用したリカバリは、ロググループまたはデータベーススペース単位に行われます。このため、iオプション指定でrdbsetrpコマンドを実行することによってDSI単位に設定したリカバリポイントを、Advanced Backup Controllerを利用したリカバリ時に使用した場合、リカバリポイント設定時点の状態を保証できません。
以下の運用の場合は、swstrestoreコマンドにより、退避データ取得時点の状態にデータベースをリカバリします。
バッチ業務中などでリカバリを適用しない運用の場合
対象データベースにOBJECT構造のDSIが存在する場合
リカバリ時に使用する退避データは、参照ダンプを使用してください。
ETERNUSのEC機能を利用する場合
ここではDBSP_1とDBSP_2の2つのデータベーススペースにより構成され、ロググループ名が“grp1”であるデータベースをETERNUSのEC(Equivalent Copy)機能を利用してAdvanced Backup Controllerで運用を行っている場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
DBSP: データベーススペース
(1) 対象データベーススペース群に存在するすべて ――― rdbrtrコマンド のDSIに“更新抑止”の利用規定を設定します。 (rwオプション) (2) 同期処理を行います。 ――― swststartsyncコマンド (3) 同期処理の完了を確認します。 ――― swstsyncstatコマンド (4) Advanced Backup Controllerにより退避データを ――― swstbackupコマンド 取得します。 (nオプションかつ kオプション) (5) 次回の退避データ取得に備えて、同期処理を行い ――― swststartsyncコマンド ます。 (6) 目的業務を実行します。 ★ 媒体障害発生 (7) デバイス異常の影響範囲を確認します。 他ボリュームがある場合 → (8)へ 他ボリュームがない場合 → (9)へ (8) ディスク上のデータベーススペース名を確認します。 ――― rdbexspcコマンド (mpオプション) (9) 媒体障害が発生したデータベーススペースを切り ――― rdbexspcコマンド 離します。 (mdetachオプション) (10) 媒体障害が発生していたデータベーススペースの ――― swstcancelsyncコマンド 同期処理をキャンセルします。 (11) ETERNUSのディスクをリカバリします。 ――― CE作業 (12) 同時にリカバリするデータベーススペースを“アク ――― rdbinhコマンド セス禁止”にします。 (pオプション) (13) 媒体障害が発生していたデータベーススペース ――― swstrestoreコマンド をポイントリカバリモードでバックアップ取得 (gオプション) 時点にリカバリします。 (14) 次回の退避データ取得に備えて、媒体障害が ――― swststartsyncコマンド 発生していたデータベーススペースの同期処理 を行います。 (15) 目的業務を再実行します。
以下の例は、デバイス異常の影響範囲に他ボリュームがない場合を想定しています。
$ rdbrtr -i 在庫管理DB.在庫表DSI1 -rw $ rdbrtr -i 在庫管理DB.在庫表DSI2 -rw $ swststartsync -n grp1 $ swstsyncstat -n grp1 $ swstbackup -n -k grp1 $ swststartsync -n grp1 目的業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブ ロック番号='99' (システム名=rdbsys1) デバイス異常の影響範囲を確認 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 $ swstcancelsync /dev_symfoware/raw10 CE作業 … ETERNUSのディスクリカバリ $ rdbinh -p 在庫管理DB.DBSP_2 $ swstrestore -g 1 /dev_symfoware/raw10 /dev_symfoware/raw10 swstrestore completed $ swststartsync /dev_symfoware/raw10 目的業務の再実行
ETERNUSのOPC機能を利用する場合
ここではDBSP_1とDBSP_2の2つのデータベーススペースにより構成され、ロググループ名が“grp1”であるデータベースをETERNUSのOPC(One Point Copy)機能を利用してAdvanced Backup Controllerで運用を行っている場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
DBSP: データベーススペース
(1) 対象データベーススペース群に存在するすべて ――― rdbrtrコマンド のDSIに“更新抑止”の利用規定を設定します。 (rwオプション) (2) Advanced Backup Controllerにより退避データを ――― swstbackupコマンド 取得します。 (nオプションかつ kオプション) (3) 目的業務を実行します。 ★ 媒体障害発生 (4) デバイス異常の影響範囲を確認します。 他ボリュームがある場合 → (5)へ 他ボリュームがない場合 → (6)へ (5) ディスク上のデータベーススペース名を確認します。 ――― rdbexspcコマンド (mpオプション) (6) 媒体障害が発生したデータベーススペースを切り ――― rdbexspcコマンド 離します。 (mdetachオプション) (7) ETERNUSのディスクをリカバリします。 ――― CE作業 (8) 同時にリカバリするデータベーススペースを“アク ――― rdbinhコマンド セス禁止”にします。 (pオプション) (9) 媒体障害が発生していたデータベーススペース ――― swstrestoreコマンド をポイントリカバリモードでバックアップ取得 (gオプション) 時点にリカバリします。 (10) 目的業務を再実行します。
以下の例は、デバイス異常の影響範囲に他ボリュームがない場合を想定しています。
$ rdbrtr -i 在庫管理DB.在庫表DSI1 -rw $ rdbrtr -i 在庫管理DB.在庫表DSI2 -rw $ swstbackup -n -k grp1 目的業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブ ロック番号='99' (システム名=rdbsys1) デバイス異常の影響範囲を確認 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 CE作業 … ETERNUSのディスクリカバリ $ rdbinh -p 在庫管理DB.DBSP_2 $ swstrestore -g 1 /dev_symfoware/raw10 /dev_symfoware/raw10 swstrestore completed 目的業務の再実行