9 dcliユーティリティの使用

dcliユーティリティを使用すると、Oracle Exadata Database Machine全体の集中管理が容易になります。

dcliは、サーバーのセットに対するオペレーティング・システム・コマンドの実行を自動化し、dcliユーティリティが実行された集中管理ロケーションに出力結果を返します。

9.1 dcliユーティリティの概要

dcliユーティリティは、複数のサーバーでオペレーティング・システム・コマンドをパラレル・スレッドで実行します。ターゲット・サーバーは、Exadata Storage ServerまたはExadataデータベース・サーバーです。ただし、dcliユーティリティでは、リモート・アプリケーションとの対話型セッションをサポートしていません。

dcliユーティリティは、Exadata Storage ServerまたはExadataデータベース・サーバーで実行できます。また、集中管理サーバーとして機能する別のホスト・コンピュータにコピーすることもできます。複数のサーバーで実行するようにコマンドを発行したり、サーバーにコピー可能なファイルを使用して実行できます。サーバーはホスト名またはIPアドレスで参照されます。

dcliユーティリティには、Pythonバージョン2.3以上が必要です。Pythonのバージョンは、python -Vコマンドを実行して確認できます。また、このツールの使用は、ターゲット・サーバーへのSSHユーザー等価の事前設定を前提としています。dcliユーティリティを最初に-kオプションとともに使用すると、SSHユーザー等価を設定できます。また、SSHユーザー等価をサーバーに手動で設定することもできます。

指定したサーバーでコピーおよびコマンド実行が終了すると、コマンド出力(stdoutおよびstderr)が収集されて表示されます。dcliのオプションを指定すると、コマンド出力をエラーなしの出力(通常のステータスを表示するメッセージなど)に簡略化できます。

9.2 dcliの構文

この項では、dcliユーティリティの構文について説明します。

構文

dcli [options] [command]

コマンド引数

  • options: コマンド・オプション
  • command: オペレーティング・システムのプロンプトから実行可能なコマンドです。

コマンド・オプション

表9-1 dcliのオプション

オプション 説明

--batchsize=MAXTHDS

パラレル実行スレッドの数を制限します。これにより、操作をパラレルに実行するターゲット・サーバーの数が制限されます。

-c CELLS

コマンドの送信先のターゲット・サーバーのカンマ区切りのリストを指定します。

--ctimeout=CTIMEOUT

ターゲット・サーバーへの初期接続の最大時間(秒)を指定します。

-d DESTFILE

-fオプションを使用してファイルまたはディレクトリをコピーする際に使用される、リモート・サーバー上のターゲットのコピー先ディレクトリまたはファイルを指定します。

-f FILE

サーバーにコピーするファイルまたはファイル・テンプレートを指定します。これらのファイルは実行されません。これらのファイルは、後で実行するスクリプト・ファイルにできます。ファイルはターゲット・サーバー上のユーザーのデフォルト・ホーム・ディレクトリにコピーされます。

-g GROUPFILE

コマンドの送信先のターゲット・サーバーのリストを含むファイルを指定します。サーバーは、ホスト名またはIPアドレスで識別できます。

-h--help

ヘルプ・テキストを表示して終了します。

--hidestderr

SSHを使用してリモートで実行されるコマンドの標準エラー・メッセージ(STDERR)を非表示にします。

-k

公開キー・ファイルをサーバー上のauthorized_keysファイルに追加し、-cオプションまたは-gオプションで指定したサーバーに現在のユーザーのSSHユーザー等価を設定します。

--key-with-one-password

このオプションを使用すると、SSHユーザー等価の設定が容易になります。これは、ユーザー・パスワードを1回入力し、指定されたパスワードをすべての構成済サーバーに使用することによって行われます。指定されない場合、サーバーごとにパスワード入力要求が表示されます。

-l USERID

リモート・サーバーにログインしているユーザーを指定します。デフォルトはcelladminユーザーです。

