ページの先頭行へ戻る
PRIMEFLEX for HA Database 業務開発ガイド(Native SQL編)
FUJITSU Integrated System

4.2.4 再編成

次のオンライン業務に向けて、データベースの再編成を行います。再編成は、“4.2.2 容量監視”の結果により、再配置または容量拡張を行います。また、オンライン業務で不要になったデータベースのデータの削除も行います。

4.2.4.1 データベースの再配置

PRIMEFLEX for HA Databaseの提供する格納構造は、アプリケーションのデータ処理の効率をできるだけ下げないように、割り当てられたデータベーススペースの枠内で格納データの配置を自己調整します。

しかし、データの追加、更新および削除が頻発した場合、自己調整の範囲内ではデータ処理の効率を維持できなくなることがあります。このような時には、データベースの再配置を行うことにより、処理効率の向上を図ることができます。

データベースの再配置は、rdbgcdsiコマンドで行います。データベースの配置を調整するため他から参照できないように、データベースの再配置の前後では、“参照更新抑止”の設定と解除を行ってください。

参照

rdbgcdsiコマンドの指定方法の詳細については、“Symfoware Server コマンドリファレンス”を参照してください。

データベースの再配置は以下の資源に対して行います。

再配置の種類は、以下の2つがあり、目的に応じて選択してください。

DSIの自動容量拡張と再配置の種類の関係を、以下に示します。

静的再編成(GC)の場合

データベースのガーベジコレクション(Garbage Collection)を行います。

領域の割付けおよび返却は一切行いません。

静的再編成(EX)の場合
  • データベースの容量拡張とガーベジコレクション(Garbage Collection)を行います。したがって、自動容量拡張にて割付けた領域を返却した後に、利用者指定の拡張領域を割付けます。

  • pオプションを指定した場合、ユーザ指定の拡張領域が枯渇すると異常終了します。

  • cオプションを指定した場合、rdbalmdsiコマンドまたはDSI定義文の指示に従って自動容量拡張します。

SEQUENTIAL構造の再配置を行う場合の操作の手順と操作例を以下に示します。

操作の手順

(1) 対象DSIに“更新抑止”の利用規定を設定します。        ――― rdbrtrコマンド 
                                                                (rwオプション) 
(2) 対象DSIのアンロードを行います。                      ――― rdbunlコマンド 
(3) 対象DSIの“更新抑止”の利用規定を解除します。        ――― rdbrlsコマンド 
                                                                (rwオプション) 
(4) 対象DSIに“参照更新抑止”の利用規定を設定します。    ――― rdbrtrコマンド  
                                                                (rrwオプション) 
(5) 対象DSIに関連するすべてのインデックスのDSに          ――― rdbrtrコマンド  
   “参照更新抑止”の利用規定を設定します。                     (rrwオプション) 
(6) 対象DSIの再配置を行います。                          ――― rdbgcdsiコマンド 
                                                                (Gオプションまたは 
                                                                 Eオプション) 
        正常終了                                       → (11)へ 
        異常終了(DSI容量不足発生時)                  → (7)へ 
        異常終了(入出力障害など、DSI容量不足以外 )   → (8)へ 
(7) 対象DSIの容量拡張と再配置を行います。                ――― rdbgcdsiコマンド 
                                                                (Rオプション) 
        正常終了                                       → (11)へ 
        異常終了(DSI容量不足発生時)                  → (7)へ 
        異常終了(入出力障害など、DSI容量不足以外 )   → (8)へ 
(8) 対象DSIに関連するすべてのインデックスのDSIの         ――― rdbrlsコマンド
    “参照更新抑止”の利用規定を解除します。                    (rrwオプション) 

(9) 対象DSIの“参照更新抑止”の利用規定を解除します。    ――― rdbrlsコマンド
                                                                (rrwオプション) 
(10) 異常原因を取り除いた後に、対象DSIのデータ           ――― rdbsloaderコマンド
  をロードします。 
        (6)でGオプションを実行した場合                 → (13)へ 
        (6)でEオプションを実行した場合                 → (4)へ 
