7.5.6 注意事項
-
RDエリアの再初期化後は,データベース複写ユティリティ(pdcopy)で再初期化したRDエリア,マスタディレクトリ用RDエリア,及びデータディクショナリ用RDエリアのバックアップを取得しておいてください。データベース複写ユティリティいついては,「データベース複写ユティリティ(pdcopy)」を参照してください。
-
RDエリアの再初期化処理中に異常が発生した場合,再初期化対象のRDエリアの回復処理はしません。この場合,既にHiRDBファイルが削除されていたり,初期化中でデータベースが破壊されていたりすることがあるため,必ずこのRDエリアに対して再度再初期化を実行してください。
-
再初期化が正常終了した後のRDエリアは,コマンド閉塞状態かつクローズ状態のままです。したがって,このRDエリアを使用する場合には,運用コマンドでRDエリアを閉塞解除及びオープン状態にする必要があります。
-
RDエリアを構成するHiRDBファイルの個数,又は名称を変更した場合,使用しなくなったHiRDBファイルは削除されます。
-
再初期化後のRDエリア内の格納データ,定義情報,及びユーザの作業は次のようになります。
- RDエリア内に表がある場合:
-
RDエリア内のデータはすべて削除され,表の定義情報だけが引き継がれます。表が分割表の場合は,再初期化対象のRDエリアに格納されているデータだけ削除されます。その表にインデクスがある場合は,削除された表のデータに対応するインデクスのキーデータも同時に削除され,定義情報だけが引き継がれます。ただし,表が分割表でかつインデクスが分割キーに対応していない場合は,インデクスは未完状態となります。
表にLOB列がある場合は,そのLOBデータも削除されます。
表に抽象データ型列がある場合は,通常の表と同じように扱われます。ただし,LOB属性の抽象データ型列がある場合は,対応するユーザLOB用RDエリア内の抽象データ型列のデータも削除されます。
表にプラグインインデクスがある場合は,プラグインインデクスのデータも同時に削除され,定義情報だけが引き継がれます。
再初期化対象RDエリアに格納されている表の,インデクス及びLOB列がほかのRDエリアに格納されている場合,インデクス及びLOB列を格納しているRDエリアは閉塞解除状態かつオープン状態でなければなりません。
[ユーザの作業]
再初期化後は,データベース作成ユティリティ,データベース再編成ユティリティ,UAPなどを使用してデータを回復します。ただし,UAPを使用する場合,未完状態のインデクスがあるとアクセスできません(KFPA11879-Eエラー)。そのため,次のどちらかの作業をする必要があります。
・データベース再編成ユティリティ(pdrorg)でインデクスを定義している表を再編成(インデクス一括作成モード)するか,又はインデクスを再作成します。
・インデクスを定義している表を初期化(SQLのPURGE TABLE文を実行)し,表及びインデクスのデータを削除します。
- RDエリア内にインデクスがある場合:
-
RDエリア内のインデクスのキーデータはすべて削除されます。インデクスに対応するデータが,ほかのRDエリアにある場合,インデクスは未完状態となります。
[ユーザの作業]
再初期化後にインデクスが初期化状態となっていたら,そのまま使用できます。未完状態になっていたら,次のどれかの作業をする必要があります。
・データベース再編成ユティリティ(pdrorg)でインデクスを定義している表を再編成(インデクス一括作成モード)するか,又はインデクスを再作成します。
・インデクスを定義している表を初期化(SQLのPURGE TABLE文を実行)し,表及びインデクスのデータを削除します。
・インデクスを定義している表を格納しているRDエリアを再初期化します。ただし,インデクスを格納しているRDエリアは閉塞解除状態かつオープン状態でなければなりません。
- RDエリアがユーザLOB用RDエリアの場合:
-
RDエリア内のLOBデータはすべて削除されます。ただし,そのLOBデータに対応するLOB列構成基表のデータはそのまま残ります。LOB列構成基表のデータが残っている場合は,LOB列は長さ0のデータとして扱われます。
[ユーザの作業]
再初期化後は,データベース作成ユティリティ,データベース再編成ユティリティ,UAPなどを使用してデータを回復します。
- RDエリアがLOB属性の抽象データ型列を格納しているユーザLOB用RDエリアの場合:
-
RDエリア内のデータはすべて削除され,アクセス禁止状態となります。データに対応するLOB属性の抽象データ型列構成基表(抽象データ型を含む表で,表から抽象データ型データを除いた部分)はそのまま残るため,LOB属性の抽象データ型列構成基表から検索された場合,エラーメッセージ「KFPA11891-E」が出力されます。
[ユーザの作業]
アクセス禁止状態となったLOB属性の抽象データ型列の格納ユーザLOB用RDエリアをアクセスするには,次のどれかの作業をする必要があります。
・LOB属性の抽象データ型列構成基表を初期化(SQLのPURGE TABLE文を実行)し,データを削除します。
・データベース作成ユティリティ(pdload)を作成モード(-d)で実行します。
・LOB属性の抽象データ型列構成基表格納RDエリアを再初期化します。ただし,LOB属性の抽象データ型列格納RDエリアは閉塞解除かつオープン状態でなければなりません。
- RDエリアがプラグインインデクスを格納しているユーザLOB用RDエリアの場合:
-
RDエリア内のデータはすべて削除されます。再初期化後のプラグインインデクスは未完状態となります。未完状態となったプラグインインデクスにアクセスした場合,エラーメッセージ「KFPA11879-E」が出力されます。
[ユーザの作業]
未完状態となったプラグインインデクスは,データベース再編成ユティリティのインデクスの再作成で回復します。
-
レジストリ用RDエリアの再初期化時にKFPX24231-Wメッセージが出力され,レジストリLOB用RDエリアを再初期化していない場合には,レジストリLOB用RDエリアも再初期化する必要があります。また,再初期化後にプラグインが使用するレジストリ情報の再登録が必要です。
-
再初期化対象のRDエリアに格納されている表を基にリストを作成している場合は,そのリストを使用する前に必ずリストを再作成してください。
-
再初期化するRDエリアに被参照表,参照表,又は検査制約表が格納されている場合,検査保留状態を変更します。検査保留状態は,ディクショナリ表とRDエリア中の表情報で管理されていて,RDエリアの再初期化では次のとおり検査保留状態を変更します。なお,検査保留状態については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。
-
被参照表(主キーを定義した表)を格納しているRDエリアを再初期化した場合,ほかのRDエリアで,その表と参照関係にある参照表(外部キーを定義した表)に検査保留状態を設定します。ただし,システム定義のpd_check_pendingオペランドにNOUSEが指定されている場合は,検査保留状態は変更しません。また,主キーに付いているインデクスだけを格納しているRDエリアを再初期化した場合も,検査保留状態は変更しません。
参照表に検査保留状態を設定できなかった場合,KFPX24242-Wのメッセージを出力します。この場合は次の要因が考えられます。
・参照表を格納しているRDエリアが閉塞状態です。
・検査保留状態となる参照表が,ほかからアクセス中です。
・そのほかのI/Oエラー,又はRDエリアのアクセスエラーが発生しました。
このメッセージが出力された場合は,エラーの原因を取り除き,検査保留状態の強制設定をしてください。
-
参照表を格納しているRDエリアを再初期化した場合,参照表が検査保留状態となっているときは,検査保留状態を解除します。ただし,次の場合はRDエリア中の表情報の検査保留状態だけを解除し,ディクショナリ表の検査保留状態は解除しません。
・参照表が分割されている場合
・システム定義のpd_check_pendingオペランドにNOUSEを指定している場合
ディクショナリ表の検査保留状態が解除されなかった場合は,pdconstckで整合性チェックをして,ディクショナリ表の検査保留状態を解除してください。
-
検査制約表を格納しているRDエリアを再初期化した場合,検査制約を定義した表が検査保留状態となっていれば,検査保留状態を解除します。ただし,次の場合にはRDエリア中の表情報の検査保留状態だけを解除し,ディクショナリ表の検査保留状態は解除しません。
・検査制約を定義した表が分割されている場合
・システム定義のpd_check_pendingオペランドにNOUSEを指定している場合
ディクショナリ表の検査保留状態が解除されなかった場合は,pdconstckで整合性チェックをして,ディクショナリ表の検査保留状態を解除してください。
-
-
データ連動の抽出の対象となる表が格納されているRDエリアは,再初期化をしないでください。再初期化をすると,以降のHiRDB Datareplicator連携は不正になります。
-
改竄防止表が格納されているRDエリアは再初期化できません。
-
インメモリRDエリアは再初期化できません。いったんインメモリ化を解除してからRDエリアを再初期化してください。
-
RDエリア内に順序数生成子がある場合,順序数生成子の定義情報だけが引き継がれ,現在値は順序数生成子定義時の状態に戻ります。