--root-exadatatmp

このオプションは、-l rootと同様に、rootユーザーを使用します。ただし、/rootをデフォルトの作業ディレクトリとして使用するかわりに、このオプションでは/var/log/exadatatmpが使用されます。これにより、/rootに書き込まれるファイルについてAdvanced Intrusion Detection Environment (AIDE)によって生成されたアラートが回避されます。

--maxlines=MAXLINES

各ターゲット・サーバーの出力を指定された行数に制限します。デフォルトでは、各ターゲット・サーバーの出力制限は100000行です。

-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

ターゲット・サーバーで、指定されたコマンド・オプションを使用してvmstatユーティリティを実行します。

-x EXECFILE

コピーしてサーバーで実行するコマンド・ファイルを指定します。指定したファイルには、コマンドのリストが含まれます。.scl拡張子の付いたファイルは、CellCLIユーティリティによって実行されます。別の拡張子の付いたファイルは、オペレーティング・システムのシェルによってサーバーで実行されます。ファイルはターゲット・サーバー上のユーザーのデフォルト・ホーム・ディレクトリにコピーされます。

使用上のノート

ローカルのシェルで解釈される記号が含まれるコマンドの場合は、コマンドを二重引用符で囲みます。コマンドに次の文字が含まれる場合は、外側の引用符とエスケープ文字が必要です。

  • $ (ドル記号)
  • ' (引用符)
  • < (小なり)
  • > (大なり)
  • ( ) (カッコ)

バックスラッシュ(\)は、リモート・シェルによる解釈なしでCellCLIユーティリティに文字を渡すことのできるエスケープ文字です。

エスケープ文字を必要とする記号のためにコマンドが複雑になる場合、状況によってはそのコマンドをスクリプトに配置して、-xオプション付きで実行する必要があります。スクリプト内では、エスケープ文字は必要ありません。

トラブルシューティング

ローカルのdcliプロセスが終了してもリモートのコマンドが続行する場合がありますが、それらの出力とステータスを確認することはできません。

dcliユーティリティからの戻り値は次のとおりです。

  • 0: ファイルまたはコマンドがコピーされ、すべてのサーバーで正常に実行されました。
  • 1: 1つ以上のサーバーにアクセスできず、リモート実行により0以外のステータスが返されました。
  • 2: ローカルのエラーによりコマンドを実行できませんでした。

いずれかのサーバーが停止して応答がない場合は、メッセージがstderrに書き込まれ、応答のないサーバーが表示されます。その他のサーバーは操作が続行され、完了後のリターン・コードは1になります。

9.3 dcliの例

この項には、dcliユーティリティの使用例が含まれます。

9.3.1 dcliを使用した現在のユーザーのSSHユーザー等価の設定

この例は、-kオプションを使用して現在のユーザーのSSHユーザー等価を設定する方法を示しています。

例9-1 現在のユーザーのSSHユーザー等価の設定

$ ./dcli -k -g mycells

-kオプションは、SSHプロトコルのバージョン2でユーザーがデフォルトのキー・ファイル名を受け入れていることを前提とします。これらのファイル名はid_dsa.pubまたはid_rsa.pubで、~/.sshディレクトリにあります。

ユーザーはセル認証の確認を求められたり、リモート・ユーザーのパスワードを求められたりする場合があります。-kのキーの交換は、ユーザーがすべてのセルでパスワード入力を同時に求められないように、セル間で連続して実行されます。-kオプションが一度使用されると、同じセルに対する後続のコマンドでは-kオプションが不要になり、そのユーザーのパスワードをホストから取得する必要もありません。

9.3.2 dcliを使用した-nオプションの使用

この例は、CellCLIコマンドのALTER IORMPLAN OBJECTIVE='basic'を実行する方法を示しています。この例では、エラーなしの出力が簡略化されます。