(11) 対象DSIに関連するすべてのインデックスのDSIの         ――― rdbrlsコマンド
    “参照更新抑止”の利用規定を解除します。                    (rrwオプション) 
(12) 対象DSIの“参照更新抑止”の利用規定を解除します。   ――― rdbrlsコマンド
                                                                (rrwオプション) 
(13) 業務開始

操作例

$ rdbrtr -i 在庫管理DB.在庫表DSI -rw 

$ rdbunl -i 在庫管理DB.在庫表DSI /disk3/rdb/data/unl.stock 

$ rdbrls -i 在庫管理DB.在庫表DSI -rw 

$ rdbrtr -i 在庫管理DB.在庫表DSI -rrw 
$ rdbrtr -i 在庫管理DB.製品番号IXDSI -rrw 

$ rdbgcdsi -G -i 在庫管理DB.在庫表DSI -u /disk3/rdb/data -w /disk3/rdb/data/work 

rdb: INFO: qdg12074i:rdbgcdsiが正常終了しました 復帰コード 00 (システム名=DBAP) 

$ rdbrls -i 在庫管理DB.製品番号IXDSI -rrw 
$ rdbrls -i 在庫管理DB.在庫表DSI -rrw 

業務開始

注意

  • Expandモードを使用してDSIを再配置する場合、対象DSIの自動拡張された領域はすべて返却します。したがって、このことを考慮して拡張する領域の見積りを行ってください。

  • 表のDSIに対してrdbgcdsiコマンドを実行する場合には、関連するインデックスのDSIに対しても利用規定の設定をしてください。

  • インデックスのDSIに対してrdbgcdsiコマンドを実行する場合には、インデックスのDSIが属する表のDSIに対しても利用規定の設定をしてください。

  • Expandモードを使用したrdbgcdsiコマンド実行中にログファイルが満杯になると、rdbgcdsiコマンドはログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、Appliance Managerでリカバリーを実施することにより処理待ちを解除できます。

4.2.4.2 データベースの容量拡張

データベースの初期の容量は、DSI定義時(CREATE DSI文)に指定するデータベース容量で決定します。その後の運用でデータベースの容量を拡張する必要性が発生した場合は、以下の方法で容量の拡張を行います。

また、一度rdbalmdsiコマンドまたはDSI定義文で設定したアラームポイントおよび自動容量拡張の定義を無効にするためには、DSIを再定義する必要があります。

容量拡張のための領域が確保できない場合は、すでに格納済みのデータを圧縮することで、容量拡張を行うことなく、データベースの容量を確保することができます。

表のデータ圧縮は、表のデータ構造がSEQUENTIALの場合に行えます。ただし、画像データのような圧縮済みのデータおよびDSIの容量が500メガバイト未満の場合、十分な圧縮効果は得られません。

表のデータ圧縮については、“3.6 表のデータ圧縮”を参照してください。

DSI変更文によるDSIの容量拡張

運用中にDSIの残りの領域が少なくなった場合に、業務の合間にDSI変更文により自動容量拡張を任意に実施させることができます。
自動容量拡張とは、運用中にDSIの残りの領域が、指定した容量に達した時点で、DSIの容量を自動的に拡張する機能です。

DSI変更文によるDSIの容量拡張の作業手順は以下のとおりです。

  1. 追加データベーススペースの作成

    データベーススペースをrdbddlexコマンドのCREATE DBSPACE文で作成します。既存のデータベーススペースを利用する場合には、この操作は不要です。

  2. 容量拡張の実施

    DSI変更文でDSIの容量拡張を実施します。

参照

DSI変更文の指定方法の詳細については、“Symfoware Server SQLリファレンス”を参照してください。

定義変更によるDSIの容量拡張

DSIの再定義やDSOにDSIを追加するなど、既存の定義を変更することによりDSIの容量を拡張します。詳細については、“4.3 データベースの再構築”を参照してください。

自動容量拡張によるDSIの容量拡張

rdbalmdsiコマンドまたはDSI定義文でDSIに自動容量拡張の指定をします。

