Autonomous Database：別のテナンシにあるAutonomous Databaseのクローン（クロス・テナンシ・クローン）を作成してみた

# はじめに
先日の機能追加で、異なるテナンシ間でAutonomous Databaseのクローン（クロス・テナンシ・クローン）が作成できるようになりました。
従来からあるテナンシ内でのクローンで利用可能だったフル・クローン、メタデータ・クローン、リフレッシュ可能クローンのいずれのタイプのクローンも作成することが可能です。

そこで今回は、別のテナンシにあるECPUモデルのAutonomous Transaction Processingのフル・クローンを作成する手順を検証してみました。

# 1.クローンの作成先となるテナンシでの作業（１）
クローンの作成先となるAutonomous DatabaseがあるテナンシのOCIDを確認してメモしておきます。

![スクリーンショット 2023-12-22 15.30.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/de8a3cd6-302b-ce76-3dca-49ab215d4b7a.png)

クローンの作成を許可するIAMグループを作成します。
今回はDestinationGroupという名前のグループを作成しました。
グループDestinationGroupのOCIDを確認し、メモしておきます。

![スクリーンショット 2023-12-22 15.35.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/03f54a71-d3ce-96db-ebb1-978e74d4248e.png)

グループDestinationGroupに、クローンの作成を許可したいIAMユーザを追加します。

![スクリーンショット 2023-12-22 15.36.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/480f6e55-6dbd-cbd6-b1a1-cc222f1ac93b.png)

# 2. クローンのソースとなるAutonomous Databaseがあるテナンシでの作業
クローンのソースとなるAutonomous DatabaseがあるテナンシのOCIDを確認し、メモしておきます。
![スクリーンショット 2023-12-22 15.29.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/278bf04e-b61a-1303-9faa-d93e51fa85a6.png)

rootコンパートメントに以下のポリシー・ステートメントを含むポリシーを作成します。
```
define tenancy DestinationTenancy as ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
define group DestinationGroup as ocid1.group.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
admit group DestinationGroup of tenancy DestinationTenancy to read autonomous-database-family in compartment compament_name
```
・**define tenancy DestinationTenancy as**の後には、クローンを作成するテナンシのOCIDを指定します。
・**define group DestinationGroup as**の後には、クローンを作成するテナンシ
内の、クローンを作成するユーザを含むグループのOCIDを指定します。
・admitで始まる行の末尾の **in compartment** の後には、クローンのソースとなるAutonomous Databaseがあるコンパートメントの名前を指定します。

![スクリーンショット 2023-12-22 15.49.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/d4fc6b2d-98b0-e499-a634-496947e88e71.png)

# 3. クローンの作成先となるテナンシでの作業（2）
rootコンパートメントに以下のポリシー・ステートメントを含むポリシーを作成します。
```
Define tenancy SourceTenancy as ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endorse group DestinationGroup to read autonomous-database-family in tenancy SourceTenancy
```
**Define tenancy SourceTenancy as**の後には、クローンのソースとなるAutonomous DatabaseがあるテナンシのOCIDを指定します。

![スクリーンショット 2023-12-22 15.51.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f685067e-0230-caa4-408f-b04250885044.png)


# 3.クロス・テナンシ・クローンの作成
クロス・テナンシ・クローンは、現在はコンソールからは作成できず、OCI CLIまたはAPIからのみ作成可能です。
（2023年12月時点）

今回はOCI CLIを使用して、クロス・テナンシ・クローンを作成してみます。

Autonomous Databaseのクローンを作成するコマンドは、以下のとおりです。
```
oci db autonomous-database create-from-clone
```
・パラメータ **--source-id** にはクローンのソースとなるAutonomous DatabaseのOCIDを指定します。
・パラメータ **--compartment-id** にはクローンを作成するコンパートメントを指定します。
その他の作成するクローン（Autonomous Database）の設定に関するパラメータの詳細はこちらのドキュメントに記載されています。

https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/autonomous-database/create-from-clone.html

今回は、以下のパラメータを指定してクローンを作成してみました。

|設定項目|パラメータ|設定値|
|---|---|---|
|クローンのタイプ|--clone-type|FULL|
|表示名|--display-name|DestinationATP|
|データベース名|--db-name|destinationatp|
|管理者パスワード|--admin-password|Demo#1Demo#1|
|CPUモデル|--compute-model|ECPU|
|ECPU数|--compute-count|2|
|CPU自動スケーリング|--is-auto-scaling-enabled|TRUE|
|ストレージサイズ（GB）|--data-storage-size-in-gbs|20|
|自動バックアップ保持期間（日）|--backup-retention-period-in-days|1|

