16.7.2 データ用DBエリアを追加できなくなった場合
ここでは,新たにデータ用DBエリアを追加できなくなった場合の対処方法について説明します。
HADBサーバが管理できるデータ用DBエリアの数は,最大1,014個です。上限を超えて,データ用DBエリアを追加できません。
そのため,1,014個のデータ用DBエリアがある場合に,新たにデータ用DBエリアを追加したいときは,既存のデータ用DBエリアを統合して,管理できるデータ用DBエリアの数の上限に余裕を持たせる必要があります。
- メモ
-
データ用DBエリアを統合する場合は,データ量が少ない(数メガバイト)実表やインデクスが格納されているデータ用DBエリアを対象とすることを推奨します。詳細については,「5.6.1 データ用DBエリアを設計する際の考慮点」を参照してください。
- 〈この項の構成〉
(1) 表とインデクスを格納したデータ用DBエリアを削除して統合する(adbidxrebuildコマンドの実行が不要な場合)
表とインデクスを格納したデータ用DBエリアを削除して統合する方法を,次に示します。
- ■実表とB-treeインデクスの関係
-
-
実表Aに,B-treeインデクスAおよびB-treeインデクスBが定義されています。
-
実表Cに,B-treeインデクスCが定義されています。
-
-
削除対象のデータ用DBエリアに格納された表のデータを出力する
adbexportコマンドで,実表のデータを出力データファイルに出力してください。ここでは,「データ用DBエリア1014」に格納された実表Cのデータが対象になります。
-
削除対象のデータ用DBエリアに格納された表やインデクスを削除する
削除対象のデータ用DBエリアに定義されている実表およびインデクスを,DROP TABLE文で削除してください。DROP TABLE文を実行すると実表に定義されているインデクスもあわせて削除されます。ここでは,「データ用DBエリア1014」に格納された実表C,およびB-treeインデクスCが対象になります。
-
削除対象のデータ用DBエリアを削除する
削除対象のデータ用DBエリアを,adbmodareaコマンドで削除してください。ここでは,「データ用DBエリア1014」が対象になります。
-
統合先のデータ用DBエリアに表やインデクスを再定義する
手順2.で削除した実表およびインデクスを,統合先のデータ用DBエリアに,CREATE TABLE文やCREATE INDEX文で再定義してください。ここでは,「データ用DBエリア1013」に対して実表C,およびB-treeインデクスCを再定義してください。
-
出力した表の全データを再格納する
手順1.で出力した実表の全データを,手順4.で再定義した実表にadbimportコマンドで再格納してください。ここでは,再定義した実表Cに対してデータを再格納してください。
既存のデータ用DBエリアを統合することで,データ用DBエリアの数の上限に余裕ができたため,新たにデータ用DBエリアを追加できます。
(2) 表とインデクスを格納したデータ用DBエリアを削除して統合する(adbidxrebuildコマンドの実行が必要な場合)
表とインデクスを格納したデータ用DBエリアを削除して統合する方法を,次に示します。
- ■実表とB-treeインデクスの関係
-
-
実表Aに,B-treeインデクスA,B-treeインデクスBおよびB-treeインデクスCが定義されています。
-
実表Bに,インデクスは定義されていません。
-
-
削除対象のデータ用DBエリアに格納された表のデータを出力する
adbexportコマンドで,実表のデータを出力データファイルに出力してください。ここでは,「データ用DBエリア1014」に格納された実表Bのデータが対象になります。
-
削除対象のデータ用DBエリアに格納された表やインデクスを削除する
削除対象のデータ用DBエリアに定義されている実表をDROP TABLE文で削除してください。また,インデクスをDROP INDEX文で削除してください。ここでは,「データ用DBエリア1014」に格納された実表B,およびB-treeインデクスCが対象になります。
-
削除対象のデータ用DBエリアを削除する
削除対象のデータ用DBエリアを,adbmodareaコマンドで削除してください。ここでは,「データ用DBエリア1014」が対象になります。
-
統合先のデータ用DBエリアに表やインデクスを再定義する
手順2.で削除した実表およびインデクスを,統合先のデータ用DBエリアに,CREATE TABLE文やCREATE INDEX文で再定義してください。ここでは,「データ用DBエリア1013」に対して実表Bを再定義してください。また,実表Aに対してB-treeインデクスCを再定義してください。
-
出力した表の全データを再格納する
手順1.で出力した実表の全データを,手順4.で再定義した実表にadbimportコマンドで再格納してください。ここでは,再定義した実表Bに対してデータを再格納してください。
-
インデクスを再作成する
手順4.で再定義したインデクスは未完状態のため,インデクスの再作成が必要です。adbidxrebuildコマンドでインデクスを再作成してください。ここでは,B-treeインデクスCを再定義した実表Aに対して,adbidxrebuildコマンドを実行してください。
既存のデータ用DBエリアを統合することで,データ用DBエリアの数の上限に余裕ができたため,新たにデータ用DBエリアを追加できます。
(3) インデクスだけを格納したデータ用DBエリアを削除して統合する
インデクスだけを格納したデータ用DBエリアを削除して統合する方法を,次に示します。
- ■実表とB-treeインデクスの関係
-
実表Aに,B-treeインデクスAが定義されています。
-
削除対象のデータ用DBエリアに格納されたインデクスを削除する
削除対象のデータ用DBエリアに定義されているインデクスを,DROP INDEX文で削除してください。ここでは,「データ用DBエリア1014」に格納されたB-treeインデクスAが対象になります。
-
削除対象のデータ用DBエリアを削除する
削除対象のデータ用DBエリアを,adbmodareaコマンドで削除してください。ここでは,「データ用DBエリア1014」が対象になります。
-
統合先のデータ用DBエリアにインデクスを再定義する
手順1.で削除したインデクスを,統合先のデータ用DBエリアに,CREATE INDEX文で再定義してください。ここでは,「データ用DBエリア1013」に格納されている実表Aに対して,B-treeインデクスAを再定義してください。
-
インデクスを再作成する
手順3.で再定義したインデクスは未完状態のため,インデクスの再作成が必要です。adbidxrebuildコマンドでインデクスを再作成してください。ここでは,B-treeインデクスAを再定義した実表Aに対して,adbidxrebuildコマンドを実行してください。
既存のデータ用DBエリアを統合することで,データ用DBエリアの数の上限に余裕ができたため,新たにデータ用DBエリアを追加できます。