テンポラリログファイルの閉塞状態から、Symfoware/RDBを強制停止した場合でアーカイブログ運用を行っている場合は、rdbadjrcvコマンドにより、データベースのリカバリを行ってください。
参照
rdbadjrcvコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。
この場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
なお、RDBディクショナリ、またはRDBディレクトリファイルが破壊されている場合は、rdbadjrcvコマンドは実行できないため、(10)の手順を迂回して実施してください。rdbadjrcvコマンドでRDBディクショナリのリカバリが失敗した場合は、rdbrcvdicコマンドでRDBディクショナリ、RDBディレクトリファイルをリカバリ後、rdbadjrcvコマンドを実行してください。
リカバリ操作の手順
(1) 業務中にテンポラリログファイルのアクセスエラー が発生した場合、システムメッセージを出力して、 テンポラリログファイルを閉塞します。 スケ-ラブルログ運用を行っている場合は、シス テムメッセージにより、リカバリすべきテンポラリログ ファイルのロググループを特定します。 (2) Symfoware/RDBを強制停止します。 ―――――― rdbstopコマンド (eオプション) (3) 障害ディスクを取り換えます。 ―――――― CE作業 (4) ディレクトリ構成をリカバリします。 ―――――― mkdirコマンド ログ管理ファイルとテンポラリログファイルを 同一のディスクに配置している場合 → (5)へ ログ管理ファイルとテンポラリログファイルを 同一のディスクに配置していない場合 → (8)へ (5) ログ管理ファイルを作成します。 ―――――― rdblogコマンド スケーラブルログ運用を行っていない場合また はシステムロググループの場合 (Iオプション) ユーザロググループの場合 (Iオプションかつ rオプションかつ gオプション) (6) アーカイブログファイルを再登録します。 ―――――― rdblogコマンド (Aオプションかつ aオプション) (7) アーカイブログファイルが正常に登録されたことを確認―――――― rdblogコマンド します。 スケーラブルログ運用を行っていない場合 (Vオプションかつ aオプション) スケーラブルログ運用を行っている場合 (Vオプションかつ aオプションかつ gオプション) (8) テンポラリログファイルを再作成します。 ―――――― rdblogコマンド スケーラブルログ運用を行っていない場合 (Gオプションかつ tオプションかつ rオプション) スケーラブルログ運用を行っている場合 (Gオプションかつ tオプションかつ rオプションかつ gオプション) (9) テンポラリログファイルが正常に再作成されたことを ―――――― rdblogコマンド 確認します。 スケーラブルログ運用を行っていない場合 (Vオプションかつ tオプション) スケーラブルログ運用を行っている場合 (Vオプションかつ tオプションかつ gオプション) RDBディクショナリ、または、RDBディレクトリファイルも 破壊されている場合 → (11)へ (10) アーカイブログファイルを使用したデータベースの ―――――― rdbadjrcvコマンド リカバリを行います。 ユーザロググループの場合 (gオプション) rdbadjrcvコマンドによって、RDB ディクショナリがリカバリできなかった場合 → (11)へ ユーザロググループの場合または、 rdbadjrcvコマンドによって、RDB ディクショナリがリカバリできた場合 → (14)へ (11) RDBディクショナリをリカバリします。 ―――――― rdbrcvdicコマンド (FWモード) スケーラブルディレクトリ運用を行っていない場合 → (10)へ スケーラブルディレクトリ運用を行っている場合 → (12)へ (12) すべてのユーザロググループ用のRDBディレクトリ ―――――― rdbscldirコマンド ファイルを再登録します。 (Aオプションかつ gオプション) (13) ユーザロググループ用のRDBディレクトリファイル ―――――― rdbscldirコマンド 情報を確認します。 (Vオプション) 状態(Status)が“inhibit”の場合は、 “11.2.5 ユーザロググループ用のRDBディレクトリファイルのリカバリ” の(7)と(8)を実行してください。 → (10)へ (14) Symfoware/RDBを起動します。 ―――――― rdbstartコマンド (15) rdbadjrcvコマンドでリカバリできなかった ―――――― rdbinhコマンド 資源を“アクセス禁止状態”にします。 (16) rdbadjrcvコマンドでリカバリできなかった ―――――― rdbrcvコマンド 資源に対してリカバリ処理を行います。 (FWモード) (17) rdbadjrcvコマンドでリカバリできなかった ―――――― rdbdmpコマンド 資源の退避データを取得します。 (18) RDBディクショナリのリカバリを行った場合は、 ―――――― rdbdmpdicコマンド RDBディクショナリの退避データも取得します。
リカバリ操作例
リカバリ操作は、以下の運用形態により異なります。
スケーラブルログ運用を行っていない場合
システムロググループの場合
ユーザロググループの場合
スケーラブルディレクトリ運用のシステムロググループの場合
スケーラブルディレクトリ運用のユーザロググループの場合
ここでは、以下の場合を想定しています。
ログ管理ファイルとテンポラリログファイルを同一のディスクに配置していない
rdbadjrcvコマンドでRDBディクショリがリカバリできない
rdbadjrcvコマンドでリカバリできない資源(データベース)が存在する
以下の例では、システムロググループの場合を想定しています。
rdblogコマンドのgオプション(ロググループ名指定)は省略しています。
qdg12111u:テンポラリログファイルに 入出力障害が発生しました ファイル名='D:\SFWD\RDB\USR\LOG\TMPLOG' errno=5 (システム名=rdbsys1) qdg13239i:ロググループ'system'において事象'qdg12111u'が発生しました (システム名=rdbsys1) qdg13303e:テンポラリログファイルを閉塞しました (システム名=rdbsys1) qdg13239i:ロググループ'system'において事象'qdg13303e'が発生しました (システム名=rdbsys1) > rdbstop -e qdg02842u:シグナル9を受信したため RDBIIシステム空間が異常終了しました (システム名=rdbsys1) CE作業 … 障害ディスクの交換 > mkdir D:\SFWD\RDB\USR\LOG > rdblog -G -t -r -c 10M D:\SFWD\RDB\USR\LOG\TMPLOG -in -in 30M 30M 20 > rdblog -V -t > rdbadjrcv -w D:\TEMP qdg13038u:アジャストリカバリが不可能なためRDBディクショナリをアクセス禁止状態 にしました(システム名=rdbsys1) > rdbrcvdic -F -f DICBACK@E:\BACKUP\DIC -du 1M -w D:\TEMP > rdbadjrcv -w D:\TEMP qdg13037u:アジャストリカバリが不可能なため データベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' (システム名=rdbsys1) > rdbstart > rdbinh -i 在庫管理DB.在庫表DSI1 > rdbrcv -F -i 在庫管理DB.在庫表DSI1 -f STOCK@E:\BACKUP\DB -w D:\TEMP > rdbdmp -i 在庫管理DB.在庫表DSI1 -f STOCK@E:\BACKUP\DB -e -y > rdbdmpdic -f DICBACK@E:\BACKUP\DIC -e -y
qdg12111u:テンポラリログファイルに 入出力障害が発生しました ファイル名='D:\SFWD\RDB\USR\LOG\TMPLOG errno=5'(システム名=rdbsys1) qdg13239i:ロググループ'grp1'において事象'qdg12111u'が発生しました (システム名=rdbsys1) qdg13303e:テンポラリログファイルを閉塞しました (システム名=rdbsys1) qdg13239i:ロググループ'grp1'において事象'qdg13303e'が発生しました (システム名=rdbsys1) > rdbstop -e qdg02842u:シグナル9を受信したため RDBIIシステム空間が異常終了しました (システム名=rdbsys1) CE作業 … 障害ディスクの交換 > mkdir D:\SFWD\RDB\USR\LOG > rdblog -G -t -r -g grp1 -c 10M D:\SFWD\RDB\USR\LOG\TMPLOG -in -in 30M 30M 20 > rdblog -V -t -g grp1 > rdbadjrcv -g grp1 -w D:\USER\RDB1\WORK qdg13037u:アジャストリカバリが不可能なためデータベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' (システム名=rdbsys1) > rdbstart > rdbinh -i 在庫管理DB.在庫表DSI1 > rdbrcv -F -i 在庫管理DB.在庫表DSI1 -f STOCK@E:\BACKUP\DB -w D:\USER\RDB1\WORK > rdbdmp -i 在庫管理DB.在庫表DSI1 -f STOCK1@E:\BACKUP\DB -e -y
システムロググループの場合、rdblogコマンドのgオプション(ロググループ名の指定)を、省略することができます。以下の例では、ロググループ名を省略しています。
qdg12111u:テンポラリログファイルに 入出力障害が発生しました ファイル名='D:\SFWD\RDB\USR\LOG\TMPLOG' errno=5 (システム名=rdbsys1) qdg13239i:ロググループ'system'において事象'qdg12111u'が発生しました (システム名=rdbsys1) qdg13303e:テンポラリログファイルを閉塞しました (システム名=rdbsys1) qdg13239i:ロググループ'system'において事象'qdg13303e'が発生しました (システム名=rdbsys1) > rdbstop -e qdg02842u:シグナル9を受信したため RDBIIシステム空間が異常終了しました (システム名=rdbsys1) CE作業 … 障害ディスクの交換 > mkdir D:\SFWD\RDB\USR\LOG > rdblog -G -t -r -c 10M D:\SFWD\RDB\USR\LOG\TMPLOG -in -in 30M 30M 20 > rdblog -V -t > rdbadjrcv -w D:\USER\RDB1\WORK qdg13038u:アジャストリカバリが不可能なためRDBディクショナリをアクセス禁止状態に しました(システム名=rdbsys1) > rdbrcvdic -F -f DICBACK@E:\BACKUP\DIC -du 1M -w c:\rdb\tmp > rdbscldir -A -g grp1 D:\SFWD\RDB\USR\ULOG\DIR_FILE_G1 > rdbscldir -A -g grp2 D:\SFWD\RDB\USR\ULOG\DIR_FILE_G2 > rdbscldir -V RDBII rdbscldir DATA:2007/04/14 TIME: 16/30/31 LogGroup status DBspace Size(Used rate) Directory file path system normal Exist 1024K( 14%) D:\SFWD\RDB\USR\DIR\DIR_FILE1 grp1 normal Exist 1024K( 23%) D:\SFWD\RDB\USR\ULOG\DIR_FILE_G1 grp2 normal Exist 1024K( 23%) D:\SFWD\RDB\USR\ULOG\DIR_FILE_G2 > rdbadjrcv -w D:\USER\RDB1\WORK qdg13037u:アジャストリカバリが不可能なためデータベースをアクセス禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' (システム名=rdbsys1) > rdbstart > rdbinh -i 在庫管理DB.在庫表DSI1 > rdbrcv -F -i 在庫管理DB.在庫表DSI1 -f STOCK@E:\BACKUP\DB -w D:\USER\RDB1\WORK > rdbdmp -i 在庫管理DB.在庫表DSI1 -f STOCK1@E:\BACKUP\DB -e -y > rdbdmpdic -f DICBACK@E:\BACKUP\DIC -e -y
注意
rdbadjrcvコマンドによりデータベースのリカバリを行う場合、トランザクションの整合性を保証するため、テンポラリログファイルの作成時に指定したAIログ域サイズ以上のアーカイブログ量が必要になります。したがって、この機能を利用する場合には、最低限それだけのアーカイブログを保持する運用を行う必要があります。
テンポラリログファイルの入出力障害が発生する少し前にコミットした更新がロールバックになっている可能性があります。データリカバリ後、どこまでの更新が完了しているか確認し、必要に応じて再更新などを行ってください。
スケーラブルログ運用を行っていてアーカイブログ退避データを指定する場合は、リカバリ対象のDSIが属するロググループのアーカイブログ退避データを指定する必要があります。