Symfoware/RDBの提供する格納構造は、アプリケーションのデータ処理の効率をできるだけ下げないように、割り当てられたデータベーススペースの枠内で格納データの配置を自己調整します。
しかし、データの追加、更新および削除が頻発した場合、自己調整の範囲内ではデータ処理の効率を維持できなくなることがあります。このような時には、データベースの再配置を行うことにより、処理効率の向上を図ることができます。
データベースの再配置は、rdbgcdsiコマンドで行います。データベースの配置を調整するため他から参照できないように、データベースの再配置の前後では、“参照更新抑止”の設定と解除を行ってください。
参照
rdbgcdsiコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。
データベースの再配置は以下の資源に対して行います。
DSO定義でORDER(0)が指定されたSEQUENTIAL構造の場合
RANDOM構造のオーバフロー部
再配置指定なし、および縮退指定なしのBTREE構造
DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造とそれに付加されたBTREE構造
再配置の種類は、以下の2つがあり、目的に応じて選択してください。
DSIの自動容量拡張と再配置の種類の関係を、以下に示します。
データベースのガーベジコレクション(Garbage Collection)を行います。
領域の割付けおよび返却は一切行いません。
データベースの容量拡張とガーベジコレクション(Garbage Collection)を行います。したがって、自動容量拡張にて割付けた領域を返却した後に、利用者指定の拡張領域を割付けます。
pオプションを指定した場合、ユーザ指定の拡張領域が枯渇すると異常終了します。
cオプションを指定した場合、rdbalmdsiコマンドまたはDSI定義文の指示に従って自動容量拡張します。
RANDOM構造のオーバフロー部の再配置を行う場合の操作の手順と操作例を以下に示します。
(1) 対象DSIに“更新抑止”の利用規定を設定します。 ――― rdbrtrコマンド (rwオプション) (2) 対象DSIのアンロードを行います。 ――― rdbunlコマンド (3) 対象DSIの“更新抑止”の利用規定を解除します。 ――― rdbrlsコマンド (rwオプション) (4) 対象DSIに“参照更新抑止”の利用規定を設定します。 ――― rdbrtrコマンド (rrwオプション) (5) 対象DSIの再配置を行います。 ――― rdbgcdsiコマンド (Gオプションまたは Eオプション) 正常終了 → (9)へ 異常終了(DSI容量不足発生時) → (6)へ 異常終了(入出力障害など、DSI容量不足以外 ) → (7)へ (6) 対象DSIの容量拡張と再配置を行います。 ――― rdbgcdsiコマンド (Rオプション) 正常終了 → (9)へ 異常終了(DSI容量不足発生時) → (6)へ 異常終了(入出力障害など、DSI容量不足以外 ) → (7)へ (7) 対象DSIの“参照更新抑止”の利用規定を解除します。 ――― rdbrlsコマンド (rrwオプション) (8) 異常原因を取り除いた後に、対象DSIのデータ ――― rdbsloaderコマンド をロードします。 (5)でGオプションを実行した場合 → (10)へ (5)でEオプションを実行した場合 → (4)へ (9) 対象DSIの“参照更新抑止”の利用規定を解除します。 ――― rdbrlsコマンド (rrwオプション) (10) 業務開始
$ rdbrtr -i 在庫管理DB.在庫表DSI -rw $ rdbunl -i 在庫管理DB.在庫表DSI /home/testdir/unl.stock $ rdbrls -i 在庫管理DB.在庫表DSI -rw $ rdbrtr -i 在庫管理DB.在庫表DSI -rrw $ rdbgcdsi -G -i 在庫管理DB.在庫表DSI -u /home/testdir -w /home/rdb1/work rdb: INFO: qdg12074i:rdbgcdsiが正常終了しました 復帰コード 00 (システム名=rdbsys1) $ rdbrls -i 在庫管理DB.在庫表DSI -rrw 業務開始
注意
rdbgcdsiコマンドが完了したあと、DSIの再配置以前に取得した退避データを用いたメディアリカバリが実行できなくなります。rdbgcdsiコマンドが正常終了したあとには、異常時に備えて、DSIの退避データを取得してください。
Expandモードを使用してDSIを再配置する場合、対象DSIの自動拡張された領域はすべて返却します。したがって、このことを考慮して拡張する領域の見積りを行ってください。
対象のDSIがメモリに常駐している場合、Expandモードを使用したDSIの再配置を行うことはできません。rdbresidentコマンドでDSIのメモリ常駐を解除してから、Expandモードを使用したDSIの再配置を行ってください。DSIのメモリ常駐を解除した場合は、再配置の完了後にrdbresidentコマンドでDSIをメモリに常駐させてください。
スケーラブルログ運用を行っている場合は、以下のことに注意してください。
EオプションまたはRオプションで、拡張先のデータベーススペース名を指定する場合は、処理対象のDSIの領域を割り付けたデータベーススペースと同一のロググループを使用するものでなければなりません。
データベーススペース名を複数指定する場合は、同一ロググループを使用するデータベーススペースでなければなりません。
格納データを暗号化している場合は、以下のことに注意してください。
EオプションまたはRオプションで、拡張先のデータベーススペース名を指定する場合は、処理対象のDSIの領域を割り付けたデータベーススペースと同じ暗号化指定でなければなりません。
データベーススペース名を複数指定する場合は、データベーススペースの暗号化指定が統一されていなければなりません。
SEQUENTIAL構造の表のDSIに対してrdbgcdsiコマンドを実行する場合には、関連するインデックスのDSIに対しても利用規定の設定をしてください。
インデックスのDSIに対してrdbgcdsiコマンドを実行する場合には、インデックスのDSIが属する表のDSIに対しても利用規定の設定をしてください。
アーカイブログ運用を行っている場合、Expandモードを使用してrdbgcdsiコマンドを実行するとシステムロググループおよびユーザロググループのアーカイブログファイルへログ情報を収集します。rdbgcdsiコマンドを実行中にユーザロググループまたはシステムロググループのアーカイブログファイルが満杯になると、rdbgcdsiコマンドはアーカイブログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、アーカイブログファイルをバックアップすることにより処理待ち状態を解除できます。
rdbgcdsiコマンド実行前にアーカイブログファイルの使用状況を把握し、必要に応じて強制切替えや、破棄またはバックアップのタイミングを調整してください。アーカイブログファイルの詳細については、“4.4 異常時に備えたデータのバックアップ”を参照してください。