自動容量拡張の作業手順は以下のとおりです。

  1. 追加データベーススペースの作成

    データベーススペースをrdbddlexコマンドのCREATE DBSPACE文で作成します。既存のデータベーススペースを利用する場合には、この操作は不要です。

  2. 拡張契機の指示

    rdbalmdsiコマンドまたはDSI定義文でDSIに自動容量拡張の指定をします。セットアップ時に自動容量拡張の設定を有効にした場合は、この操作は省略できます。

参照

  • rdbalmdsiコマンドの指定方法の詳細については、“Symfoware Serverコマンドリファレンス”を参照してください。

  • DSI定義文の指定方法の詳細については、“Symfoware Server SQLリファレンス”を参照してください。

自動容量拡張の契機となる機能

以下の機能が自動容量拡張の契機となります。

自動容量拡張の拡張契機と拡張量

rdbalmdsiコマンドにより、在庫表に対応する在庫表DSIの残量が40キロバイトに達した時点にデータベーススペースDBSP_4およびデータベーススペースDBSP_5から100キロバイト単位に容量を拡張する場合の指定例を以下に示します。

$ rdbalmdsi -i 在庫管理DB.在庫表DSI
                   (1)           (2)
            -c 40K  -e 100K  -p 在庫管理DB.DBSP_4:在庫管理DB.DBSP_5
               (3)     (4)                         (5)
(1) データベース名
(2) DSI名
(3) 拡張契機
(4) 拡張量
(5) 割付け予定のデータベーススペース名

なお、DSIの残り容量が枯渇した時点で自動容量拡張を行うには、拡張契機に0キロバイトを指定します。

また、以下のコマンドでは、処理対象のDSIの容量不足を検出した契機で自動容量拡張が行われます。rdbalmdsiコマンドで指定した拡張契機については無視されます。

以下に、容量が512キロバイトでページ長が32キロバイトのDSIに自動容量拡張の指定例を設定した場合の概要図を示します。

例の場合、14ページ目以降を使用した契機で自動容量拡張が行われます。

注意

  • 拡張量は、ページ長単位に繰り上げるため、ページ長の倍数で指定してください。

  • 拡張契機は、rdbalmdsiコマンドまたはDSI定義文で指定した値以下で、かつ対象のDSIのページ長の倍数となる値で処理されますので、ページ長の倍数で指定してください。

  • 自動容量拡張の実行中にログファイルが満杯になると、自動容量拡張はログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、Appliance Managerでリカバリーを実施することにより処理待ちを解除できます。

4.2.4.3 データベースの再初期化によるデータの削除

rdbfmtコマンドにより、オンライン業務で不要になった創成済のデータベースに格納されているデータをすべて削除することができます。この場合、表のDSIに対してrdbfmtコマンドを実行した後に、関連するすべてのインデックスのDSIに対してrdbfmtコマンドを実行する必要があります。

再初期化には、自動容量拡張された領域も含めて再初期化する方法と、自動容量拡張する前の初期状態まで戻して初期化する方法があります。

参照

rdbfmtコマンドの指定方法の詳細については、“Symfoware Server コマンドリファレンス”を参照してください。

自動容量拡張された領域も含めて再初期化する方法

rdbfmtコマンドの動作モードにmidを指定して実行します。この場合の使用例と処理を以下に示します。

$ rdbfmt -mid -i 在庫管理DB.在庫表DSI 

(1) 初期割付け領域

(2) 拡張領域

注意

rdbfmtコマンド実行中にログファイルが満杯になると、rdbfmtコマンドはログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、Appliance Managerでリカバリーを実施することにより処理待ちを解除できます。

自動容量拡張する前の初期化状態まで戻して初期化する方法

rdbfmtコマンドの動作モードにmid、オプションにcを指定して実行します。この場合の使用例と処理を以下に示します。

$ rdbfmt -mid -i 在庫管理DB.在庫表DSI -c 

(1) 初期割付け領域

(2) 拡張領域

注意

rdbfmtコマンド実行中にログファイルが満杯になると、rdbfmtコマンドはログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、Appliance Managerでリカバリーを実施することにより処理待ちを解除できます。