使用 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,但是本教學課程中將不會涵蓋「動態調整規模」本身。

目標

必備條件

工作 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.

  1. 從這裡下載適用於您作業系統的 OCI CLI: OCI CLI GitHub 儲存庫

  2. 依照您作業系統的安裝指示進行。

  3. 執行下列指令以驗證您的安裝。

    $ oci --version
    
  4. 使用設定對話方塊設定組態,其中包含使用 OCI 所需的證明資料。

    $ oci setup config
    
  5. 請確認您的組態檔。

    舉例而言:

    [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
    
  6. 請執行下列命令來檢查您的連線,此連線會顯示租用戶的命名空間。

    $ oci os ns get
    
  7. 執行下列命令以列出可用的區間。

    $ 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"
         }
         ]
    }
    

    注意:請注意,輸出已截斷,僅顯示第一個區間。

  8. 執行以下命令以列出區間中的所有工作要求。

    $ 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 參數,您可以在其中指定要查詢的欄位。

  1. 使用 --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"
          ]
    ]
    
  2. 您可以在 --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"
         ]
        ]	
    
  3. 您可以使用 --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 |
    +------------------+---------------------------------------------------------------------------------------------------+
    
  4. 您也可以使用 --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 取得特定和自動使用案例的輸入協助。

確認

其他學習資源

docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center