Symfoware/RDBでは、割り当てられたデータベーススペース内で格納データの配置を自動調整します。しかし、データの追加、更新、および削除を繰り返すと、自動調整の範囲を超えて、データベース内に空き領域が生じる場合があります。これは、性能劣化や、領域不足の原因になります。そこで、DSIに割当てられた領域の使用率を表示することにより、データベースの再配置やデータベースの容量拡張を行う契機を予測し、適切な処置をする必要があります。
以下の手順で、DSIの使用率を確認します。
Interstageディレクトリサービスが使用するDSIの一覧の取得
以下に、Interstageディレクトリサービスが使用するDSIの一覧の取得方法を示します。Symfoware Serverのコマンドrdbprtを使います。
# rdbprt -d DSDB(*1) -m DEF -p - DSI(DS_ENTRY_DSI,DS_SCOPE_DSI,DS_FILTER_DSI)(*2) Ctrl+Z(*3) : No. 1 DSI name ...... DS_ENTRY_DSI Usage type ...... BASE Database name ...... DSDB Schema name ...... DSADMIN Table name ...... DS_ENTRY DSO name ...... DS_ENTRY_DSO Creator ...... DSADMIN Created date ...... Mon Nov 10 14:01:40 2008 Related index DSI information No. Index DSI name 1 IDXDSI_DS_ENTRY_PK 2 IDXDSI_DS_ENTRY_01 : :
*1) irepgendbコマンドで指定したデータベース名
*2) テーブルのDSI名を指定します。Interstageディレクトリサービスが使用するテーブルのDSI名は、以下の3つです。
DS_ENTRY_DSI
DS_SCOPE_DSI
DS_FILTER_DSI
*3) Ctrl+Zは、Ctrlキーを押下しながら「Z」キーを押下します。EOF文字を意味します。この例では、Windows(R)の場合を示しています。Solaris、およびLinuxの場合には、EOF文字は、通常、Ctrl+Dに割り当てられています。
テーブルのDSIごとに、DSI情報が出力されます。
「Related index DSI information」の下に表示される「Index DSI name」がテーブルのDSIに関連するインデックスのDSI名です。この例では、テーブルのDSI「DS_ENTRY_DSI」に関連するインデックスのDSI名は、「IDXDSI_DS_ENTRY_PK」と「IDXDSI_DS_ENTRY_01」の2つです。
同様に、他の2つのテーブルのDSI「DS_SCOPE_DSI」、「DS_FILTER_DSI」に関連するインデックスのDSI名を調べます。
rdbprtコマンドの詳細は、Symfoware Serverのマニュアル“コマンドリファレンス”を参照してください。
DSI使用率の確認
Interstageディレクトリサービスが使用するDSIそれぞれに対して、使用率を確認します。DSIに割当てられた領域の使用率は、rdbudsiコマンドを使って表示します。
テーブルのDSIとインデックスのDSIの使用率は、それぞれ、以下のように表示されます。
テーブルのDSIの使用率の確認例
$ rdbudsi -i DSDB.DS_ENTRY_DSI -f DSI(DSDB.DS_ENTRY_DSI) , TYPE(SEQUENTIAL), DATA(968, 19% , 20% ,250 , 80%) (1) (2) (3) (4) (5)
インデックスのDSIの使用率の確認例
$ rdbudsi -i DSDB.IDXDSI_DS_ENTRY_PK -f DSI(DSDB.IDXDSI_DS_ENTRY_PK) , TYPE(BTREE), BASE( 0 , 0% , 0% ,128 , 0%),INDEX(-- , 0% , 0% , 64 , 0%) (1) (2) (3) (4) (5) (2) (3) (4) (5)
(1) 割付け対象に格納されている行数
(2) 割付けページ数に対してデータが格納されているページの割合(単位は%)
(3) 割付けページ数に対して使用中のページの割合(単位は%)
(4) 割付けページ数
(5) 使用中ページに対してデータが格納されている領域の割合(単位は%)
rdbudsiコマンドの詳細は、Symfoware Serverのマニュアル“コマンドリファレンス”を参照してください。
rdbudsiコマンドで表示される、使用中ページの割合(3)と使用中ページに対してデータが格納されている領域の割合(5)から、データベースの再配置を行うかデータベースの容量拡張を行うかの判断をします。
ここでは、判断を行う時の目安を示します。なお、使用中のページとは、以前に一度でもデータが格納されたことがあるページを表します。ページ内の行がすべて削除されている場合でも、使用中ページとして表示します。
データベースの再配置およびデータベースの容量拡張の操作については、“再編成”を参照してください。
使用中ページの割合(3)が大きい場合(80%を超える)は、再配置または容量拡張を行います。
使用中ページに対してデータが格納されている領域の割合(5)が小さい場合(80%以下)は、再配置を行います。
使用中ページに対してデータが格納されている領域の割合(5)が大きい場合(80%を超える)は、容量拡張を行います。
DSIの使用率を確認するサンプル
Interstage ディレクトリサービスでは、DSIの使用率(断片化状態)を確認するサンプルを、バッチファイル(Windows (R))およびシェルスクリプト(SolarisおよびLinux)で提供します。使用者は、それぞれの環境に適した手順を、サンプルのバッチファイル、またはシェルスクリプトに記述することで、簡単にデータベースの断片化の状態を確認することができます。
このサンプルは、irepgendbコマンドを使用して作成したリポジトリデータ格納用テーブル用のものを提供します。
Symfoware/RDBの断片化状態を確認するサンプルは、以下の位置にあります。
Symfoware ServerをWindows(R)で運用する場合
C:\Interstage\IREP\sample\RDB\SYM\GARBAGE\windows\irepgcstat.bat |
Symfoware ServerをSolaris、またはLinuxで運用する場合
C:\Interstage\IREP\sample\RDB\SYM\GARBAGE\unix\irepgcstat.sh |
Symfoware ServerをWindows(R)で運用する場合
/opt/FJSVirep/sample/RDB/SYM/GARBAGE/windows/irepgcstat.bat |
Symfoware ServerをSolaris、またはLinuxで運用する場合
/opt/FJSVirep/sample/RDB/SYM/GARBAGE/unix/irepgcstat.sh |
断片化状態を確認するための、バッチファイル(Windows(R))、またはシェルスクリプト(SolarisおよびLinux)の定義方法を説明します。
断片化状態を確認するには、バッチファイル、またはシェルスクリプトのサンプル中の、以下に示す定義項目を変更します。すべての定義項目に、必ず値を指定してください。
各定義項目には、“3.1.4 Symfoware/RDBセットアップ”で、Symfoware/RDBのセットアップ時に指定したRDBシステム名、データベース名を指定します。
定義項目名 | 定義値の説明 |
---|---|
RDBNAME | RDBシステム名を指定してください。 |
DBNAME | データベース名を設定してください。 |
サンプルを使用する場合は、上記以外の定義項目を変更する必要はありません。
バッチファイル、およびシェルスクリプトのサンプル中に指定する、“定義項目一覧”の定義項目は、以下の形式で記述します。
set 定義項目名 = 定義値 |
1行に1つの定義項目を記述します。
「=」は、半角で記述します。
定義項目名は、省略することはできません。
Windows(R)用のバッチファイルで、RDBシステム名に「DSDBSYS」、データベース名に「DSDB」を、それぞれ指定するときの例です。SolarisおよびLinux用のシェルスクリプトにも同様に指定してください。
rem------------------------------------ set RDBNAME=DSDBSYS set DBNAME=DSDB rem------------------------------------ |
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/irepgcstat.log |
バッチファイルまたはシェルスクリプトの実行結果出力先ファイルには、手順1でログインしたユーザアカウントの書き込み権が必要です。
以前に、他のユーザアカウントで実行したことがあると、実行結果出力先ファイルのアクセス権に、手順1でログインしたユーザアカウントの書き込み権がなくなっていますので、実行結果出力先ファイルを削除してください。このファイルが必要なら、システム管理者権限でファイル名を変更するなどして、退避してください。
バッチファイルまたはシェルスクリプトの実行
修正したバッチファイルまたはシェルスクリプトを実行します。
以下に例を示します。
C:\work\irepgcstat.bat |
/work/irepgcstat.sh |
実行結果が表示されます。
================================================== DSI Defragmentation Table : 85% Index : 75% ================================================== |
表示項目名 | 表示項目の説明 |
---|---|
Table | テーブルの平均使用率(使用中のDSIページに対してデータが格納されている割合)です。80%以下の場合は、断片化の解消をお勧めします。 |
Index | インデックスの平均使用率(使用中のDSIページに対してデータが格納されている割合)です。80%以下の場合は、断片化の解消をお勧めします。 |
バッチファイルまたはシェルスクリプトの実行結果が、手順5で示したファイルに出力されます。ファイルの文字コード系は、Symfoware Serverをインストールしたときの文字コード系です。