10.2 使用例

リバランスユティリティの使用例を例1~例4に示します。

<この節の構成>
(1) 共有モードの場合
(2) 占有モードの場合

(1) 共有モードの場合

例1:
HiRDB/シングルサーバの場合に,表(reb_table)にRDエリア(user03)を追加して,共有モードでリバランスユティリティを実行します。
  • 表定義

 CREATE TABLE reb_table(hkeys INT NOT NULL,names CHAR(30))
     FIX HASH HASHA BY hkeys IN (user01,user02)

  • インデクス定義
CREATE INDEX idx1 ON reb_table(hkeys) IN ((idx01),(idx02))
●ALTER TABLEでのRDエリアの追加

ALTER TABLE reb_table ADD RDAREA user03 FOR INDEX idx1 in idx03

[説明]
表reb_tableにRDエリアuser03を追加します。また,インデクスidx1に対してもRDエリアidx03を追加します。
●pdrbalのコマンド

pdrbal -k share -t reb_table control_file

[説明]
-k share:動作モード(共用モード)
-t reb_table:リバランス表の名称
control_file:制御情報ファイル
●制御情報ファイル(control_file)の内容

execstop time,9:00    [1]
report /dsk01/rest_file    [2]

[説明]
  1. 9時間後にpdrbalを停止させます。
  2. 処理結果ファイル(/dsk01/rest_file)にpdrbalの実行結果を出力します。

 

例2:
HiRDB/シングルサーバの場合に,表(sgml_table)にRDエリア(user03)を追加して,共有モードでリバランスユティリティを実行します。なお,表sgml_tableにはプラグインが提供する抽象データ型の列があるものとします。
  • 表定義

 CREATE TABLE sgml_table (
     hkeys INT NOT NULL,
     doctext SGMLTEXT ALLOCATE (sgmltext IN ((LOB1D),(LOB2D)))
     PLUGIN '<DTD>新聞</DTD><EXTRACTparm>extract.prm</EXTRACTparm>'
     )
     FIX HASH HASHA BY hkeys IN (user01,user02)

  • インデクス定義
CREATE INDEX idx1 ON sgml_table(hkeys) IN ((idx01),(idx02))
CREATE INDEX ngram_index USING TYPE MASTER.NGRAM on sgml_table(doctext)
in ((LOB1I),(LOB2I))
●ALTER TABLEでのRDエリアの追加

ALTER TABLE sgml_table ADD RDAREA user03
    FOR COLUMN doctext ALLOCATE(sgmltext IN LOB3D)
    FOR INDEX idx1 in idx03,ngram_index in LOB3I

[説明]
表sgml_tableにRDエリアuser03を追加します。また,インデクスidx1に対してRDエリアidx03を,プラグインインデクスngram_indexに対してRDエリアLOB3Iを追加します。
●pdrbalのコマンド

pdrbal -k share -t sgml_table control_file

[説明]
-k share:動作モード(共用モード)
-t sgml_table:リバランス表の名称
control_file:制御情報ファイル
●制御情報ファイル(control_file)の内容

execstop time,12:00    [1]
unld_func type=sgmltext,func=unsgmltext(sgmltext)    [2]
reld_func type=sgmltext,func=sgmltext(blob)    [3]
report /dsk01/rest_file    [4]

[説明]
  1. 12時間後にpdrbalを停止させます。
  2. コンストラクタパラメタ逆生成関数を指定します。
    sgmltext:抽象データ型の名称
    unsgmltext:コンストラクタパラメタ逆生成関数の名称
    sgmltext:引数の型
  3. コンストラクタ関数を指定します。
    sgmltext:抽象データ型の名称
    sgmltext:コンストラクタ関数の名称
    blob:引数の型
  4. 処理結果ファイル(/dsk01/rest_file)にpdrbalの実行結果を出力します。

(2) 占有モードの場合

例3:
HiRDB/シングルサーバの場合に,表(reb_table)にRDエリア(user03)を追加して,占有モードでリバランスユティリティを実行します。
  • 表定義

 CREATE TABLE reb_table(hkeys INT NOT NULL,names CHAR(30))
     FIX HASH HASHA BY hkeys IN (user01,user02)

  • インデクス定義
CREATE INDEX idx1 ON reb_table(hkeys) IN ((idx01),(idx02))
●ALTER TABLEでのRDエリアの追加

ALTER TABLE reb_table ADD RDAREA user03 FOR INDEX idx1 in idx03

[説明]
表reb_tableにRDエリアuser03を追加します。また,インデクスidx1に対してもRDエリアidx03を追加します。
●pdrbalのコマンド

