15.4.1 RDエリアを再初期化する前に
(1) 再初期化できるRDエリア
再初期化できるRDエリアを次に示します。
-
ユーザ用RDエリア
-
ユーザLOB用RDエリア
-
データディクショナリLOB用RDエリア(オブジェクト格納用だけ)
-
レジストリ用RDエリア
-
レジストリLOB用RDエリア
-
リスト用RDエリア
(2) RDエリアを再初期化するときは?
次の場合にRDエリアを再初期化します。
-
表の行数が増加してデータが格納できなくなった場合
-
HiRDBファイルの構成(個数,及び一つのHiRDBファイルの容量)を変更する場合
-
HiRDBファイルの構成(HiRDBファイルの名称)を変更する場合
(3) 注意事項
-
再初期化の前後に再初期化対象RDエリアのバックアップを取得してください。再初期化後にRDエリアの障害が発生すると,再初期化以前に取得したバックアップからは回復できません。
-
RDエリアを再初期化するとRDエリア中のデータが消去されます。このため,データベース再編成ユティリティ(pdrorgコマンド)を使用してデータをアンロードしておいてください。
-
再初期化するRDエリアはpdholdコマンドで閉塞かつクローズ状態にしてください。
-
HiRDBファイル数を増やす場合はpd_max_file_noオペランドの値に注意してください。RDエリアを構成する全HiRDBファイル数がこのオペランドの値を超える場合はRDエリアを追加できません。
-
ユーザLOB用RDエリアを再初期化した場合,LOB列構成基表のデータは消去されないでそのまま残ります。LOB列は長さが0のデータとして扱われます。
-
ストアドプロシジャのオブジェクト格納用のデータディクショナリLOB用RDエリアを再初期化した場合は,ALTER PROCEDURE ALLですべてのSQLオブジェクトを再作成してください。
-
リスト用RDエリアを再初期化すると,リスト用RDエリア内のリストはすべて削除されます。したがって,絞込み検索をする場合はASSIGN LIST文で再度リストを作成してください。
-
リスト用RDエリアに対してはデータベース再編成ユティリティ(pdrorgコマンド)を実行できません。
-
改竄防止表を格納したRDエリアは再初期化できません。
-
データディクショナリLOB用RDエリア(オブジェクト格納用)を再初期化する場合は,ディクショナリ表のSQL_DIV_COLUMN表を検索し,データディクショナリLOB用RDエリア名を確認する必要があります。検索例を次に示します。
例題
SELECT RDAREA_NAME FROM MASTER.SQL_DIV_COLUMN WHERE TABLE_SCHEMA='HiRDB' AND TABLE_NAME='SQL_ROUTINES' AND COLUMN_NAME='ROUTINE_OBJECT'
-
サーバ内分割表に対してRDエリア単位にデータベース再編成ユティリティ(pdrorg)を実行する場合,処理対象のRDエリアだけではなく,表及びインデクスにも排他が掛かります(詳細については,マニュアル「HiRDB コマンドリファレンス」の「ユティリティの排他制御モード」を参照してください)。また,pdmodコマンドで再初期化(initialize rdarea文)を実行する場合,処理対象のRDエリア及び表に排他モード(EX)の排他が掛かります。そのため,再編成中でないRDエリアに対して再初期化を実行しても排他エラーとなることがあります。例えば,RDエリアR1,R2,及びR3に横分割表T1が格納されていたとします。R1に対して再編成を実行しているときに,R2に対して再初期化を実行すると排他エラーとなります。
このような場合はinitialize rdarea文にwithout lock tableオペランドを指定して再初期化を実行してください。without lock tableオペランドを指定するとpdmodコマンドは処理対象の表に排他を掛けなくなるため,再編成と再初期化を同時に実行できます。without lock tableオペランドの詳細は,マニュアル「HiRDB コマンドリファレンス」の「RDエリアの再初期化」を参照してください。