容量監視の結果により、再配置または容量拡張を行います。
Symfoware/RDBの提供する格納構造は、アプリケーションのデータ処理の効率をできるだけ下げないように、割り当てられたデータベーススペースの枠内で格納データの配置を自己調整します。
しかし、データの追加、更新および削除が頻発した場合、自己調整の範囲内ではデータ処理の効率を維持できなくなることがあります。このような時には、データベースの再配置を行うことにより、処理効率の向上を図ることができます。
データベースの再配置は、rdbgcdsiコマンドで行います。データベースの配置を調整するため、他から参照できないように、データベースの再配置の前後では、「参照更新抑止」の設定と解除を行ってください。
rdbgcdsiコマンドの指定方法の詳細は、Symfoware Serverのマニュアル“コマンドリファレンス”を参照してください。
再配置の種類は、以下の2つがあり、目的に応じて選択してください。
DSIの容量拡張を伴わない再配置(rdbgcdsiコマンドのGarbage Collectionモード)
データベースのガーベジコレクション(Garbage Collection)を行います。
領域の割付けおよび返却は一切行いません。
DSIの容量拡張を伴う再配置(rdbgcdsiコマンドのExpandモード)
データベースの容量拡張とガーベジコレクション(Garbage Collection)を行います。
自動容量拡張で割付けた領域を返却した後に、利用者指定の拡張領域を割付けます。
ここでは、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 業務開始
rdbgcdsiコマンドが完了したあと、DSIの再配置以前に取得した退避データを用いたメディアリカバリが実行できなくなります。rdbgcdsiコマンドが正常終了したあとには、異常時に備えて、DSIの退避データを取得してください。
表のDSIに対してrdbgcdsiコマンドを実行する場合には、関連するインデックスのDSIに対しても利用規定の設定をしてください。
インデックスのDSIに対してrdbgcdsiコマンドを実行する場合には、インデックスのDSIが属する表のDSIに対しても利用規定の設定をしてください。
データベースの再配置(断片化解消)をするサンプル
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システム名を指定してください。 |
DBNAME | データベース名を設定してください。 |
W_DIR | 再編成コマンドの作業用ファイルを格納するためのディレクトリを絶対パスで指定します。 作業用領域として必要な容量(キロバイト単位)の見積もり式を以下に示します。
|
U_DIR | 再編成コマンドの中間退避用ファイルを格納するためのディレクトリを絶対パスで指定します。 中間退避用領域として必要な容量(キロバイト単位)の見積もり式を以下に示します。
|
TARGET | 再編成対象DSIを以下のどちらかで指定できます。
|
サンプルを使用する場合は、上記以外の定義項目を変更する必要はありません。
バッチファイル、およびシェルスクリプトのサンプル中に指定する、“定義項目一覧”の定義項目は、以下の形式で記述します。
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------------------------------------ |
Interstage ディレクトリサービスのリポジトリの停止
リポジトリの停止は、“10.1 リポジトリの起動・停止”を参照してください。
Symfoware Serverを運用しているマシンに、ログイン
システム管理者アカウント(Windows(R)の場合は「Administrator」、SolarisおよびLinuxの場合は「root」)か、または“3.1.4.5 リポジトリ用データベース接続ユーザの登録”で登録したOSアカウントでログインします。
サンプルの修正
バッチファイル(Windows(R))、またはシェルスクリプト(Solaris、およびLinux)のサンプルを、作業用ディレクトリにコピーします。
“記述形式”および、“定義項目一覧”を参照し、バッチファイル(Windows(R))、またはシェルスクリプト(Solaris、およびLinux)のサンプルを修正します。
セキュリティ対策
バッチファイルまたはシェルスクリプトは、セキュリティホールとなる可能性があります。システム管理者アカウント(Windows(R)の場合は「Administrator」、SolarisおよびLinuxの場合は「root」)、または“3.1.4.5 リポジトリ用データベース接続ユーザの登録”で登録したOSアカウントだけが実行できるように、バッチファイルまたはシェルスクリプトの実行権を変更することをお勧めします。
環境変数LANGの設定
環境変数LANGに、Symfoware/RDBのロケール(OSのデフォルトロケール)を設定します。
実行結果出力先ファイルの削除
バッチファイルまたはシェルスクリプトの実行結果は、以下に出力されます。
バッチファイルまたはシェルスクリプトを実行したディレクトリ/log/irepgarbage.log |
コマンドの実行結果出力先ファイルには、手順2でログインしたユーザアカウントの書き込み権が必要です。
以前に、他のユーザアカウントで実行したことがあると、実行結果出力先ファイルのアクセス権に、手順2でログインしたユーザアカウントの書き込み権がなくなっていますので、実行結果出力先ファイルを削除してください。このファイルが必要なら、システム管理者権限でファイル名を変更するなどして、退避してください。
バッチファイルまたはシェルスクリプトの実行
修正したバッチファイル、またはシェルスクリプトを実行します。
以下に例を示します。
C:\work\irepgarbage.bat |
/work/irepgarbage.sh |
確認画面が表示されます。
実行する場合は、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のメッセージ集を参照して、エラー要因を取り除いてください。エラーに対処したあと、再度実行してください。
最適化の設定
断片化を解消したSymfoware/RDBの最適化情報の設定をします。
データベースの初期の容量は、irepgendbコマンドで決定します。その後の運用でデータベースの容量を拡張する必要性が発生した場合は、以下の方法で容量の拡張を行います。
DSI変更文によるDSIの容量拡張
定義変更によるDSIの容量拡張
自動容量拡張によるDSIの容量拡張
ここでは、自動容量拡張によるDSIの容量拡張の方法を説明します。その他の方法は、Symfoware Serverのマニュアル“トラブルシューティング集”の“容量拡張を行う”を参照してください。
rdbalmdsiコマンドまたはDSI定義文でDSIに自動容量拡張の指定をします。
自動容量拡張の作業手順は以下のとおりです。
ローデバイスの確保
データベーススペースを作成するためのローデバイスを確保します。既存のデータベーススペースを利用する場合には、この操作は不要です。
追加データベーススペースの作成
確保したローデバイス上に、データベーススペースをrdbddlexコマンドのCREATE DBSPACE文で作成します。既存のデータベーススペースを利用する場合には、この操作は不要です。
拡張契機の指示
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
拡張量は、ページ長単位に繰り上げるため、ページ長の倍数で指定してください。
拡張契機は、rdbalmdsiコマンドまたはDSI定義文で指定した値以下で、かつ対象のDSIのページ長の倍数となる値で処理されますので、ページ長の倍数で指定してください。
リポジトリが使用するテーブルDSIのページ長は32Kバイト、インデックスDSIのページ長は4Kバイトです。