ページの先頭行へ戻る
Interstage Application Server ディレクトリサービス運用ガイド

10.7.3 再編成

  容量監視の結果により、再配置または容量拡張を行います。

10.7.3.1 データベースの再配置(断片化解消)

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

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

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

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

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

  ここでは、DSIの容量拡張を伴わない再配置の方法を説明します。DSIの容量拡張を伴う再配置の方法は、Symfoware Serverのマニュアルを参照してください。

◆操作の手順

(1) 対象DSIに「更新抑止」の利用規定を設定します。        ――― rdbrtrコマンド 
                                                                (rwオプション) 

(2) 対象DSIのアンロードを行います。                      ――― rdbunlコマンド 

(3) 対象DSIの「更新抑止」の利用規定を解除します。        ――― rdbrlsコマンド 
                                                                (rwオプション) 

(4) 対象DSIに「参照更新抑止」の利用規定を設定します。    ――― rdbrtrコマンド  
                                                                (rrwオプション) 

(5) 対象DSIの再配置を行います。                          ――― rdbgcdsiコマンド 
                                                                (Gオプション) 
        正常終了                                       → (9)へ 
        異常終了(DSI容量不足発生時)                  → (6)へ 
        異常終了(入出力障害など、DSI容量不足以外 )   → (7)へ 

(6) 対象DSIの容量拡張と再配置を行います。                ――― rdbgcdsiコマンド 
                                                                (Rオプション) 
        正常終了                                       → (9)へ 
        異常終了(DSI容量不足発生時)                  → (6)へ 
        異常終了(入出力障害など、DSI容量不足以外 )   → (7)へ 

(7) 対象DSIの「参照更新抑止」の利用規定を解除します。    ――― rdbrlsコマンド
                                                                (rrwオプション) 

(8) 異常原因を取り除いた後に、対象DSIのデータ            ――― rdbsloaderコマンド
  をロードします。 

(9) 対象DSIの「参照更新抑止」の利用規定を解除します。    ――― rdbrlsコマンド
                                                                (rrwオプション) 

(10) 業務開始

◆操作例

$ rdbrtr -i DSDB.IDXDSI_DS_SCOPE_UNQ -rw 

$ rdbunl -i DSDB.IDXDSI_DS_SCOPE_UNQ /home/testdir/unl.stock 

$ rdbrls -i DSDB.IDXDSI_DS_SCOPE_UNQ -rw 

$ rdbrtr -i DSDB.IDXDSI_DS_SCOPE_UNQ -rrw 

$ rdbgcdsi -G -i DSDB.IDXDSI_DS_SCOPE_UNQ -u /home/testdir -w /home/rdb1/work 

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

$ rdbrls -i DSDB.IDXDSI_DS_SCOPE_UNQ -rrw 

業務開始

データベースの再配置(断片化解消)をするサンプル

  Interstage ディレクトリサービスでは、DSIの容量拡張を伴わないデータベースの再配置(断片化解消)をするサンプルを、バッチファイル(Windows (R))およびシェルスクリプト(SolarisおよびLinux)で提供します。使用者は、それぞれの環境に適した手順を、サンプルのバッチファイル、またはシェルスクリプトに記述することで、簡単にデータベースの再配置をすることができます。

  このサンプルは、irepgendbコマンドを使用して作成したリポジトリデータ格納用テーブル用のものを提供します。

サンプル

  Symfoware/RDBの断片化を解消するサンプルは、以下の位置にあります。

  • Symfoware ServerをWindows(R)で運用する場合

    C:\Interstage\IREP\sample\RDB\SYM\GARBAGE\windows\irepgarbage.bat

      

  • Symfoware ServerをSolaris、またはLinuxで運用する場合

    C:\Interstage\IREP\sample\RDB\SYM\GARBAGE\unix\irepgarbage.sh

  

  • Symfoware ServerをWindows(R)で運用する場合

    /opt/FJSVirep/sample/RDB/SYM/GARBAGE/windows/irepgarbage.bat

      

  • Symfoware ServerをSolaris、またはLinuxで運用する場合

    /opt/FJSVirep/sample/RDB/SYM/GARBAGE/unix/irepgarbage.sh

  

  断片化を解消するための、バッチファイル(Windows (R))、またはシェルスクリプト(SolarisおよびLinux)の定義方法を説明します。

