16.6 注意事項
-
adbidxrebuildコマンドは,表データの検索にSQL文を使用します。そのため,SQL文の非順序実行方式が適用される環境での実行を推奨します。非順序実行方式が適用される環境については,マニュアルHADB システム構築・運用ガイドのデータベースの検索処理方式(非順序実行方式)を参照してください。
-
adbidxrebuildコマンドのオプションに指定するファイルの改行コードは,X'0A'(LF)またはX'0D0A'(CRLF)としてください。
-
ユニークインデクス(主キーに対応するB-treeインデクス,またはCREATE INDEX 文のUNIQUE 指定をしたB-treeインデクス)のキー値の重複があった場合でも,インデクス再作成処理は続行されます。このとき,KFAA61205-Wメッセージ(重複キー値を検出した旨の警告メッセージ)が出力されます。この場合,処理対象表およびB-treeインデクスは一意性制約に違反した状態になっているため,重複しているキー値を検索して,対象の行を削除してください(B-treeインデクスが一意性制約に違反した状態であることを,一意性制約違反状態といいます)。そのあとで,adbidxrebuildコマンドを実行して該当するB-treeインデクスを再作成してください。
-
adbidxrebuildコマンドの実行を中断する場合は,adbcancelコマンドで中断してください。adbcancelコマンド以外を使用するときは,adbstop --forceコマンド,OSのkillコマンドなどでサーバプロセスを強制終了してください。また,adbidxrebuildコマンドを中断したあとは,「16.5 adbidxrebuildコマンドが異常終了したときの対処方法」を参照して,必要に応じてadbidxrebuildコマンドを再実行してください。
実行中のコマンドをadbcancelコマンドで中断する方法については,「1.8 実行中のコマンドを中断(強制終了)する場合」を参照してください。
-
インデクス再作成処理は,サーバプロセスで実行されます。このため,[Ctrl]+[C]キーなどでadbidxrebuildコマンドのコマンドプロセスを強制終了しても,サーバプロセスで実行中のインデクス再作成処理は中断されません(処理が続行されます)。インデクス再作成処理が完了すると,メッセージログファイルにKFAA81001-Iメッセージが出力されます。
-
インデクス再作成処理中に作業用のファイル(作業用一時ファイル)が一時的に作成されます。作業用一時ファイルは,adbidxrebuildコマンドが正常に終了(リターンコードが0または4の場合)した場合は自動的に削除されますが,adbidxrebuildコマンドが正常に終了しなかった場合は削除されないことがあります。
作業用一時ファイルの中には,再実行機能を使用する際に必要となるファイルが含まれています。そのため,再実行機能を使用する前に作業用一時ファイルを削除しないでください。削除すると,再実行機能が正しく実行されません。
-
作業用一時ファイルがディスク容量を圧迫するおそれがあるため,次に示す場合は,作業用一時ファイルを定期的に削除することを推奨します。
-
adbidxrebuildコマンドを再実行する必要がない場合
-
adbimportコマンドを再実行する必要がない場合
これらの場合は,次に示すディレクトリ下に作業用一時ファイルが残っていないかを定期的に確認し,ファイルがあるときは削除してください。
-
$DBDIR/ADBSYS/ADBUTL
-
-wオプションに指定した作業用一時ファイルの格納先ディレクトリ(-wオプションを省略した場合は$DBDIR/ADBWORK)
-
-
adbimportコマンドからのインデクス作成処理の引き継ぎについて,次の表に示します。
表16‒7 adbimportコマンドからのインデクス作成処理の引き継ぎ 項番
中断したコマンド※1
中断後に実行するコマンド
処理が引き継がれるかどうか
コマンド名
オプションの指定
--create-temp-fileオプション
--forceオプション
1
adbimport
adbidxrebuild
指定あり
指定なし
○※2,※3
2
指定なし
指定あり
○※2,※4,※5
3
指定なし
指定なし
×
- (凡例)
-
○:インデクス作成処理を引き継ぐことができます。
×:インデクス作成処理を引き継ぐことができません(KFAA50201-Eメッセージが出力されます)。
- 注※1
-
中断したコマンドを確認する場合は,adbdbstatusコマンドで表のサマリ情報を出力してください。出力結果の「Rerun_command」列に中断したコマンド名が出力されています。adbdbstatusコマンドについては,「13. adbdbstatus(データベースの状態解析)」を参照してください。
なお,adbimportコマンドの中断後に実行したadbidxrebuildコマンドが中断した場合は,「Rerun_command」列に「adbidxrebuild」が表示されます。中断したadbidxrebuildコマンドに--create-temp-fileオプションを指定していたときは,--create-temp-fileオプションを指定してadbidxrebuildコマンドをもう一度実行してください。このとき,コマンドステータスファイル($DBDIR/ADBSYS/ADBUTLディレクトリ下のファイル)にはadbimportコマンドが中断したときの情報が記憶されているため,adbimportコマンドが中断したときの処理中のチャンクについて,インデクスが再作成されます。
- 注※2
-
adbidxrebuildコマンドを実行すると,処理対象表に定義したすべてのインデクスが再作成されます。adbidxrebuildコマンドの-iオプションは指定しても無視されます。
- 注※3
-
adbimportコマンドの再実行時にKFAA50247-Eメッセージが出力された場合(作業用一時ファイルが存在しない場合)は,--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行してください。そうすると,インデクス作成処理を引き継ぐことができます。
- 注※4
-
adbimportコマンドが中断した状態で処理対象表にインデクスを定義し,adbimportコマンドの再実行時にKFAA50209-Eメッセージが出力された場合(未完状態のインデクスが存在する場合)は,--forceオプションを指定してadbidxrebuildコマンドを実行すると,インデクス作成処理を引き継ぐことができます。
未完状態のインデクスを確認する場合は,adbdbstatusコマンドでインデクスのサマリ情報を出力して,出力結果の「Unfinished」列を確認してください。インデクスが未完状態の場合,出力結果の「Unfinished」列に,「unfinished」が出力されます。adbdbstatusコマンドについては,「13. adbdbstatus(データベースの状態解析)」を参照してください。
なお,adbimportコマンドが中断していない場合は,--forceオプションを指定しないでadbidxrebuildコマンドを実行してください。
- 注※5
-
adbimportコマンドの中断時にKFAA50244-Eメッセージが出力された場合(コマンドステータスファイルが存在しない場合)は,--forceオプションを指定してadbidxrebuildコマンドを実行してください。そうすると,インデクス作成処理を引き継ぐことができます。
-
adbimportコマンド中断後に実行したadbidxrebuildコマンドが中断した場合の注意事項を次に示します。
-
adbimportコマンド中断後に,--create-temp-fileオプションを指定したadbidxrebuildコマンドが中断したとき
adbidxrebuildコマンドを実行し直すと,--create-temp-fileオプションを指定しなくても,処理が中断したチャンクの表の検索から,インデクス再作成処理が再開されます。ただし,adbidxrebuildコマンドを実行し直すときに--forceオプションを指定すると,--forceオプションの指定が有効になります。
-
adbimportコマンド中断後に,--forceオプションを指定したadbidxrebuildコマンドが中断したとき
adbidxrebuildコマンドを実行し直すと,--forceオプションを指定しなくてもインデクス再作成処理の初めから強制実行されます。このため,実行時に--create-temp-fileオプションを指定しても,無視されます。インデクス再作成処理の初めから強制実行されるとき,KAFF80215-Iメッセージが出力されます。
-
-
adbidxrebuildコマンドのオプションに指定する次のディレクトリおよびファイルの絶対パスが重複しないようにしてください。該当するディレクトリおよびファイルを次に示します。
-
作業用一時ファイルの格納先ディレクトリ(-wオプションで指定,または-wオプションに指定したディレクトリパスファイルに指定)
-
作業用一時ファイルの格納先を指定したディレクトリパスファイル(-wオプションで指定)
-
インデクス識別子ファイル(-iオプションで指定)
-
インデクス再作成オプションファイル(-zオプションで指定)
また,上記のディレクトリおよびファイルの絶対パスは,adbidxrebuildコマンド以外のプログラムが使用しているディレクトリおよびファイルの絶対パスとも重複しないようにしてください。重複した場合,ファイル中のデータが失われるおそれがあります。シンボリックリンクの指定や,相対パスの指定にも注意してください。
-
-
コマンドまたはAPの実行中にadbidxrebuildコマンドを実行した場合,必要な処理リアルスレッド数が確保できないことがあります。この場合,必要な処理リアルスレッド数が確保できるまで,adbidxrebuildコマンドの実行を待ちます。処理リアルスレッド数の確保待ち状態が発生した場合,マニュアルHADB システム構築・運用ガイドのリソースの設計のコマンドを同時実行する際の考慮点のコマンドの実行時に使用する処理リアルスレッド数に関する考慮点を参照して対処してください。
-
このコマンドの実行時間を短縮したい場合は,マニュアルHADB システム構築・運用ガイドのチューニングのコマンドの実行時間の短縮に関するチューニングのadbidxrebuildコマンドの実行時間の短縮を参照してください。
-
インデクスの再作成中に,adbidxrebuildコマンドの実行ユーザを削除したり,実行ユーザが持っているREBUILD INDEX権限を取り消したりしないでください。実行ユーザを削除してしまったり,権限を取り消してしまったりした場合,adbidxrebuildコマンドが異常終了した際に,adbidxrebuildコマンドの再実行機能を使用できません。
誤って実行ユーザを削除してしまった場合,または権限を取り消してしまった場合は,次のどちらかの対処をしてください。
-
同じユーザでadbidxrebuildコマンドを実行できる状態にして,adbidxrebuildコマンドを再実行してください。対処方法については,マニュアルHADB システム構築・運用ガイドの非定期運用のHADBユーザの管理またはアクセス権限の管理を参照してください。
-
処理対象表に対するREBUILD INDEX権限を持つ別のユーザで,--forceオプションを指定してadbidxrebuildコマンドを実行してください。
-
-
adbidxrebuildコマンドの実行時,次の表に示すディレクトリおよびファイルにアクセスします。adbidxrebuildコマンドを実行する前に,各ディレクトリおよびファイルに次の表に示すパーミッションを設定してください。
表16‒8 ディレクトリおよびファイルに設定するパーミッション ディレクトリおよびファイル
アクセスするOSユーザ※1
必要な権限
作業用一時ファイルの格納先ディレクトリ※2
HADBサーバプロセスの実行ユーザ
-
読み取り権限
-
書き込み権限
-
実行権限
作業用一時ファイルの格納先を指定したディレクトリパスファイル
HADBサーバプロセスの実行ユーザ
読み取り権限
インデクス再作成オプションファイル
コマンドの実行ユーザ
読み取り権限
インデクス識別子ファイル
HADBサーバプロセスの実行ユーザ
読み取り権限
- 注※1
-
「HADBサーバプロセスの実行ユーザ」は,HADB管理者のOSユーザです。
「コマンドの実行ユーザ」については,「表1‒1 コマンドの一覧(コマンドの実行条件)」の「コマンドを実行できるOSユーザ」列を参照してください。
- 注※2
-
-wオプションに指定する場合と,作業用一時ファイルの格納先を指定したディレクトリパスファイル内に指定する場合のどちらも該当します。
-