Hitachi

Hitachi Advanced Data Binder コマンドリファレンス


16.2.1 指定形式およびオプションの説明

〈この項の構成〉

(1) 指定形式

adbidxrebuild
  -u 認可識別子
  〔-p パスワード〕
  〔-g インデクス再作成処理の経過メッセージ出力間隔〕
  〔-w {作業用一時ファイルの格納先ディレクトリ名作業用一時ファイルの格納先を指定したディレクトリパスファイル名}〕
  〔-z インデクス再作成オプションファイル名〕
  〔-i インデクス識別子ファイル名〕
  〔{--create-temp-file|--force}〕
  処理対象表
重要

処理対象表は,必ずオプションの最後に指定してください。

(2) オプションの説明

-u 認可識別子

〜〈文字列〉((1〜100バイト))

adbidxrebuildコマンドを実行するHADBユーザの認可識別子を指定します。adbidxrebuildコマンドを実行するには,次の2つの権限を持っている必要があります。

  • CONNECT権限

  • 処理対象表に対するREBUILD INDEX権限

このオプションに指定する認可識別子は,1~100バイトの範囲で指定してください。ただし,認可識別子を囲む二重引用符は,1~100バイトには含みません。

重要

認可識別子の文字列中に英小文字または\がある場合は,認可識別子の指定規則を必ず確認してください。認可識別子の指定規則については,「1.4.2 認可識別子およびパスワードの指定規則」を参照してください。

重要

adbidxrebuildコマンドの再実行機能を使用する場合,-uオプションに指定する認可識別子を変更することはできません。そのため,インデクスの再作成中に,adbidxrebuildコマンドの実行ユーザを削除したり,REBUILD INDEX権限を取り消したりしないでください。

誤って操作してしまった場合は,次のどちらかの対処をしてください。

  • 同じユーザでadbidxrebuildコマンドを実行できる状態にして,adbidxrebuildコマンドを再実行してください。対処方法については,マニュアルHADB システム構築・運用ガイド非定期運用HADBユーザの管理またはアクセス権限の管理を参照してください。

  • 処理対象表に対するREBUILD INDEX権限を持つ別のユーザで,--forceオプションを指定してadbidxrebuildコマンドを実行してください。ただし,このとき,adbidxrebuildコマンドの再実行機能は適用されません。

-p パスワード

〜〈文字列〉((1〜255バイト))

-uオプションに指定した認可識別子のパスワードを指定します。

重要