上記の設定を行うコマンドは、次のようになります。
```
oci db autonomous-database create-from-clone \
      --source-id ocid1.autonomousdatabase.oc1.ap-tokyo-1.************************************************************ \
      --compartment-id ocid1.compartment.oc1..********************************************************** \
      --clone-type FULL \
      --display-name DestinationATP \
	  --db-name DestinationATP \
      --admin-password Demo#1Demo#1 \
      --compute-model ECPU \
      --compute-count 2 \
      --is-auto-scaling-enabled TRUE \
      --data-storage-size-in-gbs 20 \
      --backup-retention-period-in-days 1
```

準備が整ったので、OCI CLIを使用して別のテナンシにあるAutonomous Databaseをソースとしたクローンを作成してみます。

コマンドは、1.でDestinationGroupに追加したクローンの作成先のテナンシのユーザで実行します。
```
user1@mymac ~ % oci db autonomous-database create-from-clone \
      --source-id ocid1.autonomousdatabase.oc1.ap-tokyo-1.************************************************************ \
      --compartment-id ocid1.compartment.oc1..********************************************************** \
      --clone-type FULL \
      --display-name DestinationATP \
          --db-name destinationatp \
      --admin-password Demo#1Demo#1 \
      --compute-model ECPU \
      --compute-count 2 \
      --is-auto-scaling-enabled TRUE \
      --data-storage-size-in-gbs 20 \
      --backup-retention-period-in-days 1
{
  "data": {
    "actual-used-data-storage-size-in-tbs": null,
    "allocated-storage-size-in-tbs": null,
    "apex-details": null,
    "are-primary-whitelisted-ips-used": null,
    "autonomous-container-database-id": null,
    "autonomous-maintenance-schedule-type": "REGULAR",
    "available-upgrade-versions": null,
    "backup-config": {
      "manual-backup-bucket-name": null,
      "manual-backup-type": "NONE"
    },
    "backup-retention-period-in-days": 1,
    "character-set": "AL32UTF8",
    "compartment-id": "ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "compute-count": 2.0,
    "compute-model": "ECPU",
    "connection-strings": {
      "all-connection-strings": null,
      "dedicated": null,
      "high": null,
      "low": null,
      "medium": null,
      "profiles": null
    },
    "connection-urls": {
      "apex-url": null,
      "database-transforms-url": null,
      "graph-studio-url": null,
      "machine-learning-notebook-url": null,
      "machine-learning-user-management-url": null,
      "mongo-db-url": null,
      "ords-url": null,
      "sql-dev-web-url": null
    },
    "cpu-core-count": 0,
    "customer-contacts": null,
    "data-safe-status": "NOT_REGISTERED",
    "data-storage-size-in-gbs": 20,
    "data-storage-size-in-tbs": null,
    "database-edition": "ENTERPRISE_EDITION",
    "database-management-status": null,
    "dataguard-region-type": null,
    "db-name": "destinationatp",
    "db-tools-details": [
      {
        "compute-count": null,
        "is-enabled": true,
        "max-idle-time-in-minutes": null,
        "name": "APEX"
      },
      {
        "compute-count": 2.0,
        "is-enabled": true,
        "max-idle-time-in-minutes": 10,
        "name": "DATA_TRANSFORMS"
      },
      {
        "compute-count": null,
        "is-enabled": true,
        "max-idle-time-in-minutes": null,
        "name": "DATABASE_ACTIONS"
      },
      {
        "compute-count": 2.0,
        "is-enabled": true,
        "max-idle-time-in-minutes": 240,
        "name": "GRAPH_STUDIO"
      },
      {
        "compute-count": null,
        "is-enabled": false,
        "max-idle-time-in-minutes": null,
        "name": "MONGODB_API"
      },
      {
        "compute-count": 2.0,
        "is-enabled": true,
        "max-idle-time-in-minutes": 60,
        "name": "OML"
      },
      {
        "compute-count": null,
        "is-enabled": true,
        "max-idle-time-in-minutes": null,
        "name": "ORDS"
      }
    ],
    "db-version": null,
    "db-workload": "OLTP",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "oracleidentitycloudservice/xxxx@3xxxxxxxx.com",
        "CreatedOn": "2023-12-22T06:03:38.891Z"
      }
    },
    "disaster-recovery-region-type": null,
    "display-name": "DestinationATP",
    "failed-data-recovery-in-seconds": null,
    "freeform-tags": {},
    "id": "ocid1.autonomousdatabase.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "in-memory-area-in-gbs": null,
    "in-memory-percentage": null,
    "infrastructure-type": null,
    "is-access-control-enabled": null,
    "is-auto-scaling-enabled": true,
    "is-auto-scaling-for-storage-enabled": false,
    "is-data-guard-enabled": false,
    "is-dedicated": false,
    "is-free-tier": false,
    "is-local-data-guard-enabled": false,
    "is-mtls-connection-required": false,
    "is-preview": false,
    "is-reconnect-clone-enabled": null,
    "is-refreshable-clone": null,
    "is-remote-data-guard-enabled": false,
    "key-history-entry": null,
    "key-store-id": null,
    "key-store-wallet-name": null,
    "kms-key-id": "ORACLE_MANAGED_KEY",
    "kms-key-lifecycle-details": null,
    "kms-key-version-id": null,
    "license-model": "BRING_YOUR_OWN_LICENSE",
    "lifecycle-details": null,
    "lifecycle-state": "PROVISIONING",
    "local-adg-auto-failover-max-data-loss-limit": null,
    "local-disaster-recovery-type": "BACKUP_BASED",
    "local-standby-db": null,
    "long-term-backup-schedule": null,
    "max-cpu-core-count": null,
    "memory-per-oracle-compute-unit-in-gbs": null,
    "ncharacter-set": "AL16UTF16",
    "next-long-term-backup-time-stamp": null,
    "nsg-ids": null,
    "ocpu-count": null,
    "open-mode": null,
    "operations-insights-status": "NOT_ENABLED",
    "peer-db-ids": null,
    "permission-level": null,
    "private-endpoint": null,
    "private-endpoint-ip": null,
    "private-endpoint-label": null,
    "provisionable-cpus": null,
    "refreshable-mode": null,
    "refreshable-status": null,
    "remote-disaster-recovery-configuration": null,
    "resource-pool-leader-id": null,
    "resource-pool-summary": {
      "is-disabled": true,
      "pool-size": null
    },
    "role": null,
    "scheduled-operations": null,
    "service-console-url": null,
    "source-id": "ocid1.autonomousdatabase.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "standby-db": null,
    "standby-whitelisted-ips": null,
    "subnet-id": null,
    "supported-regions-to-clone-to": null,
    "system-tags": {},
    "time-created": "2023-12-22T06:03:38.914000+00:00",
    "time-data-guard-role-changed": null,
    "time-deletion-of-free-autonomous-database": null,
    "time-disaster-recovery-role-changed": null,
    "time-local-data-guard-enabled": null,
    "time-maintenance-begin": null,
    "time-maintenance-end": null,
    "time-of-joining-resource-pool": null,
    "time-of-last-failover": null,
    "time-of-last-refresh": null,
    "time-of-last-refresh-point": null,
    "time-of-last-switchover": null,
    "time-of-next-refresh": null,
    "time-reclamation-of-free-autonomous-database": null,
    "time-until-reconnect-clone-enabled": null,
    "total-backup-storage-size-in-gbs": null,
    "used-data-storage-size-in-gbs": null,
    "used-data-storage-size-in-tbs": null,
    "vault-id": null,
    "whitelisted-ips": [
      "0.0.0.0/0"
    ]
  },
  "etag": "581f9186",
  "opc-work-request-id": "ocid1.coreservicesworkrequest.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
user1@mymac ~ % 
```
問題なくコマンドが実行できました。

