9 dcliユーティリティの使用
dcliユーティリティは、Oracle Exadata System Softwareレルムの集中管理を容易にします。
dcliは、セルのセットに対するCellCLIコマンドの実行を自動化し、dcliユーティリティが実行された集中管理ロケーションに出力結果を返します。
9.1 dcliユーティリティの概要
dcliユーティリティでは、複数のセルでコマンドをパラレル・スレッドで実行します。ただし、このユーティリティでは、セル上のリモート・アプリケーションとの対話型セッションをサポートしていません。
dcliユーティリティを使用するには、セルのbin
ディレクトリから、集中管理の実行が可能なホスト・コンピュータにユーティリティをコピーします。複数のセルで実行するようにコマンドを発行したり、セルにコピー可能なファイルを使用して実行できます。セルはホスト名またはIPアドレスで参照されます。
dcliユーティリティには、Pythonバージョン2.3以上が必要です。Pythonのバージョンは、python -V
コマンドを実行して確認できます。このツールを使用するには、SSHのユーザー等価をセルに事前設定していることも必要です。dcliユーティリティの最初のオプションに-k
を指定すると、SSHのユーザー等価をセルに設定できます。また、SSHユーザー等価をセルに手動で設定することもできます。
指定したセルでコピーおよびコマンド実行が終了すると、コマンド出力(stdout
およびstderr
)が収集されて表示されます。dcliのオプションを指定すると、コマンド出力をエラーなしの出力(通常のステータスを表示するメッセージなど)に簡略化できます。
この項の内容は次のとおりです。
9.1.1 dcliの構文
dcli [options] [command]
前述のコマンドでは、次の引数が使用されます。
-
options: 次の表は、使用可能なオプションとその説明です。
表9-1 dcliのオプション
オプション 説明 -c
cells
コマンドの送信先のターゲット・セルのカンマ区切りのリストを指定します。
-d
destfile
-f
オプションを使用してファイルまたはディレクトリをコピーする際に使用される、リモート・セル上のターゲットのコピー先ディレクトリまたはファイルを指定します。-f
file
セルにコピーするファイルまたはファイル・テンプレートを指定します。これらのファイルは実行されません。これらのファイルは、後で実行するスクリプト・ファイルにできます。ファイルはターゲット・セル上のユーザーのデフォルト・ホーム・ディレクトリにコピーされます。
-g
groupFile
コマンドの送信先のターゲット・セルのリストを含むファイルを指定します。セルはセル名またはIPアドレスで識別できます。
-h
、--help
ヘルプ・テキストを表示して終了します。
--hidestderr
SSHを使用してリモートで実行されるコマンドの標準エラー・メッセージ(STDERR)を非表示にします。
-k
公開鍵ファイルをセル上の
authorized_keys
ファイルに追加し、-c
オプションまたは-g
オプションで指定したセルに現在のユーザーのSSHユーザー等価を設定します。-l
userId
リモート・セルにログインしているユーザーを指定します。デフォルトは
celladmin
ユーザーです。-n
エラーなしの出力を簡略化します。通常の出力(
0
のコード)を返すセルには、セル名しか表示されません。-n
オプションと-r
オプションを組み合せて使用することはできません。-r
regexp
正規表現に一致する出力行を簡略化します。該当するパターンを含むすべての出力行が出力から削除され、その出力行のセル名が1行で表示されます。
-r
オプションと-n
オプションを組み合せて使用することはできません。-s
sshOptions
オプションの文字列をSSHに渡します。
--scp=
scpOptions
sshoptions
と異なる場合は、オプションの文字列をscp
に渡します。--serial
Oracle Exadata Storage Server上でプロセスをシリアライズします。
--showbanner
、--sh
SSHの使用時にリモート・ノードのバナーを表示します。
-t
-c
オプションで名前を指定したターゲット・セルまたは-g
オプションで指定したgroupfile
内のターゲット・セルを表示します。--unkey
Oracle Exadata Storage Server上のターゲット
authorized_keys
ファイルから鍵を削除します。-v
メッセージの冗長バージョンを
stdout
に出力します。--version
プログラムのバージョン番号を表示して終了します。
--vmstat=VMSTATOPS
スイッチに応じて、ビュー・プロセス、仮想メモリー、ディスク、トラップおよびCPUのアクティビティ情報を表示します。
-x
execFile
コピーしてセルで実行するコマンド・ファイルを指定します。指定したファイルには、コマンドのリストが含まれます。
.scl
拡張子の付いたファイルは、CellCLIユーティリティによって実行されます。別の拡張子の付いたファイルは、オペレーティング・システムのシェルによってセルで実行されます。ファイルはターゲット・セル上のユーザーのデフォルト・ホーム・ディレクトリにコピーされます。 -
command: オペレーティング・システムのプロンプトから実行可能なコマンドです。ローカルのシェルで解釈される記号が含まれるコマンドの場合は、コマンドを二重引用符で囲みます。コマンドに次の文字が含まれる場合は、外側の引用符とエスケープ文字が必要です。
-
$ (ドル記号)
-
' (引用符)
-
< (小なり)
-
> (大なり)
-
( ) (カッコ)
バックスラッシュ(\)は、リモート・シェルによる解釈なしでCellCLIユーティリティに文字を渡すことのできるエスケープ文字です。
エスケープ文字を必要とする記号のためにコマンドが複雑になる場合、状況によってはそのコマンドをスクリプトに配置して、
-x
オプション付きで実行する必要があります。スクリプト内では、エスケープ文字は必要ありません。 -
ローカルのdcliプロセスが終了してもリモートのコマンドが続行する場合がありますが、それらの出力とステータスを確認することはできません。
dcliユーティリティからの戻り値は次のとおりです。
-
0: ファイルまたはコマンドがコピーされ、セルで正常に実行されました。
-
1: 1つ以上のセルにアクセスできず、リモート実行により0以外のステータスが返されました。
-
2: ローカルのエラーによりコマンドを実行できませんでした。
いずれかのセルが停止し応答がない場合は、メッセージがstderr
に書き込まれ、応答のないセルが表示されます。その他のセルは操作が続行され、完了後のリターン・コードは1になります。
9.1.2 dcliの例
この項では、dcliユーティリティの例について説明します。
例9-1は、-k
オプションを使用して現在のユーザーのSSHユーザー等価を設定する方法を示しています。
例9-2は、CellCLIコマンドのALTER IORMPLAN OBJECTIVE='basic'
を実行する方法を示しています。この例では、エラーなしの出力が簡略化されます。
例9-3は、CellCLIコマンドのLIST GRIDDISK
を実行する方法を示しています。この例では、normal
を含む出力の行が削除されます。このコマンドは、mycells
グループ・ファイルに表示されるターゲット・セルで実行されます。
例9-4は、冗長(-v
)オプションをSSHに使用する方法を示しています。
例9-5は、-t
オプションを使用してターゲット・セルを表示する方法を示しています。このオプションは、-c
オプションまたは-g
オプションと組み合せて使用してください。
例9-6は、-f
オプションを使用する方法を示しています。この例では、一連のファイルがセルにコピーされます。
例9-7は、--vmstat
オプションを使用する方法を示しています。
例9-8は、--hidestderr
オプションを使用する方法を示しています。この例の最初のコマンドでは--hidestderr
オプションを使用していないため、エラーが表示されます。2つ目のコマンドではオプションを使用しているため、エラーは表示されません。このオプションは、リモートで実行されるコマンドにSSHを使用している場合にのみ使用できます。
例9-9は、--showbanner
オプションを使用する方法を示しています。例にある******BANNER******
のかわりにリモート・セルのバナーが使用されます。
例9-10は、celladmin
ユーザーのmycellsグループ・ファイルのターゲット・セルでアクティブにするためにIORMPLANを変更するCellCLIコマンドを示しています。-t
オプションでは、mycellsグループ・ファイルのセルが表示されます。
例9-11は、デフォルトのcelladmin
ユーザーでのmycellsグループ・ファイルのターゲット・セル上にあるreConfig.scl
ファイルのCellCLIコマンドを示しています。
例9-12は、デフォルトのcelladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セル上にあるグリッド・ディスクの名前およびステータスを表示するCellCLIコマンドを示しています。ステータスがactive
の出力行は削除されます。
例9-13は、デフォルトのcelladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セル上で、アラート履歴名、調査担当者、重大度を表示するCellCLIコマンドを示しています。重大度がclear
の出力行は削除されます。
例9-14は、celladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セルで、調査担当者が設定されていないアラート履歴を表示するCellCLIコマンドを示しています。
例9-15は、celladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セルで、現在のメトリックのアラート状態およびGD_IO_BY_R_LGのメトリック値を表示するCellCLIコマンドを示しています。この問合せでは、現在のオブジェクトのメトリック(グリッド・ディスクでの大きいブロック読取りの合計MB)を取得します。
例9-16は、celladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セルで、GD_IO_RQで始まる名前の現在のオブジェクトのメトリックを表示するCellCLIコマンドを示しています。この問合せでは、現在のオブジェクトのメトリック(グリッド・ディスクでのブロック読取りまたは書込みリクエストの数)を取得します。
例9-17は、デフォルトのcelladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セルで、cl_put
(セルCPU使用率)と同じ名前の現在のオブジェクトのメトリックを表示するCellCLIコマンドを示しています。
例9-18は、デフォルトのcelladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セルで、ステータスがnormalでない物理ディスクを表示するCellCLIコマンドを示しています。
例9-19は、デフォルトのcelladmin
ユーザーとしてmycellsグループ・ファイルのターゲット・セルで、空き領域が100MB未満のセル・ディスクを表示するCellCLIコマンドを示しています。
例9-20は、特定の期間のアラート履歴を表示するCellCLIコマンドを示しています。
注意:
前述の例で、バックスラッシュ(\)は、リモート・シェルによる解釈なしでCellCLIユーティリティに大なり記号(>)と引用符を渡すことのできるエスケープ文字です。
例9-1 現在のユーザーのSSHユーザー等価の設定
$ ./dcli -k -g mycells
-k
オプションは、SSHプロトコルのバージョン2でユーザーがデフォルトのキー・ファイル名を受け入れていることを前提とします。これらのファイル名はid_dsa.pub
またはid_rsa.pub
で、~/.ssh
ディレクトリにあります。
ユーザーはセル認証の確認を求められたり、リモート・ユーザーのパスワードを求められたりする場合があります。-k
のキーの交換は、ユーザーがすべてのセルでパスワード入力を同時に求められないように、セル間で連続して実行されます。-k
オプションが一度使用されると、同じセルに対する後続のコマンドでは-k
オプションが不要になり、そのユーザーのパスワードをホストから取得する必要もありません。
例9-2 -nオプションの使用
$ ./dcli -g mycells -l celladmin -n "cellcli -e alter iormplan \ objective=\'basic\'"
簡略化された出力は次のようになります。
OK: ['abcd2x3'] stsd2s2: stsd2s2: CELL-02619: Current IORMPLAN state is not 'active'.
例9-3 -rオプションの使用
$ ./dcli -l celladmin -r '.*normal' -g mycells "cellcli -e list celldisk"
出力は次のようになります。
.*normal: ['stsd2s2', 'abcd2x3'] abcd2x3: CD_06_abcd2x3 importRequired
例9-4 -vオプションの使用
$ ./dcli -s "-v" -c mycell date
例9-5 -tオプションの使用
$ ./dcli -t -c stsd2s1 date Target cells: ['stsd2s1'] stsd2s1: Fri Jul 17 15:37:31 PDT 2009
例9-6 -fオプションの使用
dcli -g mycells -f '*.bin'
例9-7 --vmstatオプションの使用
$ ./dcli -g 123 -l sage --vmstat="-a 3 5" procs -----------memory---------- ---swap-- -----io---- --system-- ... 13:43:03: r b swpd free inact active si so bi bo in cs us abcd2x1: 2 0 0 22656 178512 792272 0 0 1 21 7 2 2 abcd2x2: 0 0 452304 21432 108760 867712 0 0 178 269 2 0 2 abcd2x3: 0 0 49252 912164 70156 49996 1 1 74 249 2 2 1 Minimum: 0 0 0 21432 70156 49996 0 0 1 21 2 0 1 Maximum: 2 0 452304 912164 178512 867712 1 1 178 269 7 2 2 Average: 0 0 167185 318750 119142 569993 0 0 84 179 3 1 1
例9-8 --hidestderrオプションの使用
$ ./dcli -l root -g cell "ls -1 unknown_file; cellcli -e list cell" exam08cel01: ls: unknown_file: No such file or directory exam08cel01: exam08cel01 online exam08cel02: ls: unknown_file: No such file or directory exam08cel02: exam08cel02 online $ ./dcli -l root -g cell --hidestderr -l root "ls -l unknown_file; cellcli \ -e list cell" exam08cel01: exam08cel01 online exam08cel02: exam08cel02 online
例9-9 --showbannerオプションの使用
$ ./dcli --showbanner -l root -g cell "cellcli -e list cell" exam08cel01: ******BANNER****** exam08cel01: exam08cel01: ******BANNER****** exam08cel01: exam08cel01 online exam08cel02: ******BANNER****** exam08cel02: exam08cel02: ******BANNER****** exam08cel02: exam08cel02 online
例9-10 dcliを使用したIORMプランの変更
$ ./dcli -g mycells -l root -t "cellcli -e alter iormplan active"
例9-11 スクリプトでのdcliの使用
$ ./dcli -g mycells -x reConfig.scl
例9-12 dcliを使用したグリッド・ディスクのステータス表示
$ ./dcli -r '.*active' -g mycells "cellcli -e list griddisk"
例9-13 dcliを使用したアラート履歴情報の表示
$ ./dcli -r '.*clear' -g mycells \ "cellcli -e list alerthistory attributes name, examinedby, severity"
例9-14 dcliを使用したアラート履歴(調査担当者が設定されていない)の表示
$ ./dcli -g allcells -l celladmin \ "cellcli -e list alerthistory where examinedby=\'\' "
例9-15 dcliを使用した現在のメトリックのアラート状態の表示
$ ./dcli -g mycells "cellcli -e list metriccurrent GD_IO_BY_R_LG \ attributes alertstate, metricvalue"
例9-16 dcliを使用したグループ内の現在のオブジェクトの特定のメトリックの表示
$ ./dcli -g mycells "cellcli -e list metriccurrent where name like \'GD_IO_RQ.*\'"
例9-17 dcliを使用した現在のオブジェクトの特定メトリックの表示
$ ./dcli -g mycells "cellcli -e list metriccurrent cl_cput"
例9-18 dcliを使用した物理ディスクの表示
$ ./dcli -g allcells "cellcli -e list physicaldisk where status not = normal"
例9-19 dcliを使用したセル・ディスクの空き領域の表示
$ ./dcli -g allcells "cellcli -e list celldisk where freespace \> 100M"
例9-20 dcliを使用したアラート履歴の表示
dcli -g lab.cells "cellcli -e list alerthistory where begintime \> \'Aug 4, 2009 12:06:38 PM\'"