17.11 注意事項
-
コマンドまたはAPの実行中にadbimportコマンドを実行した場合,必要な処理リアルスレッド数が確保できないことがあります。この場合,必要な処理リアルスレッド数が確保できるまで,adbimportコマンドの実行を待ちます。処理リアルスレッド数の確保待ち状態が発生した場合,マニュアルHADB システム構築・運用ガイドのリソースの設計のコマンドを同時実行する際の考慮点のコマンドの実行時に使用する処理リアルスレッド数に関する考慮点を参照して対処してください。
-
adbimportコマンドの実行中は,入力データファイルに対して,ほかのアプリケーションによる読み込みや書き込みを行わないでください。
-
adbimportコマンドのオプションおよびインポートオプションに指定するファイルの改行コードは,X'0A'(LF)またはX'0D0A'(CRLF)としてください。
-
ユニークインデクス(主キーに対応するB-treeインデクスまたはCREATE INDEX文のUNIQUE指定をしたB-treeインデクス)のキー値の重複があった場合でも,データインポート処理は続行されます。このとき,KFAA61205-Wメッセージ(重複キー値を検出した旨の警告メッセージ)が出力されます。この場合,データインポート対象表およびB-treeインデクスは一意性制約に違反した状態になっているため,重複しているキー値を検索して,対象の行を削除してください(B-treeインデクスが一意性制約に違反した状態であることを,一意性制約違反状態といいます)。そのあとで,adbidxrebuildコマンドを実行して該当するB-treeインデクスを再作成してください。
-
adbimportコマンドの実行を中断する場合は,adbcancelコマンドで中断してください。または,adbstop --forceコマンド,OSのkillコマンドなどでサーバプロセスを強制終了してください。実行中のコマンドをadbcancelコマンドで中断する方法については,「1.6 実行中のコマンドを中断(強制終了)する場合」を参照してください。
-
データインポート処理は,サーバプロセスで実行されます。このため,[Ctrl]+[C]キーなどでadbimportコマンドのコマンドプロセスを強制終了しても,サーバプロセスで実行中のデータインポート処理は中断されません(処理が続行されます)。データインポート処理が完了すると,メッセージログファイルにKFAA81001-Iメッセージが出力されます。
-
カラムストア表にデータをインポートした場合,列データの圧縮方式とデータの格納比率に関する情報が,次に示すメッセージに出力されます。
-
KFAA82000-I:各列の列データの圧縮方式が出力されます。このメッセージは,データインポートを実行するスレッドごとに出力されます。
-
KFAA82002-I:各列のデータの格納比率が出力されます。
-
KFAA82003-I:表全体のデータの格納比率が出力されます。
-
-
データインポート処理中に作業用のファイル(作業用一時ファイル)が一時的に作成されます。作業用一時ファイルは,adbimportコマンドが正常に終了(リターンコードが0または4の場合)した場合は自動的に削除されますが,adbimportコマンドが正常に終了しなかった場合は削除されないことがあります。
作業用一時ファイルの中にはB-treeインデクスとテキストインデクス作成処理からの再実行機能を使用する際に必要となるファイルが含まれています。そのため,B-treeインデクスとテキストインデクス作成処理からの再実行機能を使用する前に,作業用一時ファイルを削除しないでください。削除すると,B-treeインデクスとテキストインデクス作成処理からの再実行機能を使用できません。
-
作業用一時ファイルがディスク容量を圧迫するおそれがあるため,次に示す場合は,作業用一時ファイルを定期的に削除することを推奨します。
-
adbimportコマンドを再実行する必要がない場合
-
adbidxrebuildコマンドを再実行する必要がない場合
これらの場合は,次に示すディレクトリ下に作業用一時ファイルが残っていないかを定期的に確認し,ファイルがあるときは削除してください。
-
$DBDIR/ADBSYS/ADBUTL
-
-wオプションに指定した作業用一時ファイルの格納先ディレクトリ(-wオプションを省略した場合は$DBDIR/ADBWORK)
-
-
adbidxrebuildコマンドによるadbimportコマンドからのインデクス作成処理の引き継ぎについて,次の表に示します。
表17‒24 adbidxrebuildコマンドによる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コマンドを実行してください。そうすると,インデクス作成処理を引き継ぐことができます。
-
--forceオプションを指定してadbimportコマンドを強制実行する場合,-dオプション(作成モード)も同時に指定する必要があります。このため,強制実行時には表に格納されたデータはすべて削除され,表が初期状態となったあとに入力データが格納されます。adbimportコマンドを強制実行する手順については,「17.2.1 指定形式およびオプションの説明」の「(3) オプションの説明」の「--force」を参照してください。
-
新規に定義した表の場合,-dオプションを省略してadbimportコマンドを実行しても,作成モードでデータがインポートされます。したがって,新規に定義した表のデータインポート中にadbimportコマンドが異常終了したときは,「表17‒17 adbimportコマンドの中断タイミングによるB-treeインデクスとテキストインデクス作成処理からの再実行機能の適用可否」の-dオプションの指定あり(作成モード)の対処法を参照してください。
なお,いったんデータを格納したあとにSQL文でデータを0件にした表の場合,-dオプションを省略すると追加モードでデータをインポートします。
-
adbimportコマンドのオプションまたはインポートオプションに指定する次のディレクトリおよびファイルの絶対パスが重複しないようにしてください。該当するディレクトリおよびファイルを次に示します。
-
作業用一時ファイルの格納先ディレクトリ(-wオプションで指定,または-wオプションに指定したディレクトリパスファイルに指定)
-
作業用一時ファイルの格納先を指定したディレクトリパスファイル(-wオプションで指定)
-
インポートオプションファイル(-zオプションで指定)
-
列構成情報ファイル(-rオプションで指定)
-
入力データパスファイル(コマンドオプションで指定)
-
入力データファイル(入力データパスファイル中に指定)
-
論理エラーデータファイル(インポートオプションadb_import_errdata_file_nameで指定)
また,上記のディレクトリおよびファイルの絶対パスは,adbimportコマンド以外のプログラムが使用しているディレクトリおよびファイルの絶対パスとも重複しないようにしてください。重複した場合,ファイル中のデータが失われるおそれがあります。シンボリックリンクの指定や,相対パスの指定にも注意してください。
-
-
バックグラウンドインポートを適用して検索系SQLとadbimportコマンドを同時に実行する場合,次の点に注意してください。
-
検索対象の表およびインポート対象表が同じであるため,I/Oが競合して検索系SQLの性能が低下することがあります。
-
adbimportコマンドで使用するスレッド数と検索系SQLが使用するスレッド数の合計がサーバ定義のadb_sys_rthd_numオペランドの指定値より大きいときは,先発の処理が終わるまで後発の処理が開始されません(後発の処理は待ち状態になります)。
-
-
データインポート中に,adbimportコマンドの実行ユーザを削除したり,実行ユーザが持っているIMPORT TABLE権限を取り消したりしないでください。実行ユーザを削除してしまったり,権限を取り消してしまったりした場合,adbimportコマンドが異常終了した際に,B-treeインデクスとテキストインデクス作成処理からの再実行機能を使用することができません。
誤って実行ユーザを削除してしまった場合,または権限を取り消してしまった場合は,次のどちらかの対処をしてください。
-
同じユーザでadbimportコマンドを実行できる状態にして,adbimportコマンドを再実行してください。対処方法については,マニュアルHADB システム構築・運用ガイドの非定期運用のHADBユーザの管理またはアクセス権限の管理を参照してください。
-
処理対象表に対するREBUILD INDEX権限を持つ別のユーザで,--forceオプションを指定してadbidxrebuildコマンドを実行してください。adbimportコマンドの中断後に,--forceオプションを指定してadbidxrebuildコマンドを実行する方法については,「17.10.7 adbimportコマンドの再実行時にエラーが発生した場合」の「(2) --forceオプションを指定してadbidxrebuildコマンドを実行するケース」を参照してください。
-