13.3.6 例題6(ディクショナリ表を再編成する場合)
データディクショナリ用RDエリア(DATADIC)及びデータディクショナリLOB用RDエリア(DATALOB)に格納されているディクショナリ表を再編成します。更新前ログ取得モード(省略値)でディクショナリ表を再編成します。
- 〈手順〉
-
-
pdholdコマンドでデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアを閉塞します。
-
データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアのバックアップを取得します。
-
pdrorgコマンドの制御文ファイルを作成します。
-
pdrorgコマンドでディクショナリ表を再編成します。
-
データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアのバックアップを取得します。
-
pdrelsコマンドでデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアの閉塞を解除します。
手順の数字はこの後で説明している( )レベルに対応しています。例えば,3の操作は(3)で説明しています。
- ポイント
-
更新前ログ取得モードでpdrorgコマンドを実行するため,前記の手順1〜5の間はデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアを閉塞したままにしてください。
-
- 〈この項の構成〉
(1) pdholdコマンドでデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアを閉塞します
RDエリアを閉塞した状態でバックアップを取得してください。バックアップを取得した後に,ほかのユーザがRDエリアの内容を更新しないようにRDエリアの閉塞を解除しないでください。
pdhold -r DATADIC,DATALOB
(2) データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアのバックアップを取得します
再編成中の異常終了に備えて,データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアのバックアップを取得してください。RDエリアの拡張に必要となるディクショナリ表の再編成中にデータディクショナリ用RDエリア又はデータディクショナリLOB用RDエリアに容量不足が発生すると,RDエリアを拡張する対処が取れないため,RDエリアをバックアップから回復する必要があります。また,ディクショナリ表の再編成中にユニットがダウンすると,HiRDB起動時にディクショナリ表を参照できないで,フロントエンドサーバがSUSPEND状態となるため,RDエリアをバックアップから回復する必要があります。バックアップからの回復が必要かどうかの判断は,「注意事項」の条件を参照してください。
(3) pdrorgコマンドの制御文ファイルを作成します
制御文ファイル(/pdrorg/rorg01)の内容を次に示します。
unload /pdrorg/unfile1 1 lobunld /pdrorg/unfile2 2
- 〔説明〕
-
-
データディクショナリ用RDエリア用のアンロードデータファイルの名称を指定します。
-
データディクショナリLOB用RDエリア用のアンロードデータファイルの名称を指定します。
-
(4) pdrorgコマンドでディクショナリ表を再編成します
pdrorg -k rorg -c dic /pdrorg/rorg01
- 〔説明〕
-
-k:再編成をするためrorgを指定します。
-c:ディクショナリ表を再編成する場合に指定します。
/pdrorg/rorg01:(3)で作成したpdrorgコマンドの制御文ファイル名を指定します。
(5) データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアのバックアップを取得します
データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリア(DATADIC及びDATALOB)のバックアップを取得してください。バックアップの取得方法については,「例題8(RDエリア単位にバックアップを取得する場合)」を参照してください。
(6) pdrelsコマンドでデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアの閉塞を解除します
pdrels -r DATADIC,DATALOB
コマンドの実行後,実行結果が正しいかどうか確認することをお勧めします。コマンドの実行結果の確認方法については,マニュアル「HiRDB コマンドリファレンス」を参照してください。
(7) 注意事項
ディクショナリ表の再編成時,次に示すエラーが発生した場合は注意が必要です。
-
アンロードは完了しましたが,リロード中にデータディクショナリ用RDエリアの容量不足が発生しました。
この場合,次に示す条件に応じて対処してください。
- 条件1:
-
データベース再編成ユティリティを更新ログ取得モード,又は更新前ログ取得モードで実行していて,SQL_PHYSICAL_FILES表及びSQL_RDAREAS表のリロードが完了しているとき
-
データベース構成変更ユティリティでデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアを拡張又は追加します。
-
オプションや制御文の指定を変更しないで,データベース再編成ユティリティを再度実行します。
-
- 条件2:
-
データベース再編成ユティリティを更新ログ取得モード,又は更新前ログ取得モードで実行していて,SQL_PHYSICAL_FILES表及びSQL_RDAREAS表のリロードが完了していないとき,又は,データベース再編成ユティリティをログレスモードで実行しているとき
-
再編成前に取得したバックアップを使用して,データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアをデータベース回復ユティリティで回復します。
-
データベース構成変更ユティリティでデータディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアを拡張又は追加します。
-
ディクショナリ表の再編成を再度実施します。
エラー発生時(RDエリアの拡張又は追加前)に作成したアンロードデータファイルを使用してリロード処理だけをしないでください。
-
-
リロード中にユニットがダウンし,HiRDBを再開始しましたが,ディクショナリ用RDエリアの障害と認識してフロントエンドサーバがSUSPEND状態となりました(HiRDB/パラレルサーバの場合)。
この場合,次のように対処してください。
-
再編成前に取得したバックアップを使用して,データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアをデータベース回復ユティリティで回復します。
-
pdstart -aコマンドでHiRDBを開始します。
詳細については,「データディクショナリ用RDエリアに障害が発生して,フロントエンドサーバがSUSPEND状態のときの開始方法(pdstart -a)」を参照してください。