パスワードの文字列中に,二重引用符(")やストローク(|)など,OSやシェルが別の意味で使用している文字がある場合は,パスワードの指定規則を必ず確認してください。パスワードの指定規則については,「1.4.2 認可識別子およびパスワードの指定規則」を参照してください。

なお,このオプションを省略してadbidxrebuildコマンドを実行すると,パスワードの入力を求める応答メッセージが表示されます。バックグラウンドで実行する場合など,標準入力からパスワードを入力できない環境では,このオプションを省略しないでください。

-g インデクス再作成処理の経過メッセージ出力間隔

〜〈整数〉((0〜1,000,000,000))《0》(単位:1,000行)

インデクス再作成処理の経過メッセージの出力間隔を指定します。例えば,このオプションに2を指定すると,表データが2,000行検索されるごとに経過メッセージ(KFAA80205-I)が出力されます。

このオプションを省略した場合,またはこのオプションに0を指定した場合,経過メッセージは出力されません。

-w 作業用一時ファイルの格納先ディレクトリ名作業用一時ファイルの格納先を指定したディレクトリパスファイル名

〜〈OSパス名〉((2〜518バイト))

インデクス再作成処理時に作成される作業用一時ファイルの格納先を,次に示すどちらかの方法で指定します。

  1. 作業用一時ファイルを格納するディレクトリ名を絶対パス名で指定する

  2. 作業用一時ファイルを格納するディレクトリを指定したファイル名(ディレクトリパスファイル名)を絶対パス名で指定する

1つのディレクトリ下に格納される作業用一時ファイルに対して入出力が集中すると,性能低下の原因になります。そのため,2の方法で作業用一時ファイルを異なるディスクのディレクトリに格納して,ディスクに対する入出力処理の負荷を分散することを推奨します。2の方法の指定例(ディレクトリパスファイルの指定例)を次に示します。

ディレクトリパスファイルの指定例

/mnt/diska/wwwww
/mnt/diskb/xxxxx
/mnt/diskc/yyyyy
/mnt/diskd/zzzzz

指定するディレクトリ数の目安を次に示します。

指定するディレクトリ数の目安A×B

A:最大検索処理スレッド数

次の計算式で求めてください。

↓(インデクス再作成オプションadb_idxrebuild_rthd_numの値-1)÷2↓

B:再作成対象のB-treeインデクスおよびテキストインデクスの数

B-treeインデクスおよびテキストインデクスの数がわからない場合は,次に示すSQL文で表に定義されているB-treeインデクスおよびテキストインデクスの数を確認してください。

SELECT "N_INDEX"-"N_RANGE_INDEX"
    FROM "MASTER"."SQL_TABLES"
        WHERE "TABLE_SCHEMA"='認可識別子'
           AND "TABLE_NAME"='処理対象表の表名'
  • ディレクトリパスファイル中にディレクトリを255個まで指定できます。

  • ディレクトリパスファイル中に記述されている順番に,作業用一時ファイルの格納先ディレクトリとして使用されます。ディレクトリパスファイル中に記述された最後のディレクトリ(この例では/mnt/diskd/zzzzz)が使用された場合,次に使用されるディレクトリは先頭のディレクトリ(この例では/mnt/diska/wwwww)になります。

このオプションの指定規則(方法1,2の両方の指定規則)を次に示します。

  • パス名の末尾にスラッシュ(/)を指定しないでください。

-wオプションに指定したディレクトリ下に作成される作業用一時ファイルの容量見積もりについては,マニュアルHADB システム構築・運用ガイドadbidxrebuildコマンド実行時の作業用一時ファイルの容量見積もりを参照してください。なお,このオプションを省略した場合,$DBDIR/ADBWORK下に作業用一時ファイルが作成されます。

作業用一時ファイルを格納するディレクトリは,専用のディレクトリにしてください。ほかのファイルを格納しているディレクトリと重複した場合,既存のファイル中のデータが失われるおそれがあります。シンボリックリンクの指定や,相対パスの指定にも注意してください。作業用一時ファイルの格納先ディレクトリ名と重複しないようにする必要があるファイルについては,「16.6 注意事項」を参照してください。

なお,作業用一時ファイルを格納するディスクの空き容量が不足した場合は,容量が大きい別のディスクを格納先として指定してください。作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処については,マニュアルHADB システム構築・運用ガイドトラブルシュートコマンドに関するトラブルコマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法を参照してください。

-z インデクス再作成オプションファイル名

〜〈OSパス名〉((2〜510バイト))

インデクス再作成オプションを指定したインデクス再作成オプションファイルの絶対パス名を指定します。このオプションを省略すると,インデクス再作成オプションファイルが指定されないため,すべてのインデクス再作成オプションにデフォルト値が仮定されます。

インデクス再作成オプションについては,「16.2.2 インデクス再作成オプションの形式」を参照してください。

なお,インデクス再作成オプションファイル名は,ほかのファイル名と重複しないようにしてください。重複した場合,ファイル中のデータが失われるおそれがあります。インデクス再作成オプションファイル名と重複しないようにする必要があるファイルについては,「16.6 注意事項」を参照してください。

-i インデクス識別子ファイル名

〜〈OSパス名〉((2〜510バイト))

再作成の対象となるインデクス識別子を記載したファイルを,絶対パス名で指定します。インデクス識別子ファイルに指定したインデクスは,インデクスの状態に関係なく,すべて再作成されます。

このオプションを省略した場合,処理対象表に定義されている未完状態のインデクスだけが再作成されます。

なお,adbimportコマンドの中断後にadbidxrebuildコマンドでインデクス作成処理を引き継ぐ場合は,このオプションの指定に関係なく,処理対象表に定義したすべてのインデクスが再作成されます。

インデクス識別子ファイルの指定例を次に示します。

adbidxrebuildコマンドの例

adbidxrebuild -u ADBUSER01 -i /home/adbmanager/rebuild_file/table01_idx.txt TABLE01

インデクス識別子ファイル(/home/adbmanager/rebuild_file/table01_idx.txt)の指定例

INDEX02
INDEX03

この例では,再作成の対象となるインデクス識別子を2つ指定したインデクス識別子ファイルを,コマンドオプションとして指定しています。adbidxrebuildコマンドを実行すると,INDEX02およびINDEX03が再作成されます。

インデクス識別子ファイルの指定規則を次に示します。

  • 処理対象表に定義されていないインデクスは指定できません。

  • 同一のインデクス識別子を複数指定できません。

  • 英小文字を含むインデクス識別子を指定する場合は,二重引用符(")で囲んでください。二重引用符(")で囲まないと,インデクス識別子はすべて英大文字として扱われます。

  • 主キーに対応するB-treeインデクスを再作成する場合は,自動的に生成されたインデクス識別子(制約名と同じ)を指定します。主キーに対応するB-treeインデクスのインデクス識別子を調べる方法については,マニュアルHADB システム構築・運用ガイドディクショナリ表の検索を参照してください。

  • ファイル中の空行は無視されます。ただし,インデクス識別子ファイルがすべて空行の場合,adbidxrebuildコマンドがエラーとなります。

--create-temp-file

通常は,このオプションを省略してください。

adbimportコマンドまたはadbidxrebuildコマンドを再実行した際にKFAA50247-Eメッセージが出力された場合は,このオプションを指定してください。作業用一時ファイルを作成する表データの検索から,adbidxrebuildコマンドが実行されます。adbimportコマンドの中断後に,このオプションを指定してadbidxrebuildコマンドを実行すると,adbimportコマンドからインデクス作成処理を引き継ぐことができます。

なお,adbimportコマンドからのインデクス作成処理の引き継ぎの概要については,「16.1.3 adbidxrebuildコマンドのオプション機能」の「(2) adbimportコマンドからのインデクス作成処理の引き継ぎ」を参照してください。また,この場合,コマンドオプションやインデクス再作成オプションの指定などに考慮が必要です。詳細については,「17.10.7 adbimportコマンドの再実行時にエラーが発生した場合」の「(1) --create-temp-fileオプションを指定してadbidxrebuildコマンドを実行するケース」を参照してください。

重要
  • 処理対象表が更新不可状態ではない場合は,このオプションを指定できません(メッセージログファイルにKFAA50248-Eメッセージが出力されます)。

  • このオプションは,再実行に必要な作業用一時ファイル(インデクスレコードファイルまたはソート結果用ファイル)が存在しない場合に指定することを想定しています。もし,作業用一時ファイルが存在する場合にadbidxrebuildコマンドを実行すると,存在するファイルは再作成されます。ただし,対象のファイルへの書き込み権限または読み取り権限がないと,adbidxrebuildコマンド実行時にアクセスエラーになることがあります(KFAA30959-Eメッセージ,KFAA40204-Eメッセージ,KFAA40205-Eメッセージ,KFAA40214-Eメッセージ,KFAA41205-Eメッセージ,またはKFAA41206-Iメッセージが出力されます。エラー番号には13(EACCES)が出力されます)。このときは,OSのrmコマンドなどで該当するファイルを削除してから,adbidxrebuildコマンドをもう一度実行してください。

このオプションを指定しないでadbidxrebuildコマンドを実行した場合,前回のインデクス再作成で内容が保証されている個所の続きからインデクス再作成処理を実行します。

一方,このオプションを指定してadbidxrebuildコマンドを実行した場合,作業用一時ファイルを作成する表データの検索からインデクス再作成処理を行います。レンジインデクスが作成済みの場合,表データの検索時に再作成されます。

--force

通常は,このオプションを省略してください。

次に示す場合に,このオプションを指定してadbidxrebuildコマンドを実行してください。インデクス再作成処理が,初めから強制実行されます。

  • adbimportコマンドまたはadbidxrebuildコマンドの再実行時にKFAA50244-Eメッセージが出力された場合

    ・再実行に必要なコマンドステータスファイル($DBDIR/ADBSYS/ADBUTLディレクトリ下のファイル)が存在しない

    ・表の更新不可状態を解除しないで,04-00以前のバージョンのHADBサーバからバージョンアップした

  • adbimportコマンドが中断した状態で処理対象表にインデクスを定義し,adbimportコマンドの再実行時にKFAA50209-Eメッセージが出力された場合(未完状態のインデクスが存在する場合)

adbimportコマンドの中断後にこのオプションを指定してadbidxrebuildコマンドを実行すると,adbimportコマンドからインデクス作成処理を引き継ぐことができます。

このオプションを指定してadbidxrebuildコマンドを実行する前に,次に示すディレクトリ下のファイル(作業用一時ファイル)を,OSのrmコマンドなどで削除してください。書き込み権限または読み取り権限がないファイルがあると,adbidxrebuildコマンドを実行できないことがあります。

  • 前回中断したコマンドの実行時に-wオプションを指定した場合

    -wオプションに指定した作業用一時ファイルの格納先ディレクトリ

  • 前回中断したコマンドの実行時に-wオプションを省略した場合

    $DBDIR/ADBWORKディレクトリ

なお,adbimportコマンドからのインデクス作成処理の引き継ぎの概要については,「16.1.3 adbidxrebuildコマンドのオプション機能」の「(2) adbimportコマンドからのインデクス作成処理の引き継ぎ」を参照してください。また,この場合,コマンドオプションやインデクス再作成オプションの指定などに考慮が必要です。詳細については,「17.10.7 adbimportコマンドの再実行時にエラーが発生した場合」の「(2) --forceオプションを指定してadbidxrebuildコマンドを実行するケース」を参照してください。

このオプションを指定しないでadbidxrebuildコマンドを実行した場合,前回のインデクス再作成で内容が保証されている個所の続きからインデクス再作成処理を実行します。

一方,このオプションを指定してadbidxrebuildコマンドを実行した場合,インデクス再作成処理を最初から行います。

処理対象表

再作成するインデクスが定義されている表を指定します。

指定規則を次に示します。

  • スキーマ名.表識別子」の形式で指定します。

    自分が所有している表を指定する場合は,スキーマ名を省略できます。ほかのHADBユーザが所有している表を指定する場合は,スキーマ名を指定してください。

  • スキーマ名または表識別子中に,英小文字または\がある場合の指定規則については,「1.4.3 表名の指定規則」を参照してください。

  • REBUILD INDEX権限を持っている表を指定できます。

  • ビュー表は指定できません。