35.2.1 指定形式およびオプションの説明
(1) 指定形式
adbmergechunk -u 認可識別子 〔-p パスワード〕 〔-g マージチャンク処理の経過メッセージ出力間隔〕 〔-w {作業用一時ファイルの格納先ディレクトリ名 |作業用一時ファイルの格納先を指定したディレクトリパスファイル名}〕 〔-z マージチャンクオプションファイル名〕 〔-m チャンクに設定するコメント〕 〔--purge-chunk {WAIT|NOWAIT}〕 〔--timeout タイムアウト時間〕 〔--concurrency-prior〕 -c {マージ元チャンクID指定〔,マージ元チャンクID指定〕…|ALL} 処理対象表
- 重要
-
処理対象表は,必ずオプションの最後に指定してください。
(2) オプションの説明
- ●-u 認可識別子
-
〜〈文字列〉((1〜100バイト))
adbmergechunkコマンドを実行するHADBユーザの認可識別子を指定します。adbmergechunkコマンドを実行するには,次の2つの権限を持っている必要があります。
-
CONNECT権限
-
処理対象表に対するMERGE CHUNK権限
このオプションに指定する認可識別子は,1~100バイトの範囲で指定してください。ただし,認可識別子を囲む二重引用符は,1~100バイトには含みません。
- 重要
-
認可識別子の文字列中に英小文字または\がある場合は,認可識別子の指定規則を必ず確認してください。認可識別子の指定規則については,「1.4.2 認可識別子およびパスワードの指定規則」を参照してください。
-
- ●-p パスワード
-
〜〈文字列〉((1〜255バイト))
-uオプションに指定した認可識別子のパスワードを指定します。
- 重要
-
パスワードの文字列中に,二重引用符(")やストローク(|)など,OSやシェルが別の意味で使用している文字がある場合は,パスワードの指定規則を必ず確認してください。パスワードの指定規則については,「1.4.2 認可識別子およびパスワードの指定規則」を参照してください。
なお,このオプションを省略してadbmergechunkコマンドを実行すると,パスワードの入力を求める応答メッセージが表示されます。バックグラウンドで実行する場合など,標準入力からパスワードを入力できない環境では,このオプションを省略しないでください。
- ●-g マージチャンク処理の経過メッセージ出力間隔
-
〜〈整数〉((0〜1,000,000,000))《0》(単位:1,000行)
マージチャンク処理の経過メッセージの出力間隔を指定します。このオプションを指定すると,マージチャンク処理の処理経過として,インデクス再作成中の表データの検索行数が出力されます。
例えば,このオプションに2を指定すると,インデクスの再作成時に表データが2,000行検索されるごとに,経過メッセージ(KFAA80205-I)が出力されます。
このオプションを省略した場合,またはこのオプションに0を指定した場合,経過メッセージは出力されません。
- ●-w {作業用一時ファイルの格納先ディレクトリ名|作業用一時ファイルの格納先を指定したディレクトリパスファイル名}
-
〜〈OSパス名〉((2〜518バイト))
マージチャンク処理時に作成される作業用一時ファイルの格納先を,次に示すどちらかの方法で指定します。
-
作業用一時ファイルを格納するディレクトリ名を絶対パス名で指定する
-
作業用一時ファイルを格納するディレクトリを指定したファイル名(ディレクトリパスファイル名)を絶対パス名で指定する
1つのディレクトリ下に格納される作業用一時ファイルに対して入出力が集中すると,性能低下の原因になります。そのため,2の方法で作業用一時ファイルを異なるディスクのディレクトリに格納して,ディスクに対する入出力処理の負荷を分散することを推奨します。2の方法の指定例(ディレクトリパスファイルの指定例)を次に示します。
ディレクトリパスファイルの指定例
/mnt/diska/wwwww /mnt/diskb/xxxxx /mnt/diskc/yyyyy /mnt/diskd/zzzzz
指定するディレクトリ数の目安を次に示します。
- 指定するディレクトリ数の目安=A×B
-
A:最大検索処理スレッド数
次の計算式で求めてください。
↓(マージチャンクオプションadb_mergechunk_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 システム構築・運用ガイドのリソースの設計のコマンド実行時の作業用一時ファイルの容量見積もりのadbmergechunkコマンド実行時の作業用一時ファイルの容量見積もりを参照してください。なお,このオプションを省略した場合,$DBDIR/ADBWORK下に作業用一時ファイルが作成されます。
作業用一時ファイルを格納するディレクトリは,専用のディレクトリにしてください。ほかのファイルを格納しているディレクトリと重複した場合,既存のファイル中のデータが失われるおそれがあります。シンボリックリンクの指定や,相対パスの指定にも注意してください。作業用一時ファイルの格納先ディレクトリ名と重複しないようにする必要があるファイルについては,「35.6 注意事項」を参照してください。
なお,作業用一時ファイルを格納するディスクの空き容量が不足した場合は,容量が大きい別のディスクを格納先として指定してください。作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処については,マニュアルHADB システム構築・運用ガイドのトラブルシュートのコマンドに関するトラブルのコマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法を参照してください。
- メモ
-
作業用一時ファイルを格納するディスクには,セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。
-
- ●-z マージチャンクオプションファイル名
-
〜〈OSパス名〉((2〜510バイト))
マージチャンクオプションを指定したマージチャンクオプションファイルの絶対パス名を指定します。このオプションを省略すると,マージチャンクオプションファイルが指定されないため,すべてのマージチャンクオプションにデフォルト値が仮定されます。
マージチャンクオプションについては,「35.2.2 マージチャンクオプションの形式」を参照してください。
なお,マージチャンクオプションファイル名は,ほかのファイル名と重複しないようにしてください。重複した場合,ファイル中のデータが失われるおそれがあります。マージチャンクオプションファイル名と重複しないようにする必要があるファイルについては,「35.6 注意事項」を参照してください。
- ●-m チャンクに設定するコメント
-
〜〈文字列〉((1〜1,024バイト))
マージ先チャンクにコメントを設定したい場合に指定します。
指定時の規則を次に示します。
-
指定したコメントは,英大文字と英小文字が区別されます。
-
二重引用符("),ストローク(|)など,OSやシェルが別の意味で使用している文字を含むコメントを設定する場合は,その文字の直前にエスケープ文字(\)を指定してください。または,コメント全体をアポストロフィ(')で囲んでください。
(例1)-m abc\|def
(例2)-m 'abc|def'
どちらの場合も,コメントとしてabc|defが設定されます。
-
文字列を二重引用符(")で囲み,さらにアポストロフィ(')で囲むと,二重引用符(")および文字列がコメントとして扱われます。
(例)-m '"abcdef"'
この場合,コメントとして"abcdef"が設定されます。
-
コメントの文字コードは,HADBサーバの環境変数のADBLANGに設定した文字コードと同じになります。
-
- ●--purge-chunk {WAIT|NOWAIT}
-
マージ先チャンクが作成されたあとにマージ元チャンクを削除する際,ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在する場合に,マージ元チャンクを削除するかどうかを指定します。
-
WAITを指定,またはオプションを省略した場合
ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理がすべて完了するまで,マージ元チャンクの削除処理を待ちます。マージチャンク対象表を参照する処理が存在しなくなったあとで,マージ元チャンクの削除処理を開始します。マージ元チャンクの削除後に,adbmergechunkコマンドは終了します。
-
NOWAITを指定した場合
マージ元チャンクの削除処理をスキップします。そのため,削除仕掛中の状態でマージ元チャンクが残ったまま,adbmergechunkコマンドは終了します。
この場合,手動でマージ元チャンクを削除する必要があります。削除対象のチャンクIDを,表示されるKFAA96785-Eメッセージで確認し,PURGE CHUNK文を実行してください。マージ元チャンクを削除しないと,次回adbmergechunkコマンドを実行できません。
なお,ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在しない場合は,--purge-chunkオプションの指定に関係なく,マージ先チャンクが作成されたあとにマージ元チャンクは削除されます。
--purge-chunkオプションの指定時の考慮点については,マニュアルHADB システム構築・運用ガイドのチャンクをマージする方法(チャンク数を減らす方法)のadbmergechunkコマンドの--purge-chunkオプション指定時の考慮点を参照してください。
-
- ●--timeout タイムアウト時間
-
〜〈整数〉((0〜65,535))《0》(単位:秒)
adbmergechunkコマンドがタイムアウトになるまでの時間を指定します。
adbmergechunkコマンドの実行時間がこのオプションで指定した時間を超えた場合,adbmergechunkコマンドの処理はキャンセルされます。
このオプションの指定を省略した場合,またはこのオプションに0を指定した場合,adbmergechunkコマンドのタイムアウト時間は設定されません。adbmergechunkコマンドの処理に時間が掛かっても,タイムアウトしないでコマンドの処理が続行されます。
- メモ
-
adbmergechunkコマンドの実行時間が長くなるとシステムの運用に支障が出る場合は,タイムアウト時間の指定を検討してください。
- ■マルチノード機能を使用している場合
-
次に示す状態のときは,このオプションで指定したタイムアウト時間が経過しても,adbmergechunkコマンドの処理はすぐにはキャンセルされません。次に示す状態が解消されたあとで,adbmergechunkコマンドの処理がキャンセルされます。
-
プライマリノードの切り替え処理中
-
ノードの復帰処理中
-
ワーカーノードの追加処理中
-
他ノードで実行中のトランザクションの終了待ち中
-
- ●--concurrency-prior
-
adbmergechunkコマンドの同時実行性を向上したい場合にこのオプションを指定します。SQL文や次に示すコマンドと,adbmergechunkコマンドを同時に実行したい場合は,このオプションを指定してください。
-
adbimportコマンド(バックグラウンドインポートの場合)
-
adbgetcstコマンド
-
adbchgchunkcommentコマンド
-
adbdbstatusコマンド
このオプションを指定する場合と指定しない場合で,確保される排他資源と排他制御モードが異なります。詳細については,マニュアルHADB システム構築・運用ガイドの確保される排他資源と排他制御モードを参照してください。
- 重要
-
処理対象表にアーカイブマルチチャンク表を指定した場合,--concurrency-priorオプションは指定できません。
- メモ
-
-
adbmergechunkコマンド(--concurrency-priorオプションの指定あり)と,次に示すコマンドやSQL文を同時に実行した場合,次に示すコマンドやSQL文が先に実行され,その結果,adbmergechunkコマンドの処理時間が長くなるおそれがあります。
-
adbimportコマンド
-
adbidxrebuildコマンド
-
adbmergechunkコマンド(--concurrency-priorオプションの指定なし)
-
INSERT文
-
DELETE文
-
UPDATE文
-
PURGE CHUNK文
-
TRUNCATE TABLE文
なお,上記のコマンドやSQL文が先に実行された場合,KFAA52204-Iメッセージが出力されます。
-
-
adbimportコマンドまたはadbidxrebuildコマンドが正常終了していない表に対して,adbmergechunkコマンドを実行すると,adbmergechunkコマンドがエラーになり,KFAA50201-Eメッセージが出力されます。ただし,--concurrency-priorオプションを指定していると,adbmergechunkコマンドがエラーになり,KFAA50201-Eメッセージが出力されるまでに時間が掛かるおそれがあります。
上記の状況を回避するには,--concurrency-priorオプションを指定しないでadbmergechunkコマンドを実行してください。
-
-
- ●-c {マージ元チャンクID指定〔,マージ元チャンクID指定〕…|ALL}
-
〜〈整数〉((1〜9,223,372,036,854,775,807))
マージチャンク処理の対象となる,マージ元チャンクを指定します。
ALLを指定した場合,処理対象表のすべてのチャンクを1つの新規チャンクにマージします。マージ元チャンクID指定を指定した場合,指定したIDのチャンクを1つの新規チャンクにマージします。
- 重要
-
状態が異なるチャンク(通常状態のチャンクと待機状態のチャンク)をマージすることはできません。
マージ元チャンクID指定を指定する場合,2つ以上のチャンクIDを指定する必要があります。マージ元チャンクID指定では,次に示す2種類の方法を混在させて指定できます。
図35‒4 -cオプションのマージ元チャンクID指定の例 -
チャンクIDを1つずつ指定する(単独指定)
マージ元チャンクのチャンクIDを1つずつ指定したい場合は,チャンクIDをコンマ(,)で区切って指定します。
- 重要
-
チャンクIDとコンマ(,)の間には空白を入れないでください。
-
チャンクIDの範囲を指定する(範囲指定)
マージ元チャンクのチャンクIDの範囲を指定したい場合は,「範囲の最小のチャンクID-範囲の最大のチャンクID」の形式で指定します(2つのチャンクIDをハイフン(-)でつなぎます)。
- 重要
-
ハイフン(-)とチャンクIDの間には空白を入れないでください。また,ハイフンの右側には,ハイフンの左側のチャンクIDより大きいチャンクIDを指定してください。
このオプションの指定時の規則を次に示します。
-
ALLとマージ元チャンクID指定を同時に指定しないでください。
-
処理対象表に存在しないチャンクIDが含まれる場合は,そのチャンクIDの指定を無視して,ほかの存在するチャンクIDをマージします。
-
チャンクIDは,最大30,000個指定できます。チャンクIDの数え方を次に示します。
・範囲指定の場合,範囲内のすべてのチャンクIDが個数に数えられます。
・指定したチャンクIDが重複している場合,重複した分も個数に数えられます。
マージ元チャンクID指定の例と数え方
(例1)-c 1,3,5:3個のチャンクID(1,3および5)を指定したと見なされます。
(例2)-c 1,3,5-8,10:7個のチャンクID(1,3,5,6,7,8および10)を指定したと見なされます。
(例3)-c 1,3,5,5-8,10:8個のチャンクID(1,3,5,5,6,7,8および10)を指定したと見なされます。
-
-cオプションに指定できる値の長さの上限は32キロバイトです。このため,マージ元チャンクID指定の長さが32キロバイトを超える場合は,範囲指定に変更するか,または複数回に分けて,adbmergechunkコマンドを実行してください。
-
エラーとなる指定内容および指定例については,「(3) -cオプションの指定が原因のエラー」を参照してください。
処理対象表に存在するチャンクIDを検索する方法を次に示します。
-
システム表のSTATUS_CHUNKSを検索する
システム表のSTATUS_CHUNKSを検索し,チャンクIDを確認してください。詳細については,マニュアルHADB システム構築・運用ガイドのシステム表のシステム表の検索の表名から表内の全チャンクの情報を調べる場合を参照してください。
-
adbdbstatusコマンドを実行する
次に示すコマンドを実行してDBエリア,表とインデクスの使用量情報を出力し,チャンクID(Chunk_ID)を確認してください(結果はCSV形式で出力されます)。DBエリア,表とインデクスの使用量情報で出力される項目の詳細については,「13.7.2 DBエリア,表とインデクスの使用量情報で出力される項目の一覧」を参照してください。
adbdbstatus -d used -c table -n 処理対象表の表名
処理対象表の表名は「スキーマ名.表識別子」の形式で指定してください。
- ●処理対象表
-
マージチャンク処理の対象となるマルチチャンク表を指定します。
指定規則を次に示します。
-
「スキーマ名.表識別子」の形式で指定します。
自分が所有している表を指定する場合は,スキーマ名を省略できます。ほかのHADBユーザが所有している表を指定する場合は,スキーマ名を指定してください。
-
スキーマ名または表識別子中に,英小文字または\がある場合の指定規則については,「1.4.3 表名の指定規則」を参照してください。
-
MERGE CHUNK権限を持っている表を指定できます。
-
マルチチャンク表以外の表は指定できません。
-
ビュー表は指定できません。
-
(3) -cオプションの指定が原因のエラー
-cオプションの指定が原因でadbmergechunkコマンドがエラーとなる場合には,次の2つが考えられます。
-
-cオプションの指定形式に誤りがある場合
-
-cオプションに不正なチャンクIDを指定している場合
どちらの場合も,指定を修正したあと,再度adbmergechunkコマンドを実行してください。なお,-cオプションの詳細については,「(2) オプションの説明」の「-c」を参照してください。
(a) -cオプションの指定形式に誤りがある場合
-cオプションの指定形式に誤りがある場合に出力されるメッセージIDと,考えられる誤りについて,次の表に示します。これらの誤りを修正したあと,再度adbmergechunkコマンドを実行してください。
項番 |
出力されるメッセージID |
考えられる誤り |
誤った指定の例 |
修正例 |
---|---|---|---|---|
1 |
KFAA50225-E |
指定したチャンクIDの個数が30,000個を超えている |
-c 1-30001 |
-c 1-30000 |
2 |
ALLとマージ元チャンクID指定を同時に指定している |
-c 1,3,ALL,10 |
|
|
3 |
ハイフン(-)の両側に同じチャンクIDを指定している |
-c 3-3,7 |
-c 3-5,7 |
|
4 |
ハイフン(-)の右側に,左側のチャンクIDより小さいチャンクIDを指定している |
-c 10-3 |
-c 3-10 |
|
5 |
KFAA50296-E |
チャンクIDを1つしか指定していない(1つのチャンクIDだけを重複して指定している場合も含む) |
|
-c 3,4 |
6 |
|
チャンクIDとコンマの間に空白がある |
-c 1,3,△10 |
-c 1,3,10 |
7 |
チャンクIDとハイフン(-)の間に空白がある |
-c 1,3△-△10 |
-c 1,3-10 |
|
8 |
KFAA90003-E |
指定値の長さが32キロバイトを超えている |
|
|
- (凡例)
-
△:空白
(b) -cオプションに不正なチャンクIDを指定している場合
-cオプションに不正なチャンクIDを指定している場合に出力されるメッセージIDと,考えられる誤りについて,次の表に示します。これらの誤りを修正したあと,再度adbmergechunkコマンドを実行してください。
項番 |
出力されるメッセージID |
考えられる誤り |
誤った指定の例 |
修正例および対処方法 |
---|---|---|---|---|
1 |
KFAA50294-E |
処理対象表に存在するチャンクIDの範囲(最小のチャンクID〜最大のチャンクID)外のチャンクIDを指定している |
|
処理対象表に存在するチャンクIDを検索して,処理対象表に存在する範囲内のチャンクIDを指定してください。 |
2 |
KFAA50296-E |
処理対象表に存在しないチャンクIDを指定しているため,マージ元チャンクが複数にならない |
|
処理対象表に存在するチャンクIDを検索して,マージ元チャンクが複数になるように指定を修正してください。 |
3 |
KFAA50299-E |
マージ元チャンクに,通常状態のチャンクと待機状態のチャンクが混在している |
|
マージ元チャンクは通常状態のチャンクだけにするか,または待機状態のチャンクだけになるように指定を修正してください。 |
4 |
マージ元チャンクに,アーカイブ状態のチャンクとアーカイブ状態ではないチャンクが混在している |
|
マージ元チャンクをアーカイブ状態のチャンクだけにするか,またはアーカイブ状態ではないチャンクだけになるように指定を修正してください。 |
- 注
-
処理対象表に存在するチャンクIDを検索する方法については,「(2) オプションの説明」の「-c」を参照してください。