使用 Oracle Cloud Infrastructure 命令行介面管理 Cloud@CustomerOracle Exadata Database Service on Cloud@Customer 上的 Oracle Exadata Database Service
簡介
Oracle Cloud Infrastructure Command Line Interface (OCI CLI) 是管理 OCI 資源的絕佳工具,包括 Oracle Exadata Database Service on Cloud@Customer 資源。OCI CLI 可讓您輕鬆有效地協調和自動化 OCI 作業。當 OCI CLI 在 OCI REST API 上呼叫時,這表示即使語法不同,OCI CLI 與 OCI REST API 仍可相容。在 OCI REST API 自動化開發期間,您可以使用 OCI CLI 進行試用和錯誤,然後以更少的心力部署自動化。
這是兩個部分系列,在第一部分中,我們將向您介紹 OCI CLI 的基本知識,第二部分則更專注於 Oracle Exadata Database Service on Cloud@Customer 特定指令和工作流程。
注意:搭配遠端 Plugin 使用「動態調整規模」時,也需要 OCI CLI,但是本教學課程中將不會涵蓋「動態調整規模」本身。
目標
-
安裝 OCI CLI。
-
使用輸出格式來篩選和格式化指令輸出以滿足您的需求。
-
使用輸入協助簡化 OCI CLI 的使用。
必備條件
-
Access to an OCI tenancy with an Oracle Exadata Database Service on Cloud@Customer infrastructure.
-
在租用戶中建立的使用者,在具有授予所需權限之原則的群組中。
-
支援的作業系統 (OS) 上安裝可存取 OCI 租用戶的受支援 Python 環境版本。如需詳細資訊,請參閱支援的 Python 版本和作業系統。
-
用於簽署 API 要求的金鑰組,將公開金鑰上傳至 Oracle。
工作 1:安裝 OCI CLI
OCI CLI 建置在適用於 Python 的 OCI 軟體開發套件 (SDK) 上,並在 Mac、Windows 或 Linux 上執行。The Python code makes calls to OCI APIs to provide the functionality implemented for the various services including Oracle Exadata Database Service on Cloud@Customer and Oracle Autonomous Database on Exadata Cloud@Customer.
-
從這裡下載適用於您作業系統的 OCI CLI: OCI CLI GitHub 儲存庫。
-
依照您作業系統的安裝指示進行。
-
執行下列指令以驗證您的安裝。
$ oci --version
-
使用設定對話方塊設定組態,其中包含使用 OCI 所需的證明資料。
$ oci setup config
-
請確認您的組態檔。
舉例而言:
[DEFAULT] user=ocid1.user.oc1..<unique_ID> fingerprint=<your_fingerprint> key_file=~/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..<unique_ID> # Some comment region=us-ashburn-1
-
請執行下列命令來檢查您的連線,此連線會顯示租用戶的命名空間。
$ oci os ns get
-
執行下列命令以列出可用的區間。
$ oci iam compartment list
這會產生下列 JSON 回應:
{ "data": [ { "compartment-id": "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq", "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/some-email@oracle.com", "CreatedOn": "2023-11-10T13:27:32.885Z" } }, "description": "Compartment for Exadata Infrastructure", "freeform-tags": {}, "id": "ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdh7q", "inactive-status": null, "is-accessible": null, "lifecycle-state": "ACTIVE", "name": "ExaInfra", "time-created": "2023-11-10T13:27:32.945000+00:00" } ] }
注意:請注意,輸出已截斷,僅顯示第一個區間。
-
執行以下命令以列出區間中的所有工作要求。
$ oci work-requests work-request list --compartment-id ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdh7q
使用輸出格式來篩選和格式化指令輸出以滿足您的需求
正如先前範例所示,OCI CLI 指令的 JSON 回應可能相當廣泛、難以追蹤且不容易閱讀。
例如,在 Linux 的命令提示字元中,您可以隨時將輸出導向電源工具 (例如 grep) 來過濾您的回應。
使用下列命令列出特定區間中的所有 VM 叢集並篩選 id
。
$ oci db vm-cluster list --compartment-id <OCID> | grep \"id\"
這將會產生下列回應:
"id":"ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
"id":"ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"
不過,OCI CLI 內建的查詢功能具有 --query
參數,您可以在其中指定要查詢的欄位。
-
使用
--query
參數執行下列命令。$ oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"id\"]"
JSON 回應將會是:
[ [ "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq" ], [ "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra" ] ]
-
您可以在
--query
後面輕鬆指定其他欄位,以建立更複雜的查詢。$ oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"hostname\" , \"id\"]"
JSON 回應將會是:
[ [ "fraexaclu1-uvlkz", "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq" ], [ "fraexaclu2-2uyfk", "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra" ] ]
-
您可以使用
--output
表格參數,取得更方便使用的輸出。$oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"hostname\" , \"id\"]" --output table
回應將會是:
+----------------------------------------------------------------------------------------------------------------------+ | Column1 | Column2 | +----------------------------------------------------------------------------------------------------------------------+ | fraexaclu1-uvlkz | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq | | fraexaclu2-2uyfk | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra | +------------------+---------------------------------------------------------------------------------------------------+
-
您也可以使用
--query
參數來指定資料欄的標題。$ oci db vm-cluster list --compartment-id <OCID> --query "data[].{\"Hostname\" : \"hostname\" , \"OCID\" : \"id\" }" --output table
回應將會是:
+----------------------------------------------------------------------------------------------------------------------+ | Hostname | OCID | +----------------------------------------------------------------------------------------------------------------------+ | fraexaclu1-uvlkz | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq | | fraexaclu2-2uyfk | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra | +------------------+---------------------------------------------------------------------------------------------------+
注意:請務必瞭解與
--query
參數搭配使用的語法和 JSON 回應之間的關聯。OCI CLI 子命令 (例如list
) 通常傳回許多結果,而 OCI CLI 子命令 (例如get
) 則只會傳回一個結果。-
其中 JSON 回應顯示資料是
[
指定的清單或陣列。[opc@jens-oci-1 ~]$ oci db vm-cluster list { "data": [ {
然後查詢語法如下所示:
--query "data[].[ field1 , field2 ]"
-
其中 JSON 回應顯示資料是單一物件。
[opc@jens-oci-1 ~]$ oci db vm-cluster get { "data": {
get
指令的語法如下:--query "data.[ field1 , field2 ]"
-
使用輸入協助簡化 OCI CLI 的使用
有許多不同的方法可以透過 OCI CLI 取得特定和自動使用案例的輸入協助。
-
使用環境變數:
您可以使用環境變數來儲存傳送至 OCI CLI 的參數值。
例如,您可以將
$T
用於租用戶 OCID,並將$C
用於區間 OCID。T=ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq C=ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7m7a
您可以在 OCI CLI 命令中使用此命令,如下所示:
$ oci work-requests work-request list --compartment-id $C
-
使用
--help
:您可以隨時使用
--help
取得命令的其他資訊。這適用於 OCI CLI 命令結構中的所有層級。舉例而言:
oci --help oci db --help oci db vm-cluster --help oci db vm-cluster list --help
以下為
oci db vm-cluster --help
指令的回應範例。Usage: oci db vm-cluster [OPTIONS] COMMAND [ARGS]... Details of the cloud VM cluster. Applies to Exadata Cloud Service instances only. Options: -?, -h, --help For detailed help on any of these individual commands, enter <command> --help. Commands: add Add Virtual Machines to the Cloud... change-vm-cluster-subscription Associate a cloud VM cluster with... change-compartment Moves a cloud VM cluster and its... create Creates a cloud VM cluster. delete Deletes the specified cloud VM... get Gets information about the... get-exadata-iorm-config Gets the IORM configuration for... get-update Gets information about a... get-update-history Gets the maintenance update... list Gets a list of the cloud VM... list-update-histories Gets the history of the... list-updates Lists the maintenance updates... remove Remove Virtual Machines from the... update Updates the specified cloud VM... update-exadata-iorm-config Updates the IORM settings for the...
-
在主要組態檔中使用設定檔:
使用設定對話方塊設定 OCI CLI 時,將會建立主要組態檔,且其為輸出中所列的路徑。在 Linux 和 Unix 上,主要組態檔位於
/home/opc/.oci/config
。主配置檔的範例:
[opc@jens-oci-1 ~]$ cat .oci/config [DEFAULT] user=ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3dpa fingerprint=5f:12:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:8c:e4 key_file=/home/opc/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq region=eu-frankfurt-1
在上述範例中,已使用定義的使用者、租用戶及區域建立預設設定檔。在不指定參數的情況下使用命令行時,將會使用設定檔中的預設值。如果您想要查看設定檔中定義之值以外的結果,您可以在命令行中明確指定這些值。
您也可以在主配置檔中建立多個設定檔。
[DEFAULT] user=ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3dpa fingerprint=5f:12:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:8c:e4 key_file=/home/opc/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq region=eu-frankfurt-1 [AMS] user=ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3dpa fingerprint=5f:12:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:8c:e4 key_file=/home/opc/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq region=eu-amsterdam-1
您可以使用以下指令參照預先定義的設定檔。
oci db vm-cluster list --compartment-id $C --profile AMS --query "data[].[\"display-name\"]" --output table
-
使用執行時期組態檔:
如果您想要在不同的區域、區間、VM 叢集等之間進行選取,可以更輕鬆地在第二個選擇性的程式實際執行組態檔中指定具有此資訊的設定檔。程式實際執行組態檔正在補充主要組態檔。您可以在執行時期組態檔中指定命令行參數的預設值。
您可以使用下列指令建立執行階段配置檔案。
$ oci setup oci-cli-rc --file .oci/oci_cli_rc
您可以補充主配置檔中的設定檔,並新增其他設定檔詳細資訊到執行時期配置檔的結尾。
[DEFAULT] compartment-id = ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7m7a [AMS] compartment-id = ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7m7a vm-cluster-id = ocid1.vmcluster.oc1.eu-amsterdam-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq
您可以在指令執行時使用下列指令指定這些定義的設定檔。
$ oci db vm-cluster get --profile AMS --query "data.{\"OCID\" : \"id\" , \"Core Count\" : \"cpu-core-count\" }" --output table +------------+------------------------------------------------------------------------------------------------------+ | Core Count | OCID | +------------+------------------------------------------------------------------------------------------------------+ | 0 | ocid1.vmcluster.oc1.eu-amsterdam-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq | +------------+------------------------------------------------------------------------------------------------------+
-
產生完整命令 JSON 輸入檔:
完整命令 JSON 輸入檔會與
--from-json file://<json file name>
參數搭配使用,以指定命令的所有參數。為了達到此目的,有一個稱為--generate-full-command-json-input
的參數,它會建立一個包含該命令所有參數的 JSON 檔案。使用下列命令產生檔案名稱為
vm-cluster_update.json
的 JSON 檔案。oci db vm-cluster update --generate-full-command-json-input > vm-cluster_update.json
您可以編輯此 JSON 輸入檔案,並且只保留與您想要執行之命令相關的參數。在此範例中,我們將擴展 VM 叢集的 OCPU 數目 (0 (零),並需要 VM 叢集 ID 和新的 OCPU 數量 (擴展至 4 個 OCPU)。
{ "vmclusterId": "ocid1.vmcluster.oc1.eu-frankfurt-1.antheljrvwun52iawxlyg2hp6lr3xawbvub7kcjje7yta45yluiz6xxl2tkq", "cpuCoreCount": 4 }
使用下列命令使用 JSON 輸入檔。
oci db vm-cluster update --from-json file://vm-cluster_update.json
相關連結
確認
- 作者 - Jens Ejvinsson (Exadata Cloud@Customer Black Belt)、Zsolt Szokol (Exadata Cloud@Customer Black Belt)
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Use Oracle Cloud Infrastructure Command Line Interface to manage Oracle Exadata Database Service on Cloud@Customer
G38698-01
Copyright ©2025, Oracle and/or its affiliates.