例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.3 dcliを使用した-rオプションの使用

この例は、CellCLIコマンドのLIST GRIDDISKを実行する方法を示しています。この例では、normalを含む出力の行が削除されます。

このコマンドは、mycellsグループ・ファイルに表示されるターゲット・セルで実行されます。

例9-3 -rオプションの使用

$ ./dcli -l celladmin -r '.*normal' -g mycells "cellcli -e list celldisk"

出力は次のようになります。

.*normal: ['stsd2s2', 'abcd2x3']
abcd2x3: CD_06_abcd2x3    importRequired

9.3.4 dcliを使用した-vオプションの使用

この例は、冗長(-v)オプションをSSHに使用する方法を示しています。

例9-4 -vオプションの使用

$ ./dcli -s "-v" -c mycell date

9.3.5 dcliを使用した-tオプションの使用

この例は、-tオプションを使用してターゲット・セルを表示する方法を示しています。

-tオプションは、-cオプションまたは-gオプションと組み合せて使用してください。

例9-5 -tオプションの使用

$ ./dcli -t -c exa01celadm09 date
Target cells: ['exa01celadm09']
exa01celadm09: Fri Jul 17 15:37:31 PDT 2019

9.3.6 dcliを使用した-fオプションの使用

この例は、-fオプションを使用する方法を示しています。

例9-6 -fオプションの使用

この例では、mycellsファイルにリストされたストレージ・サーバーにファイル・セットがコピーされます。

dcli -g mycells -f '*.bin'

9.3.7 dcliを使用した--vmstatオプションの使用

この例は、dcliの--vmstatオプションの使用方法を示しています。

例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.3.8 dcliを使用した--hidestderrオプションの使用

この例は、--hidestderrオプションを使用する方法を示しています。

このオプションは、リモートで実行されるコマンドにSSHを使用している場合にのみ使用できます。

例9-8 --hidestderrオプションの使用

この最初のコマンドでは--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
この2つ目のコマンドでは--hidestderrオプションを使用しているため、エラーは表示されません。
$ ./dcli -l root -g cell --hidestderr -l root "ls -l unknown_file;\ 
cellcli -e list cell"

exam08cel01: exam08cel01         online
exam08cel02: exam08cel02         online

9.3.9 dcliを使用した--showbannerオプションの使用

この例は、--showbannerオプションを使用する方法を示しています。

例にある******BANNER******のかわりにリモート・セルのバナーが使用されます。

例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.3.10 dcliを使用したIORMプランの変更

この例は、mycellsグループ・ファイルのターゲット・セルでIORMPLANをアクティブに変更するCellCLIコマンドを示しています。

-tオプションでは、mycellsグループ・ファイルのセルが表示されます。

例9-10 dcliを使用したIORMプランの変更

$ ./dcli -g mycells -l root -t "cellcli -e alter iormplan active"

9.3.11 スクリプトでのdcliの使用

この例は、ターゲット・セル上のreConfig.sclファイル内のCellCLIコマンドを示しています。

ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-11 スクリプトでのdcliの使用

$ ./dcli -g mycells -x reConfig.scl

9.3.12 dcliを使用したグリッド・ディスクのステータス表示

この例は、ターゲット・セル上のグリッド・ディスクの名前とステータスを表示するCellCLIコマンドの実行方法を示しています。

ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。ステータスがactiveの出力行は削除されます。

例9-12 dcliを使用したグリッド・ディスクのステータス表示

$ ./dcli -r '.*active' -g mycells "cellcli -e list griddisk"

9.3.13 dcliを使用したアラート履歴情報の表示

この例は、アラート履歴名、調査担当者、ターゲット・セルでの重大度を表示するCellCLIコマンドを示しています。

ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。重大度がclearの出力行は削除されます。

例9-13 dcliを使用したアラート履歴情報の表示

$ ./dcli -r '.*clear' -g mycells \
   "cellcli -e list alerthistory attributes name, examinedby, severity"