pdrbal -k exclusive -t reb_table -l n control_file

[説明]
-k exclusive:動作モード(占有モード)
-t reb_table:リバランス表の名称
-l n:ログレスモード
control_file:制御情報ファイル
●制御情報ファイル(control_file)の内容

idxwork /idxwork1    [1]
sort /sortwork    [2]
report /dsk01/rest_file    [3]

[説明]
  1. インデクス情報ファイル用ディレクトリ(/idxwork1)を指定します。
  2. ソート用ワークディレクトリ(/sortwork)を指定します。
  3. 処理結果ファイル(/dsk01/rest_file)にpdrbalの実行結果を出力します。

 

例4:
HiRDB/パラレルサーバの場合に,表(reb_table)にRDエリア(user03)を追加して,占有モードでリバランスユティリティを実行します。
  • 表定義

 CREATE TABLE reb_table(hkeys INT NOT NULL,names CHAR(30))
     FIX HASH HASHA BY hkeys IN (user01,user02)

  • インデクス定義
CREATE INDEX idx1 ON reb_table(hkeys) IN ((idx01),(idx02))
●サーバ,RDエリア,表,及びインデクスの関連
[図データ]
●ALTER TABLEでのRDエリアの追加

ALTER TABLE reb_table ADD RDAREA user03 FOR INDEX idx1 in idx03

[説明]
表reb_tableにRDエリアuser03を追加します。また,インデクスidx1に対してもRDエリアidx03を追加します。
●pdrbalのコマンド

pdrbal -k exclusive -t reb_table -l n control_file

[説明]
-k exclusive:動作モード(占有モード)
-t reb_table:リバランス表の名称
-l n:ログレスモード
control_file:制御情報ファイル
●制御情報ファイル(control_file)の内容

idxwork bes2 /idxwork_bes2    [1]
sort bes2 /sortwork_bes2    [2]
report /dsk01/rest_file      [3]

[説明]
  1. バックエンドサーバbes2のインデクス情報ファイル用ディレクトリ(/idxwork_bes2)を指定します。
  2. バックエンドサーバbes2のソート用ワークディレクトリ(/sortwork_bes2)を指定します。
  3. 処理結果ファイル(/dsk01/rest_file)にpdrbalの実行結果を出力します。

 

例5:
HiRDB/パラレルサーバの場合に,表(reb_table)に既存と同じRDエリアを追加して,占有モードでリバランスユティリティを実行します。なお,表はホスト(NODE24)上のバックエンドサーバ(bes1)とホスト(NODE25)上のバックエンドサーバ(bes2)に分割格納されています。
  • 表定義

 CREATE TABLE reb_table (hkeys INT NOT NULL,names CHAR(30))
     FIX HASH HASHF BY hkeys IN (user01,user02)

  • インデクス定義
CREATE INDEX idx1 ON reb_table(hkeys) IN ((idx01),(idx02))
●サーバ,RDエリア,表,及びインデクスの関連
[図データ]
●ALTER TABLEでのRDエリアの追加

ALTER TABLE reb_table ADD RDAREA user01 FOR INDEX idx1 in idx01
ALTER TABLE reb_table ADD RDAREA user02 FOR INDEX idx1 in idx02

[説明]
表reb_tableに既存と同じRDエリア(user01,user02)を追加します。また,インデクスidx1に対しても既存と同じRDエリア(idx01,idx02)を追加します。
●pdrbalのコマンド

pdrbal -k exclusive -t reb_table -i c control_file

[説明]
-k exclusive:動作モード(占有モード)
-t reb_table:リバランス表の名称
-i c:インデクス作成モード(一括作成モード)
control_file:制御情報ファイル
●制御情報ファイル(control_file)の内容

report /dsk01/rest_file    [1]
idxwork bes1 /idxwork_bes1    [2]
sort bes1 /sort_work_bes1    [2]
idxwork bes2 /idxwork_bes2    [3]
sort bes2 /sort_work_bes2    [3]

[説明]
  1. 処理結果ファイル(/dsk01/rest_file)にpdrbalの実行結果を出力します。
  2. 追加したRDエリア(idx01)に対するバックエンドサーバbes1の情報を指定します。
    インデクス情報ファイル用ディレクトリ名:/idxwork_bes1
    ソート用ワークディレクトリ名:/sort_work_bes1
  3. 追加したRDエリア(idx02)に対するバックエンドサーバbes2の情報を指定します。
    インデクス情報ファイル用ディレクトリ名:/idxwork_bes2
    ソート用ワークディレクトリ名:/sortwork_bes2