10 ExaCLIユーティリティの使用
ExaCLIユーティリティを使用すると、リモートでデータベースおよびセル・ノードを管理できます。
- ExaCLIコマンド・リファレンス
ExaCLIは、データベースおよびセル・ノードで実行されるコマンドライン管理ツールであり、リモートでノードを管理できます。 - ExaCLIセキュリティ
認証プロセスは各ExaCLIセッションで実行されます。 - ExaCLIで使用するユーザーの作成
ExaCLIを使用するには、リモート・ノード上でユーザーを作成する必要があり、そのユーザーに対してそのユーザーにふさわしい権限を持つロールを割り当てる必要があります。 - ExaCLIとDBMCLI/CellCLIでのコマンドの違い
- ExaCLI用の証明書
セキュリティ証明書により、リモート・ノードはExaCLIに対して自身のアイデンティティを確認できます。 - URLを使用したリモートからのコマンドの実行
リモート・ノードでコマンドを実行するには、exacli
を使用する以外に、URLを使用することもできます。
10.1 ExaCLIコマンド・リファレンス
概要
ExaCLIを使用して、リモート・ノードの環境でセルとデータベース・ノードの構成およびオブジェクトを管理できます。ExaCLIは、セルまたはデータベース・ノードのイメージ化の際にインストールされます。ExaCLIでは、DBMCLIおよびCellCLIと同じコマンド構文がサポートされます。主な違いは、ExaCLIではリモート・ホストからセルおよびデータベース・ノードを管理するのに対し、DBMCLIはデータベース・ノード上で直接実行され、CellCLIはセル・ノード上で直接実行されることです。
ExaCLIを使用する主な理由には、次の2つがあります。
-
多くの企業、特に政府機関では、コンプライアンス要件の一部としてセルおよびデータベース・ノード上のrootアクセスまたはSSHサービスを無効にする必要があります。
-
Exadataマシンをホストするサービス・プロバイダは、セルおよびデータベース・ノード上で実行されている仮想マシンへのアクセスを提供します。お客様が、ノードを管理するために、CellCLIまたはDBMCLIを使用して、セルまたはデータベース・ノードに対するSSHを実行することは、許可されません。
そのような場合、セルまたはデータベース・ノードを管理する方法は、リモート・ノードで実行されるExaCLIを使用することのみとなります。
前提条件
-
セルまたはデータベース・ノード上に作成されたユーザー(必要な権限が付与されていること)。詳細は、「ExaCLIで使用するユーザーの作成」を参照してください。
-
Javaバージョン1.8以降
Javaのバージョンは、
java -version
コマンドを実行すると確認できます。また、適切なJavaバージョンのインストール・ディレクトリを指すように、JAVA_HOME
環境変数を設定する必要があります。
ファイル・パス
/usr/local/sbin/exacli
構文
ExaCLIは、オペレーティング・システムのコマンドラインから実行します。
exacli -c [username@]remotehost[:port] [-l username] [--xml]
[--cookie-jar [filename]] [-e {command | 'command[; command]' | @batchfile}]
オプション
オプション | 説明 |
---|---|
|
接続先のリモート・ノードを指定します。ユーザー名の入力を求めるExaCLIのプロンプトが表示されます(指定していない場合)。 ExaCLIは、セルと計算ノードの両方に接続できます。計算ノードMSのデフォルトのポートは、7879です。 IPv6アドレスを使用すると、リモート・ホストを指定できます。IPv6アドレスは、例10-2に示すように角カッコと一重引用符で囲む必要があります。 |
|
リモート・ノードにログインするユーザー名を指定します。 |
|
出力をXML形式で表示します。 |
|
使用するCookie jarのファイル名を指定します。filenameの指定がない場合、Cookieは、 有効なCookieが存在することで、ExaCLIユーザーは、後続のExaCLIセッションでログインを要求されることなく、コマンドの実行が許可されます。 |
|
実行するExaCLIコマンドまたはバッチ・ファイルのいずれかを指定します。ExaCLIは、コマンドの実行後に終了します。 複数コマンドの実行を指定する場合は、コマンドを一重引用符で囲んで、シェルがセミコロンを解釈しないようにします。 インタラクティブなExaCLIセッションを開始するには、このオプションを省略します。 |
|
証明書をダウンロードするときに使用するプロキシ・サーバーを指定します。 |
|
ユーザー入力を求めるメッセージを抑制します。 |
使用上のノート
-
次に、
--cookie-jar
オプションのノートを示します。-
ユーザー名およびパスワードは、認証のためリモート・ノードに送信されます。認証に成功すると、リモート・ノードによってCookie (ログイン資格証明)が発行され、データベース・ノード上の指定した
filename
に格納されます。filename
が指定されない場合、Cookieは、HOME/.exacli/cookiejar
にあるデフォルトのCookie jarに格納されます(HOMEは、ExaCLIコマンドを実行しているOSユーザーのホーム・ディレクトリです)。 -
Cookie jarファイルの権限は、
rw- --- ---
(600)に設定されています。 -
ExaCLIコマンドを実行しているオペレーティング・システム・ユーザーがcookie-jarファイルの所有者です。
-
Cookie jarには、パラレル・セッションで複数のノード上の複数のユーザーからの複数のCookieを格納できます。
-
Cookieは、24時間後に無効化されます。
-
Cookieが見つからない場合や有効期限切れの場合は、ExaCLIによりパスワードの入力を求められます。新しいCookieがfilenameで識別されるCookie jar、またはfilenameが指定されていない場合はデフォルトのCookie jarに格納されます。
-
ExaCLIでは、
--cookie-jar
オプションがない場合も、デフォルトのcookie-jarからcookieがチェックされます。ただし、cookieが存在しない場合や有効期限切れの場合は、--cookie-jar
オプションが指定されていないと、新しいcookieがデフォルトのcookie jarに格納されません。
-
-
次に、
-e
オプションのノートを示します。-
ExaCLIは、コマンドの実行後に終了します。
-
実行する複数のコマンドを指定する場合、コマンドを一重引用符で囲んで、シェルがセミコロンを解釈しないようにします。
-
バッチ・ファイルは、実行する1つ以上のExaCLIコマンドが含まれているテキスト・ファイルです。
-
-
次に、
-n (--no-prompt)
オプションのノートを示します。-
ExaCLIがユーザーから追加情報を必要とする場合、たとえばExaCLIがユーザーにパスワードの入力を求めたり(たとえば、Cookie-jarに有効なCookieがないため)、リモート・ノードのアイデンティティを確認するよう求める必要がある場合、ExaCLIはエラー・メッセージを出力して終了します。
-
例
次に示す例では、ユーザーを作成して必要な権限を付与した後のExaCLIの使用方法を示します。ユーザーを作成して権限を割り当てる例については、「ExaCLIで使用するユーザーの作成」を参照してください。
例10-1 ExaCLIを使用したセル上のユーザーへの接続
セル・ノードcellnode01
にcelladministrator
ユーザーとして接続します。デフォルトのCookie jarにcelladministrator
ユーザーの有効なCookieが含まれない場合、ExaCLIによりパスワードの入力が求められます。--cookie-jar
オプションが指定されていないため、CookieはCookie jarには格納されません。
$ exacli -l celladministrator -c cellnode01
次に、同等のコマンドを示します。
$ exacli -c celladministrator@cellnode01
例10-2 IPv6アドレスを使用したリモート・ホストへの接続
IPv6アドレスを使用すると、リモート・ホストを指定できます。IPv6アドレスは、角カッコと一重引用符で囲む必要があります。
$ exacli -c 'scott@[2001:db8:a0b:12f0::1]'
$ exacli -c '[2001:db8:a0b:12f0::1]' -l scott
例10-3 ExaCLI接続用のCookieの作成
認証のために、ユーザーcelladministrator
およびパスワードがcellnode01
に送信されます。認証に成功すると、セル・ノードにより、デフォルトのCookie jarに格納されるCookieが送り返されます。指定されたコマンドがセル・ノードで実行されます。次の点に注意してください
ヒント:
複数のコマンドは一重引用符で囲む必要があります。$ exacli -l celladministrator -c cellnode01 --cookie-jar -e 'list cell; list celldisk'
Password=************
例10-4 ExaCLI接続用のCookieの作成
認証のために、ユーザーcelladministrator
およびパスワードがcellnode01
に送信されます。認証に成功すると、セル・ノードにより、デフォルトのCookie jarに格納されるCookieが送り返されます。指定されたコマンドがセル・ノードで実行されます。
ヒント:
複数のコマンドは一重引用符で囲む必要があります。$ exacli -l celladministrator -c cellnode01 --cookie-jar -e 'list cell; list celldisk'
Password=************
例10-5 ExaCLIコマンド実行時のCookieの使用
前述の例に示したようにCookieを作成すると、celladministrator
ユーザーの後続のExaCLIセッションにはデフォルトのCookie jarのCookieが使用されるため、ExaCLIによりパスワードの入力を要求されることがなくなります。
$ exacli -l celladministrator -c cellnode01 -e list griddisk detail
celladministrator
以外のユーザーとして接続を実行する場合、そのユーザーのCookieが存在していないときには、パスワードの入力を求められます。
$ exacli -c user1@cellnode01 -e list griddisk detail
Password=************
例10-6 ExaCLIを使用したDBSERVERの詳細の表示
この例のExaCLIは、dbnodeadministrator
ユーザーとしてdbnode01
ノードに接続し、DBSERVERオブジェクトの詳細な属性をリストします。
$ exacli -l dbnodeadministrator -c dbnode01 --cookie-jar -e list dbserver detail
ログインおよびパスワードは、認証のためデータベース・ノードに送信されます。認証に成功すると、データベース・ノードにより、ExaCLIが実行されているマシン上のCookie jarに格納されるログイン資格証明付きのCookieが返されます
例10-7 ExaCLIを使用したDBSERVERのALERTHISTORYの表示
この例のExaCLIは、dbnodeadministrator
ユーザーとしてdbnode01
ノードに接続し、ALERTHISTORYオブジェクトをリストします。デフォルトのCookie jarに有効なCookieがある場合は、ExaCLIからパスワードの入力は求められません。
$ exacli -c dbnodeadministrator@dbnode01 -e list alerthistory
例10-8 ExaCLIでのコマンド・バッチ・ファイルの使用方法
この例では、ファイルcommandFile
はローカル・ディレクトリ(ExaCLIコマンドがコールされたディレクトリ)に格納されていて、次の情報が含まれています。
list dbserver detail
list alerthistory
ExaCLIは、dbnode01
データベース・ノードにdbnodeadministrator
ユーザーとして接続し、認証に成功すると、commandFile
内のコマンドを実行します。
$ exacli -l dbnodeadministrator -c dbnode01 -e @commandFile
親トピック: ExaCLIユーティリティの使用
10.2 ExaCLIセキュリティ
認証プロセスは、各ExaCLIセッションで実行されます。
ExaCLIはDBMCLIコマンドおよびCellCLIコマンドをリモート・ノード上で実行するため、コマンドを実行する前にユーザー・アクセスが認証されている必要があります。ExaCLIは、指定されたコマンドの実行に必要な権限が付与されているリモート・ノードのOracle Exadata System Softwareユーザーに接続します。
有効なCookieが存在することで、ExaCLIユーザーは、各セッションでログインを要求されることなく、コマンドの実行が許可されます。Cookieとは、リモート・ノードによって発行されるログイン資格証明が含まれているトークンであり、ExaCLIを実行しているホスト・マシンに格納されます。リモート・ノードにより発行されたCookieは、24時間後に無効化されます。Cookieリポジトリは、Cookie jarと呼ばれます。
同じCookie jarを複数のリモート・ノードに接続する複数の同時ExaCLIセッションで使用でき、異なるログイン名を使用している場合でも可能です。たとえば、exadcli
では複数のExaCLIセッションを使用して複数のリモート・ノードに接続しますが、それらはすべて同じCookie jarを使用します。
Cookie jarは、オペレーティング・システム・ユーザーの読取りおよび書込み権限付きで構成されています。その他の誰も、このファイルの読取り、書込みまたは実行ができません。
親トピック: ExaCLIユーティリティの使用
10.3 ExaCLIで使用するユーザーの作成
ExaCLIを使用するには、リモート・ノード上でユーザーを作成する必要があり、そのユーザーに対してそのユーザーにふさわしい権限を持つロールを割り当てる必要があります。
例10-9 ExaCLIで使用するためのすべての権限を持つユーザーの作成および構成
DBMCLI (データベース・ノードの場合)またはCellCLI (セル・ノードの場合)を使用して、リモート・ノードでユーザーとロールを作成します。これは、ExaCLIを使用してリモート・ノードに接続することを許可されるユーザーです。ロールを使用してユーザーに権限を割り当てます。
-
データベース・ノードの例:
次の例では、
administrator
ロールを作成して、そのロールにすべての権限を付与します。その後、dbadministrator
というユーザーを作成して、そのユーザーにadministrator
ロールを付与します。DBMCLI> CREATE ROLE administrator DBMCLI> GRANT PRIVILEGE ALL ACTIONS ON ALL OBJECTS ALL ATTRIBUTES - WITH ALL OPTIONS TO ROLE administrator DBMCLI> CREATE USER dbnodeadministrator password=* DBMCLI> GRANT ROLE administrator TO USER dbnodeadministrator
-
セル・ノードの例:
この例では、
administrator
ロールを作成して、そのロールにすべての権限を付与します。その後、celladministrator
というユーザーを作成して、そのユーザーにadministrator
ロールを付与します。CellCLI> CREATE ROLE administrator CellCLI> GRANT PRIVILEGE ALL ACTIONS ON ALL OBJECTS ALL ATTRIBUTES - WITH ALL OPTIONS TO ROLE administrator CellCLI> CREATE USER celladministrator password=* CellCLI> GRANT ROLE administrator TO USER celladministrator
例10-10 ExaCLIでのセル監視用セル・ノード・ユーザーの作成
この例では、オブジェクトの詳細を表示する権限のみを持つcellmon
というユーザーを作成します。
CellCLI> CREATE ROLE monitor
CellCLI> GRANT PRIVILEGE list ON ALL OBJECTS ALL ATTRIBUTES -
WITH ALL OPTIONS TO ROLE monitor
CellCLI> CREATE USER cellmon password=*
CellCLI> GRANT ROLE monitor TO USER cellmon
例10-11 ExaCLIでのノード監視用データベース・ノードのユーザーの作成
この例では、オブジェクトの詳細を表示する権限を持つdbnodemon
というユーザーを作成します。
DBMCLI> CREATE ROLE monitor
DBMCLI> GRANT PRIVILEGE list ON ALL OBJECTS ALL ATTRIBUTES -
WITH ALL OPTIONS TO ROLE monitor
DBMCLI> CREATE USER dbnodemon password=*
DBMCLI> GRANT ROLE monitor TO USER dbnodemon
関連トピック
親トピック: ExaCLIユーティリティの使用
10.4 ExaCLIとDBMCLI/CellCLIでのコマンドの違い
ExaCLIでは、DBMCLIおよびCellCLIと完全に同じコマンド構文がサポートされます。
すべてCellCLIコマンドがExaCLIを介して実行できるわけではありません。ExaCLIでは、次のコマンドはサポートされていません。
-
セル・サービスの再起動(
ALTER CELL
コマンドのrestart
オプション) -
セル・サービスの起動(
ALTER CELL
コマンドのstartup
オプション) -
セル・サービスの停止(
ALTER CELL
コマンドのshutdown
オプション) -
ユーザー管理コマンド(
CREATE USER
、ALTER USER
、DROP USER
) -
ロール管理コマンド(
CREATE ROLE
、DROP ROLE
、GRANT ROLE
、REVOKE ROLE
) -
権限管理コマンド(
GRANT PRIVILEGE
、REVOKE PRIVILEGE
) -
CALIBRATE
-
DESCRIBE
-
HELP
-
次のセル属性の取得:
LIST CELL
コマンドの使用によるrsStatus
、cellsrvStatus
、msStatus
-
SET
-
SPOOL
-
START
親トピック: ExaCLIユーティリティの使用
10.5 ExaCLI用の証明書
セキュリティ証明書により、リモート・ノードはExaCLIに対して自身のアイデンティティを確認できます。
ExaCLIとリモート・ノード上で動作している管理サーバー(MS)間のすべての通信は、HTTPSを介して行われます。管理サーバーは、HTTPSアクセス用のデフォルトの自己署名セキュリティ証明書とともにデプロイされます。オプションで、認証局(CA)により発行された別のセキュリティ証明書をアップロードできます。
信頼性のあるCA証明書は、ExaCLIが実行されているマシン上で次のコマンドを実行することでリストできます。
$JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass password
- デフォルトの自己署名証明書の使用
セキュリティ証明書がExaCLIによって警告なしで受け入れられるには、それが信頼できる認証局(CA)によって署名されている必要があります。 - CA認証済セキュリティ証明書の使用
Oracle Exadata Database Machineの管理者は、環境で必要な場合にCA認証済セキュリティ証明書を提供できます。
親トピック: ExaCLIユーティリティの使用
10.5.1 デフォルトの自己署名証明書の使用
セキュリティ証明書がExaCLIによって警告なしで受け入れられるには、それが信頼できる認証局(CA)によって署名されている必要があります。
ExaCLIが信頼性のあるCAによって署名されたセキュリティ証明書を持っていないリモート・ノードに接続した場合、証明書を検証するようにユーザーに要求する警告メッセージが生成されます。検証されると、ExaCLIによりセキュリティ証明書が記憶され、後続のコマンドでユーザーが証明書の再検証を求められることはありません。すべてのセルおよび計算ノードは、インストール中または管理サーバー(MS)のデプロイメント中に、自己署名証明書を使用して自動的に構成されます。
ノート:
Oracle Exadata System Softwareリリース19.3以降を使用している場合は、プロンプトが表示されたときにyまたはnを入力し、[Enter]を押します。自己署名セキュリティ証明書(非CA証明書)を受け入れる例:
$ exacli -l celladministrator --cookie-jar -c cellnode01
This connection is unsecure. You have asked ExaCLI to connect to cell cellnode01 securely.
The identity of cellnode01 cannot be verified.
Got certificate from server:
CN=cellnode01,OU=Oracle Exadata,O=Oracle Corporation,L=Redwood City,ST=California,C=US
Do you want to accept and store this certificate? (Press y/n)
y
データベース・ノードの自己署名セキュリティ証明書(非CA証明書)を受け入れる例:
$ exacli -l dbadministrator --cookie-jar -c dbnode01
This connection is unsecure. You have asked ExaCLI to connect to dbserver dbnode01 securely.
The identity of dbnode01 cannot be verified.
Got certificate from server:
CN=dbnode01,OU=Oracle Exadata,O=Oracle Corporation,L=Redwood City,ST=California,C=US
Do you want to accept and store this certificate? (Press y/n)
y
親トピック: ExaCLI用の証明書
10.5.2 CA認証済セキュリティ証明書の使用
Oracle Exadata Database Machineの管理者は、環境で必要な場合にCA認証済セキュリティ証明書を提供できます。
有効なCA認証のセキュリティ証明書は、ExaCLIによって、プロンプトなしで、証明書の受入れを要求することなく受け入れられます。各証明書はキーのペア(公開キーおよび一致する秘密キー)で構成されています。
親トピック: ExaCLI用の証明書
10.6 URLを使用したリモートからのコマンドの実行
リモート・ノードでコマンドを実行するには、exacli
を使用する以外に、URLを使用することもできます。
URLを使用してリモート・ノード上でコマンドを実行するには、まず、ユーザー、ロールおよび権限を作成しておく必要があります。詳細は、「ExaCLIで使用するユーザーの作成」を参照してください。
URLの形式は次のとおりです。
https://remotenode:port/MS/RESTService/?cmd=command_to_run
リモート・ノードがセル・ノードの場合、ポートは443です。リモート・ノードがデータベース・ノードの場合、ポートは7879です。
ブラウザでURLを送信すると、ブラウザによって、証明書に関する警告が表示されます。新しい証明書に関する警告である場合は、通常、その警告を許容できます。変更された証明書に関する警告である場合は、証明書が許容可能であることを確認する必要があります。
その後、ブラウザによって、ユーザー名およびパスワードが要求されます。間違ったパスワードを連続して5回入力すると、アカウントはロックされます。同じアカウントに再度ログインするには、30分待機する必要があります。
コマンドの結果は、プレーン・テキストで返されます。
同じセッションでさらにリクエストを送信した場合、セッションCookieの期限が切れないかぎり、ブラウザに証明書に関する警告が表示されることや、ユーザー名およびパスワードが要求されることはありません。
次の例では、list dbserver detail
コマンドを実行します。
https://dbnode:7879/MS/RESTService/?cmd=list+dbserver+detail
次の例では、list cell detail
コマンドを実行します。
https://cellnode:443/MS/RESTService/?cmd=list+cell+detail
RESTful形式でURLを指定することもできます。次に例を示します。
https://cellnode:443/MS/RESTService/celldisk/list?where=size>1g
curl
を使用してURLを実行することもできます。ステップは次のとおりです。
-
サーバーの証明書をダウンロードして格納します。
( openssl s_client -showcerts -connect remote_node:port < /dev/null | openssl x509 -outform PEM > mycertfile.pem ) >& /dev/null
これは1回のみ行う必要があります。有効な証明書が指定されないかぎり、
curl
は続行されません。 -
ユーザー名とパスワードを指定します。
curl -u username:password -c cookiejar --cacert mycertfile.pem 'https://remote_node:port /MS/RESTService/login'
-
コマンドを実行します。
データベース・ノードの例:
curl -b cookiejar --cacert mycertfile.pem 'https://remote_node:port/MS/RESTService/?cmd=list+dbserver+detail'
セル・ノードの例:
curl -b cookiejar --cacert mycertfile.pem 'https://remote_node:port/MS/RESTService/?cmd=list+cell+detail'
親トピック: ExaCLIユーティリティの使用