定義項目一覧

  断片化を解消するには、バッチファイル、またはシェルスクリプトのサンプル中の、以下に示す定義項目を変更します。すべての定義項目に、必ず値を指定してください。
  RDBNAME、DBNAMEには、それぞれ、“3.1.4 Symfoware/RDBセットアップ”で、Symfoware/RDBのセットアップ時に指定したRDBシステム名、データベース名を指定します。

定義項目名

定義値の説明

RDBNAME

RDBシステム名を指定してください。
RDBシステム名に使える文字は、半角英数字です。

DBNAME

データベース名を設定してください。
データベース名に使える文字は、半角英数字です。

W_DIR

再編成コマンドの作業用ファイルを格納するためのディレクトリを絶対パスで指定します。

作業用領域として必要な容量(キロバイト単位)の見積もり式を以下に示します。

  • テーブル作成コマンドで詳細設定を行わなかった場合
      (14 × エントリ数 + 48) × r

  • テーブル作成コマンドで詳細設定を行った場合
      詳細定義ファイルで指定したインデックスのうち最大サイズ × r
      r : 安全率(1.5以上)

U_DIR

再編成コマンドの中間退避用ファイルを格納するためのディレクトリを絶対パスで指定します。

中間退避用領域として必要な容量(キロバイト単位)の見積もり式を以下に示します。

  • テーブル作成コマンドで詳細設定を行わなかった場合
      13.6 × エントリ数 + 160

  • テーブル作成コマンドで詳細設定を行った場合
      詳細定義ファイルで指定したテーブルのうち最大サイズ

TARGET

再編成対象DSIを以下のどちらかで指定できます。

  • FULL
      表とインデックスの両方を対象

  • INDEX
      インデックスのみを対象

  サンプルを使用する場合は、上記以外の定義項目を変更する必要はありません。

記述形式

  バッチファイル、およびシェルスクリプトのサンプル中に指定する、“定義項目一覧”の定義項目は、以下の形式で記述します。

set 定義項目名 = 定義値

  • 1行に1つの定義項目を記述します。

  • 「=」は、半角で記述します。

  • 定義項目名は、省略することはできません。


  Windows(R)用のバッチファイルで、RDBシステム名に「DSDBSYS」、データベース名に「DSDB」を、それぞれ指定するときの例です。Solaris、およびLinux用のシェルスクリプトにも同様に指定してください。

  rem------------------------------------
  set RDBNAME=DSDBSYS
  set DBNAME=DSDB
  set W_DIR=C:\work 
  set U_DIR=C:\back
  set TARGET=INDEX
  rem------------------------------------