9.3.14 dcliを使用したアラート履歴(調査担当者が設定されていない)の表示

この例は、ターゲット・セルに調査担当者が設定されていないアラート履歴を表示するCellCLIコマンドを示しています。

ターゲット・セルはallcellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-14 dcliを使用したアラート履歴(調査担当者が設定されていない)の表示

$ ./dcli -g allcells -l celladmin \
   "cellcli -e list alerthistory where examinedby=\'\' "

9.3.15 dcliを使用した現在のメトリックのアラート状態の表示

この例は、現在のオブジェクトのメトリック(セルのグループのグリッド・ディスクでの大きいブロック読取りの合計MB)を取得するCellCLIコマンドを示しています。

このコマンドは、ターゲット・セル上のメトリックGD_IO_BY_R_LGの現在のメトリック・アラートの状態とメトリック値をリストします。ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-15 dcliを使用した現在のメトリックのアラート状態の表示

$ ./dcli -g mycells "cellcli -e list metriccurrent GD_IO_BY_R_LG \
  attributes alertstate, metricvalue"

9.3.16 dcliを使用したグループ内の現在のオブジェクトの特定のメトリックの表示

この例は、現在のオブジェクトのメトリック(グリッド・ディスクでのブロック読取りまたは書込みリクエストの数)を取得するCellCLIコマンドを示しています。

このCellCLIコマンドは、現在のオブジェクトのメトリック(ターゲット・セル上のGD_IO_RQで始まる名前)を表示します。ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-16 dcliを使用したグループ内の現在のオブジェクトの特定のメトリックの表示

$ ./dcli -g mycells "cellcli -e list metriccurrent where name like \'GD_IO_RQ.*\'"

9.3.17 dcliを使用した現在のオブジェクトの特定メトリックの表示

この例は、ターゲット・セルのcl_put (セルCPU使用率)と同じ名前を持つ現在のオブジェクトのメトリックを表示するCellCLIコマンドを示しています。

ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-17 dcliを使用した現在のオブジェクトの特定メトリックの表示

$ ./dcli -g mycells "cellcli -e list metriccurrent cl_cput"

9.3.18 dcliを使用した物理ディスクの表示

この例は、ターゲット・セルのステータスが標準ではない物理ディスクを表示するCellCLIコマンドを示しています。

ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-18 dcliを使用した物理ディスクの表示

$ ./dcli -g allcells "cellcli -e list physicaldisk where status not = normal"

9.3.19 dcliを使用したセル・ディスクの空き領域の表示

この例は、ターゲット・セル上の空き領域が100MB未満であるセル・ディスクを表示するCellCLIコマンドを示しています。

ターゲット・セルはmycellsグループ・ファイルに含まれます。このコマンドは、デフォルトのcelladminユーザーとして実行されます。

例9-19 dcliを使用したセル・ディスクの空き領域の表示

この例では、バックスラッシュ(\)は、リモート・シェルによる解釈なしでCellCLIユーティリティに大なり記号(>)を渡すことのできるエスケープ文字です。

$ ./dcli -g allcells "cellcli -e list celldisk where freespace \> 100M"

9.3.20 dcliを使用したアラート履歴の表示

この例は、特定の期間のアラート履歴を表示するCellCLIコマンドを示しています。

例9-20 dcliを使用したアラート履歴の表示

この例で、バックスラッシュ(\)は、リモート・シェルによる解釈なしでCellCLIユーティリティに大なり記号(>)と引用符を渡すことのできるエスケープ文字です。

dcli -g lab.cells "cellcli -e  list alerthistory where begintime \> \'Aug 4, 2009 12:06:38 PM\'"

9.4 Oracle Exadata Storage ServerでのSSHのユーザー等価の設定

ユーザー等価を設定することにより、セルのパスワードを入力する必要なく、リモートのセルにコマンドを発行できます。