2.28.1 pddbchgの形式と規則
(1) 機能
レプリカRDエリアのレプリカステータスを切り替えます(サブRDエリアをカレントRDエリアに変更します)。
pddbchgコマンドは,HiRDB Staticizer Optionを組み込んでいる場合に使用できます。
(2) 実行者
HiRDB管理者が実行できます。
(3) 形式
pddbchg -q 世代番号 -r {RDエリア名〔,RDエリア名〕…|ALL} 〔-w〕〔-W 実行監視時間〕
(4) オプション
(a) -q 世代番号 〜<符号なし整数>((0〜10))
カレントRDエリアに変更するRDエリアの,世代番号を指定します。
(b) -r {RDエリア名〔,RDエリア名〕…|ALL}
- RDエリア名 〜<識別子>((1〜30))
-
カレントRDエリアに変更するRDエリアの,オリジナルRDエリア名を指定します。指定できるRDエリアは,ユーザ用RDエリア及びユーザLOB用RDエリアです。
- ALL
-
-qオプションで指定した世代番号のすべてのレプリカRDエリアを,カレントRDエリアに変更します。
- <規則>
-
RDエリアを指定する場合の規則については,「運用コマンド,ユティリティでのRDエリアの指定」を参照してください。
(c) -w
指定したRDエリアに対して排他が掛かっている場合,システム定義のpd_lck_wait_timeoutオペランドの指定値の範囲内で,排他が解除されるまで待つときに指定します。
このオプションを省略した場合,指定したRDエリアに対してほかのトランザクションが排他を掛けていると,エラー終了します。
(d) -W 実行監視時間 〜<符号なし整数>((0〜3600))
pddbchgコマンドの実行時間を監視する場合に,その監視時間を分単位で指定します。このオプションに指定する値の目安や動作については,マニュアル「HiRDB システム定義」のシステム共通定義pd_cmd_exec_timeオペランドの説明を参照してください。
なお,このオプションに0を指定した場合は,監視を行いません。
また,このオプションを省略した場合は,システム共通定義のpd_cmd_exec_timeオペランドの指定値に従います。
(5) 規則
-
pddbchgコマンドは,HiRDBが稼働中のときだけ実行できます。
-
pddbchgコマンドは,シングルサーバ又はシステムマネジャがあるサーバマシンで実行してください。
-
pddbchgコマンドを実行する場合,データディクショナリ用RDエリアが次のどちらかの状態でなければなりません。
-
オープン状態,かつ閉塞解除状態
-
オープン状態,かつpdholdコマンドによる閉塞状態
-
-
pddbchgコマンドの実行では,現在のカレントRDエリアと新規のカレントRDエリアとの状態はチェックされないため,RDエリアの状態に関係なくカレントRDエリアを変更できます。
-
pddbchgコマンドは,更新可能なオンライン再編成を使用しているオリジナルRDエリアに対しては実行できません。
-
共用RDエリアに対してpddbchgコマンドを実行した場合,全バックエンドサーバに排他を掛けます。このため,該当するRDエリアへのアクセスを複数同時に実行している場合,グローバルデッドロックが発生し,タイムアウトする可能性があります。グローバルデッドロックが発生した場合,再度pddbchgコマンドを実行してください。
(6) 注意事項
-
pddbchgコマンドの結果は,pddblsコマンドで確認できます。
-
pddbchgコマンドの実行中は次に示すように排他が掛かります。
-
pddbchgコマンドの実行中はインナレプリカ構成資源に排他が掛かるため,インナレプリカの構成を変更(カレントRDエリアの変更,レプリカの定義や削除,又は更新可能なオンライン再編成など)するコマンドは排他待ち状態になります。
-
pddbchgコマンドの実行中はレプリカグループ構成資源に排他が掛かるため,カレント変更するRDエリアのインナレプリカグループにアクセスするUAPは排他待ち状態になります。
pddbchgコマンド実行時の排他制御の詳細については,「運用コマンドの排他制御モード」を参照してください。
-
-
pddbchgコマンド,トランザクション,及びユティリティ間の排他待ちの関係を次に示します。
-
ほかのトランザクション,及びユティリティがカレントRDエリアにアクセスしている場合の,pddbchgコマンドの処理
<-wオプションを指定したとき>
システム定義のpd_lck_wait_timeoutオペランドの指定値の範囲内で,ほかのトランザクションが終了するまで,pddbchgコマンドはすべての排他資源に対して待ち状態となります。
<-wオプションを指定しないとき>
ディクショナリ表,指定したオリジナルRDエリアがあるサーバ,新規のカレントRDエリア,及び現在のカレントRDエリアに,ほかのトランザクションがアクセスしている場合,pddbchgコマンドはエラー終了します。
-
pddbchgコマンドが,カレントRDエリアに対してアクセスしている場合の,ほかのトランザクション,及びユティリティの処理
システム定義のpd_lck_wait_timeoutオペランド,及びクライアント環境定義のPDCWAITTIMEの指定値の範囲内で,pddbchkコマンドの処理が終了するまで,ほかのトランザクション,及びユティリティは待ち状態となります。
-
-
pddbchgコマンドを実行した場合,参照及び更新トランザクションとの間でデッドロックが発生する場合があります。システム定義にpd_deadlock_priority_use=Yを指定し,更にpd_command_deadlock_priorityオペランドにデッドロックプライオリティ値を指定することで,デッドロック発生時に参照及び更新トランザクションと運用コマンドのどちらを優先させるかを選択できます。
-
pddbchgコマンドの処理中にエラーが発生した場合,処理中のRDエリアがあるサーバでの処理を,サーバ単位に無効にします。このとき,pddbchgコマンドは,別のサーバの処理を続行します。
-
pddbchgコマンドのリターンコードを次に示します。
0:正常終了
4:警告終了(一部のRDエリアの処理がエラー終了)
8:異常終了
12:異常終了(エラーメッセージを表示できない事象が発生)
12の場合,シングルサーバ又はディクショナリサーバがあるホストのsyslogfile中のエラーメッセージを参照して,エラーの要因を取り除いた後,再度コマンドを実行してください。syslogfile中にエラーメッセージが出力されていない場合は保守員に連絡してください。