テンポラリログファイルの閉塞状態から、Symfoware/RDBを強制停止した場合でアーカイブログ運用を行っている場合は、rdbadjrcvコマンドにより、データベースのリカバリを行ってください。
参照
rdbadjrcvコマンドの指定方法の詳細は、“Interstage Business Application Server リファレンス”を参照してください。
Symfoware/RDB停止中にテンポラリログファイルをリカバリする場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
なお、RDBディクショナリ、またはRDBディレクトリファイルが破壊されている場合は、rdbadjrcvコマンドは実行できないため、(9)の手順を迂回して実施してください。
■リカバリ操作の手順
(1) 業務中にテンポラリログファイルのアクセスエラーが発生した場合、システム メッセージを出力して、テンポラリログファイルを閉塞します。 (2) Symfoware/RDBを強制停止します。 ――― rdbstopコマンド (eオプション) (3) 障害ボリュームを取り換えます。 ――― CE作業 (4) ボリュームの構成情報を復元します。 ――― fmthardコマンド ログ管理ファイルとテンポラリログファイルを同一のボリュームに 配置している場合 → (5)へ ログ管理ファイルとテンポラリログファイルを同一のボリュームに 配置していない場合 → (8)へ (5) ログ管理ファイルを作成します。 ――― rdblogコマンド (Iオプション) (6) アーカイブログファイルを再登録します。 ――― rdblogコマンド (Aオプションかつ aオプション) (7) アーカイブログファイルが正常に登録されたことを確認 ――― rdblogコマンド します。 (Vオプションかつ aオプション) (8) テンポラリログファイルを再作成します。 ――― rdblogコマンド (Gオプションかつ tオプションかつ rオプション) (9) テンポラリログファイルが正常に再作成されたことを ――― rdblogコマンド 確認します。 (Vオプションかつ tオプション) (10) アーカイブログファイルを使用したデータベースの復 ――― rdbadjrcvコマンド 旧を行います。 rdbadjrcvコマンドによって、RDBディクショナリが リカバリできなかった場合 → (11)へ rdbadjrcvコマンドによって、RDBディクショナリが リカバリできた場合 → (12)へ (11) RDBディクショナリを復元します。 ――― rdbrcvdicコマンド (FWモード) → (10)へ (12) Symfoware/RDBを起動します。 ――― rdbstartコマンド (13) rdbadjrcvコマンドでリカバリできなかった資源に ――― rdbrcvコマンド 対してリカバリ処理を行います。 (Cオプション) (14) FULL状態のエントリをすべて出力ファイルに ――― rdbcycexpコマンド エクスポートします。 (15) RDBディクショナリのリカバリを行った場合は、 ――― rdbdmpdicコマンド RDBディクショナリの退避データも取得します。 |
(1) 業務中にテンポラリログファイルのアクセスエラーが発生した場合、システム メッセージを出力して、テンポラリログファイルを閉塞します。 (2) Symfoware/RDBを強制停止します。 ――― rdbstopコマンド (eオプション) (3) 障害ボリュームを取り換えます。 ――― CE作業 (4) ボリュームの構成情報を復元します。 ――― partedコマンド ログ管理ファイルとテンポラリログファイルを同一のボリュームに 配置している場合 → (5)へ ログ管理ファイルとテンポラリログファイルを同一のボリュームに 配置していない場合 → (8)へ (5) ログ管理ファイルを作成します。 ――― rdblogコマンド (Iオプション) (6) アーカイブログファイルを再登録します。 ――― rdblogコマンド (Aオプションかつ aオプション) (7) アーカイブログファイルが正常に登録されたことを確認 ――― rdblogコマンド します。 (Vオプションかつ aオプション) (8) テンポラリログファイルを再作成します。 ――― rdblogコマンド (Gオプションかつ tオプションかつ rオプション) (9) テンポラリログファイルが正常に再作成されたことを ――― rdblogコマンド 確認します。 (Vオプションかつ tオプション) (10) アーカイブログファイルを使用したデータベースの復 ――― rdbadjrcvコマンド 旧を行います。 rdbadjrcvコマンドによって、RDBディクショナリが リカバリできなかった場合 → (11)へ rdbadjrcvコマンドによって、RDBディクショナリが リカバリできた場合 → (12)へ (11) RDBディクショナリを復元します。 ――― rdbrcvdicコマンド (FWモード) → (10)へ (12) Symfoware/RDBを起動します。 ――― rdbstartコマンド (13) rdbadjrcvコマンドでリカバリできなかった資源に ――― rdbrcvコマンド 対してリカバリ処理を行います。 (Cオプション) (14) FULL状態のエントリをすべて出力ファイルに ――― rdbcycexpコマンド エクスポートします。 (15) RDBディクショナリのリカバリを行った場合は、 ――― rdbdmpdicコマンド RDBディクショナリの退避データも取得します。 |
(1) 業務中にテンポラリログファイルのアクセスエラーが発生した場合、システム メッセージを出力して、テンポラリログファイルを閉塞します。 (2) Symfoware/RDBを強制停止します。 ――― rdbstopコマンド (eオプション) (3) 障害ディスクを取り換えます。 ――― CE作業 (4) ディレクトリ構成をリカバリします。 ―――mkdirコマンド ログ管理ファイルとテンポラリログファイルを同一のディスクに 配置している場合 → (5)へ ログ管理ファイルとテンポラリログファイルを同一のディスクに 配置していない場合 → (8)へ (5) ログ管理ファイルを作成します。 ――― rdblogコマンド (Iオプション) (6) アーカイブログファイルを再登録します。 ――― rdblogコマンド (Aオプションかつ aオプション) (7) アーカイブログファイルが正常に登録されたことを確認 ――― rdblogコマンド します。 (Vオプションかつ aオプション) (8) テンポラリログファイルを再作成します。 ――― rdblogコマンド (Gオプションかつ tオプションかつ rオプション) (9) テンポラリログファイルが正常に再作成されたことを ――― rdblogコマンド 確認します。 (Vオプションかつ tオプション) RDBディクショナリ、または、RDBディレクトリファイルが 破壊されている場合 → (11)へ (10) アーカイブログファイルを使用したデータベースの復 ――― rdbadjrcvコマンド 旧を行います。 rdbadjrcvコマンドによって、RDBディクショナリが リカバリできなかった場合 → (11)へ rdbadjrcvコマンドによって、RDBディクショナリが リカバリできた場合 → (12)へ (11) RDBディクショナリを復元します。 ――― rdbrcvdicコマンド (FWモード) → (10)へ (12) Symfoware/RDBを起動します。 ――― rdbstartコマンド (13) rdbadjrcvコマンドでリカバリできなかった資源に ――― rdbrcvコマンド 対してリカバリ処理を行います。 (Cオプション) (14) FULL状態のエントリをすべて出力ファイルに ――― rdbcycexpコマンド エクスポートします。 (15) RDBディクショナリのリカバリを行った場合は、 ――― rdbdmpdicコマンド RDBディクショナリの退避データも取得します。 |
■リカバリ操作例
ここでは、以下の場合を想定しています。
ログ管理ファイル、テンポラリログファイルを同一のボリュームに配置していない
ログ管理ファイル、テンポラリログファイルを同一のディスクに配置していない
rdbadjrcvコマンドでRDBディクショナリがリカバリできない
rdbadjrcvコマンドでリカバリできない資源(ユーザログテーブル)が存在する
rdb: ERROR: qdg12111u: テンポラリログファイルに入出力障害が発生しました ファイル名=/dev/rdsk/c1t0d0s1 errno=5 (システム名=rdbsys1) rdb: ERROR: qdg13303e: テンポラリログファイルを閉塞しました(システム名=rdbsys1) $ rdbstop -e rdb: ERROR: qdg02842u: シグナル9を受信したためRDBIIシステム空間が異常終了しました (システム名=rdbsys1) CE作業 … 障害ボリュームの交換 $ fmthard -s c1t0d0_vtoc.txt /dev/rdsk/c1t0d0s2 $ rdblog -G -t -c 10M -r /dev/rdsk/c1t0d0s1 -in -in 30M 30M 20 $ rdblog -V -t $ rdbadjrcv -w /home/rdb1/work rdb: ERROR:qdg13038u: アジャストリカバリが不可能なため RDBディクショナリをアクセス 禁止状態にしました(システム名=rdbsys1) $ rdbrcvdic -F -f dicback@/backup/rdb -du 1M -w /tmp -y $ rdbadjrcv -w /home/rdb1/work rdb: ERROR:qdg13037e: アジャストリカバリが不可能なため データベースをアクセス禁止 状態にしました DB名='ULOG_DB' DSI名='業務ログ表DSI1' (システム名 =rdbsys1) $ rdbstart $ rdbrcv -C -i ULOG_DB.業務ログ表DSI1 -w /home/rdb1/work $ rdbcycexp -me -i ULOG_DB.業務ログ表DSI -o /home/rdb2/ulog20040602_001.dat $ rdbdmpdic -f dicback@/backup/rdb -y -e |
rdb: ERROR: qdg12111u: テンポラリログファイルに入出力障害が発生しました ファイル名=/dev/raw/raw1 errno=5 (システム名=rdbsys1) rdb: ERROR: qdg13303e: テンポラリログファイルを閉塞しました(システム名=rdbsys1) $ rdbstop -e rdb: ERROR: qdg02842u: シグナル9を受信したためRDBIIシステム空間が異常終了しました (システム名=rdbsys1) CE作業 … 障害ボリュームの交換およびボリューム構成情報の復元 $ rdblog -G -t -c 10M -r /dev/raw/raw9 -in -in 30M 30M 20 $ rdblog -V -t $ rdbadjrcv -w /home/rdb1/work rdb: ERROR:qdg13038u: アジャストリカバリが不可能なため RDBディクショナリをアクセス 禁止状態にしました(システム名=rdbsys1) $ rdbrcvdic -F -f dicback@/backup/rdb -du 1M -w /tmp -y $ rdbadjrcv -w /home/rdb1/work rdb: ERROR:qdg13037e: アジャストリカバリが不可能なため データベースをアクセス禁止 状態にしました DB名='ULOG_DB' DSI名='業務ログ表DSI1' (システム名 =rdbsys1) $ rdbstart $ rdbrcv -C -i ULOG_DB.業務ログ表DSI1 -w /home/rdb1/work $ rdbcycexp -me -i ULOG_DB.業務ログ表DSI -o /home/rdb2/ulog20040602_001.dat $ rdbdmpdic -f dicback@/backup/rdb -y -e |
rdb: ERROR: qdg12111u: テンポラリログファイルに入出力障害が発生しました
ファイル名=D:\SFWD\RDB\USR\LOG\TMPLOG errno=5 (システム名=rdbsys1)
rdb: ERROR: qdg13303e: テンポラリログファイルを閉塞しました(システム名=rdbsys1)
> rdbstop -e
rdb: ERROR: qdg02842u: シグナル9を受信したためRDBIIシステム空間が異常終了しました
(システム名=rdbsys1)
CE作業 … 障害ディスクの交換
> mkdir D:\SFWD\RDB\USR\LOG
> rdblog -G -t -c 10M -r D:\SFWD\RDB\USR\LOG\TMPLOG -in -in 30M 30M 20
> rdblog -V -t
> rdbadjrcv -w D:\TEMP
rdb: ERROR:qdg13038u: アジャストリカバリが不可能なため RDBディクショナリをアクセス
禁止状態にしました(システム名=rdbsys1)
> rdbrcvdic -F -f DICBACK@E:\BACKUP\DIC -du 1M -w D:\TEMP
> rdbadjrcv -w D:\USER\RDB1\WORK
rdb: ERROR:qdg13037e: アジャストリカバリが不可能なため データベースをアクセス禁止
状態にしました DB名='ULOG_DB' DSI名='業務ログ表DSI1' (システム名
=rdbsys1)
|
注意
rdbadjrcvコマンドによりデータベースのリカバリを行うには、テンポラリログファイルの作成時に指定したAIログ域のサイズ以上のアーカイブログが必要となります。したがって、この機能を利用する場合には、最低限それだけのアーカイブログを保持する運用を行う必要があります。
rdbadjrcvコマンドによってデータベースのリカバリを行う場合、アーカイブログファイル内のアーカイブログ量によっては、コマンドが異常終了する場合があります。この場合には、さらに以前の退避アーカイブログファイルを併せて指定して、コマンドを再実行してください。
テンポラリログファイルの入出力障害が発生する少し前にコミットした更新がロールバックになっている場合があります。データリカバリ後、どこまでの更新が完了しているか確認し、必要に応じて再更新などを行ってください。