■実行方法
  1. Interstage ディレクトリサービスのリポジトリの停止

    リポジトリの停止は、“10.1 リポジトリの起動・停止”を参照してください。

  2. Symfoware Serverを運用しているマシンに、ログイン

    システム管理者アカウント(Windows(R)の場合は「Administrator」、SolarisおよびLinuxの場合は「root」)か、または“3.1.4.5 リポジトリ用データベース接続ユーザの登録”で登録したOSアカウントでログインします。

  3. サンプルの修正

    バッチファイル(Windows(R))、またはシェルスクリプト(Solaris、およびLinux)のサンプルを、作業用ディレクトリにコピーします。
    記述形式”および、“定義項目一覧”を参照し、バッチファイル(Windows(R))、またはシェルスクリプト(Solaris、およびLinux)のサンプルを修正します。

  4. セキュリティ対策

    バッチファイルまたはシェルスクリプトは、セキュリティホールとなる可能性があります。システム管理者アカウント(Windows(R)の場合は「Administrator」、SolarisおよびLinuxの場合は「root」)、または“3.1.4.5 リポジトリ用データベース接続ユーザの登録”で登録したOSアカウントだけが実行できるように、バッチファイルまたはシェルスクリプトの実行権を変更することをお勧めします。

  5. 環境変数LANGの設定

    環境変数LANGに、Symfoware/RDBのロケール(OSのデフォルトロケール)を設定します。

  6. 実行結果出力先ファイルの削除

    バッチファイルまたはシェルスクリプトの実行結果は、以下に出力されます。

    バッチファイルまたはシェルスクリプトを実行したディレクトリ/log/irepgarbage.log


    コマンドの実行結果出力先ファイルには、手順2でログインしたユーザアカウントの書き込み権が必要です。
    以前に、他のユーザアカウントで実行したことがあると、実行結果出力先ファイルのアクセス権に、手順2でログインしたユーザアカウントの書き込み権がなくなっていますので、実行結果出力先ファイルを削除してください。このファイルが必要なら、システム管理者権限でファイル名を変更するなどして、退避してください。

  7. バッチファイルまたはシェルスクリプトの実行

    修正したバッチファイル、またはシェルスクリプトを実行します。
    以下に例を示します。


    C:\work\irepgarbage.bat

    /work/irepgarbage.sh

      

  8. 確認画面が表示されます。

    実行する場合は、y <RETURN>を、処理を中止する場合は、q <RETURN>を入力してください。

      ================== WARNING ========================
      = Fragmentation takes a short period to clear.  =
      = Do not stop this process once it has started, =
      = as this may cause corruption of the database. =
      ===================================================
      Garbage start? [y, q]: y or q <RETURN>

    バッチファイルまたはシェルスクリプトの実行結果が、手順6で示したファイルに出力されます。ファイルの文字コード系は、Symfoware Serverをインストールしたときの文字コード系です。
    実行に失敗した場合は、Symfoware Serverのメッセージ集を参照して、エラー要因を取り除いてください。エラーに対処したあと、再度実行してください。

  9. 最適化の設定

    断片化を解消したSymfoware/RDBの最適化情報の設定をします。

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

  データベースの初期の容量は、irepgendbコマンドで決定します。その後の運用でデータベースの容量を拡張する必要性が発生した場合は、以下の方法で容量の拡張を行います。

  ここでは、自動容量拡張によるDSIの容量拡張の方法を説明します。その他の方法は、Symfoware Serverのマニュアル“トラブルシューティング集”の“容量拡張を行う”を参照してください。

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

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

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

  1. ローデバイスの確保

    データベーススペースを作成するためのローデバイスを確保します。既存のデータベーススペースを利用する場合には、この操作は不要です。

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

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

  3. 拡張契機の指示

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

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

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

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


  rdbalmdsiコマンドを使って、インデックスのDSI「IDXDSI_DS_SCOPE_UNQ」に、残量が40Kバイトに達した時点にデータベーススペースDSDBSPACEおよびデータベーススペースDSDBSPACE2から100Kバイト単位に容量を拡張する場合の指定例を以下に示します。

$ rdbalmdsi -i DSDB.IDXDSI_DS_SCOPE_UNQ
                   (1)           (2)
            -c 40K  -e 100K  -p DSDB.DSSBSPACE:DSDB.DSDBSPACE2
               (3)     (4)                         (5)

(1) データベース名
(2) DSI名
(3) 拡張契機
    DSIの残り容量が枯渇した時点で自動容量拡張を行うには、拡張契機に0キロバイトを指定します。
(4) 拡張量
(5) 割付け予定のデータベーススペース名


  既存のデータベーススペースを利用して、インデックスのDSI「IDXDSI_DS_SCOPE_UNQ」に、アラームポイント20Kバイト、拡張契機20Kバイト、拡張量200Kバイトを設定する例を示します。

$ rdbalmdsi -i DSDB.IDXDSI_DS_SCOPE_UNQ -a 20K -c 20K -e 200K -p DSDB.DSDBSPACE