クローンの作成先のテナンシのOCIコンソールで、クローン作成時に指定したコンパートメント内のAutonomous Databaseの一覧を確認します。
![スクリーンショット 2023-12-22 15.12.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/c637813c-f214-b18f-4122-4f3b17a54413.png)
OCI CLIコマンドのオプション--display-nameで指定したDestinatinATPという名前のAutonomous Databaseがプロビジョニング中になっています。

DestinationATPの詳細画面を確認します。
![スクリーンショット 2023-12-22 15.13.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/1b1557a4-fc2e-7466-a125-cccfc9c48259.png)

他のテナンシにあるAutonomous Databaseのクローンが、クローン作成時に指定した以下のパラメータ通りの設定で作成されていることが確認できました。

|設定項目|パラメータ|設定値|
|---|---|---|
|表示名|--display-name|DestinationATP|
|データベース名|--db-name|destinationatp|
|管理者パスワード|--admin-password|Demo#1Demo#1|
|CPUモデル|--compute-model|ECPU|
|ECPU数|--compute-count|2|
|CPU自動スケーリング|--is-auto-scaling-enabled|TRUE|
|ストレージサイズ（GB）|--data-storage-size-in-gbs|20|
|自動バックアップ保持期間（日）|--backup-retention-period-in-days|1|

# 参考情報
・[Cross Tenancy Cloning](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-clone-cross-tenancy.html#GUID-98C63A6A-BA44-4757-9BE3-6636732EA1A2)
・[OCI CLI Command Reference：oci db autonomous-database create-from-clone](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/autonomous-database/create-from-clone.html)