使用 Oracle Cloud Infrastructure 命令行界面管理 Oracle Exadata Database Service on Cloud@Customer
简介
Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 是用于管理 OCI 中资源的绝佳工具,包括 Oracle Exadata Database Service on Cloud@Customer 资源。OCI CLI 支持您轻松、高效地编排和自动执行 OCI 操作。在 OCI REST API 上调用 OCI CLI 时,这意味着 OCI CLI 和 OCI REST API 兼容,尽管语法不同。您可以在开发 OCI REST API 自动化过程中使用 OCI CLI 进行试错,然后轻松部署自动化。
这是一个由两部分组成的系列,在此第一部分中,我们将向您介绍 OCI CLI 的基础知识,而在第二部分中,我们将重点介绍特定于 Oracle Exadata Database Service on Cloud@Customer 的命令和工作流。
注:将动态缩放与远程插件一起使用时,还需要使用 OCI CLI,但本教程将不介绍动态缩放本身。
目标
-
安装 OCI CLI。
-
使用输出格式可根据您的需要筛选和格式化命令输出。
-
使用输入帮助来简化 OCI CLI 的使用。
Prerequisites
-
使用 Oracle Exadata Database Service on Cloud@Customer 基础设施访问 OCI 租户。
-
在租户中创建的具有授予所需权限的策略的组中的用户。
-
支持的操作系统 (Operating System,OS) 上安装的 Python 环境版本,可以访问 OCI 租户。有关更多信息,请参见 Supported Python Versions and Operating Systems 。
-
用于对 API 请求进行签名的密钥对,公共密钥已上载到 Oracle。
任务 1:安装 OCI CLI
OCI CLI 构建在适用于 Python 的 OCI 软件开发工具包 (SDK) 上,并在 Mac、Windows 或 Linux 上运行。Python 代码调用 OCI API 以提供为各种服务实施的功能,包括 Oracle Exadata Database Service on Cloud@Customer 和 Oracle Autonomous Database on Exadata Cloud@Customer。
-
从此处下载适用于 OS 的 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 响应之间的相关性非常重要。list
等 OCI CLI 子命令通常会返回许多结果,而get
等 OCI CLI 子命令仅返回一个结果。-
其中,JSON 响应显示数据是
[
指定的 list 或 array 。[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 帮助中心。
Use Oracle Cloud Infrastructure Command Line Interface to manage Oracle Exadata Database Service on Cloud@Customer
G38697-01
Copyright ©2025, Oracle and/or its affiliates.