[Autonomous Database]Data Transformsとデータソースをリージョン間でクローンしてみた

# はじめに
Autonomous DatabaseではData Transformsというデータ変換ツールが付属しています。Data Transformsを使って東京リージョンのAutonomous DatabaseとBase Database間でデータ変換をするデータ・フローを作成したのですが、同じものを別のリージョンに作りたいとしたとき、せっかく作成したData Transformsのフローは作成しなおしになるのでしょうか。エクスポート、インポートが可能ではありますが、全部まるっとできないかということで東京リージョンからシドニーリージョンにクローンを試してみました。

# 前提条件
+ Autonomous Databaseはプライベート・エンドポイントを利用。ただし、インターネット経由で付属ツールのアクセスができるようパブリック・アクセスを許可済み
+ Autonomous Database、Base Databaseは同じプライベート・サブネットを使用。プライベート・サブネットにアクセスできるコンピュート・インスタンスを同じVCNのパブリック・サブネットに作成済み
+ 東京リージョンのVCNとシドニーリージョンのVCNのCIDRは重複しない。(東京リージョン:10.100.0.0/16 、シドニーリージョン:10.0.0.0/16)
 
# 東京リージョンで環境構築
元となる東京リージョンの環境を構築します。
## Autonomous DatabaseとBase Databaseを作成する
同じVCNのプライベート・サブネットを選択して、Autonomous DatabaseとBase Databaseのインスタンスを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/c4e81cf3-d696-456e-9e5f-b937d5c90fc5.png)


Base Databaseのプラガブル・データベースPDB1にTESTUSERというユーザーも作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/04fe476c-72c4-4726-a2ea-12ffe7b44689.png)


## Data Transformsでデータフローを作成
Data Transformsでデータ・フローを作成します。以下の手順で実施します。

+ プライベート・エンドポイントのAutonomous Databaseであるため、Data Transformsでプライべート・ネットワークを利用するための以下のSQLコマンドを実行する(反映まで2時間くらいかかることがあります）
`ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'PRIVATE_ENDPOINT';`

+ Data Transformsを起動しADMINユーザーでログインする
+ Autonomous DatabaseとBase Databaseに対してConnectionを作成
Data TransformのAutonomous Database（ローカル）へのConnection（接続）はデフォルトで作成済みのものはクローン後編集できないという不具合が2024/3時点（次期リリースで修正される模様）であるため、別に作成します。[こちらの記事](https://qiita.com/goo2000/items/de0bc1014b8c7503a4bc#data-transforms%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%AE%E4%BD%9C%E6%88%90)を参照して、Autonomous DatabaseはADMINユーザーで、Base Database(pdb1)はSYSTEMユーザーで接続するよう設定します。名前はAutonomous Databaseがatp1、Base Databaseはpdb1にしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/959a6c34-c193-4927-b876-347fdf2a1cbd.png)

+ プロジェクトとデータ・フローを作成
Autonomous DatabaseのSSBユーザーのCUSTOMER表を条件（C_NATION='JAPAN')でフィルタし、Base Database(pdb1)のTESTUSERユーザーに新しい表として作成するデータ・フローを作成しました。データ・フローの作成手順などData Transformsの使い方は[チュートリアル](https://oracle-japan.github.io/ocitutorials/adb/adb403-data-transforms/)をご確認ください。
:::note
クローンした後の実行で、エラーにならないようオプションでDrop and create target tableをTrueに設定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/f6533207-9a7f-43ab-a59c-c0bdfbd12994.png)
:::

作成したデータ・フローを実行して成功を確認しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/30260cea-c504-4839-bebe-5b7c79d4cf75.png)

# シドニーリージョンで環境構築
クローン先となるシドニーリージョンの環境を構築します。Autonomous Databaseはクローンで作成するので、プライベート・サブネットを選択したBase Databaseだけ作成します。このDBシステムに対して東京のBase DatabaseのPDB1のリモート・クローンを後で行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/005ec0c6-1572-40c7-a666-39a1012e2b30.png)

# リージョン間ネットワークの疎通設定
## リモートVCNピアリングの設定
画面はシドニーの情報ですが、シドニーと東京の両方で設定が必要です。
コンソールのメニューからネットワーキング→顧客接続性→動的ルーティング・ゲートウェイを選択し、動的ルーティング・ゲートウェイの作成をクリックします。任意の名前を入力して動的ルーティング・ゲートウェイの作成ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/4d43fd51-cf95-401d-b80c-48c63bc9ee33.png)

動的ルーティング・ゲートウェイが作成され使用可能になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/815c461e-0ab9-421a-8d60-fb0a7e5185dc.png)

次にタブから、アタッチメントを選択し、VCNアタッチメントから仮想クラウド・ネットワーク・アタッチメントの作成をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/f89dc00c-e719-411b-b186-fc1422529f18.png)

任意の名前、VCNを入力して作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/26efdd65-9fd9-4ac9-a57f-7569197ec1f1.png)

作成されました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/8f1691b3-2c6a-40cf-9218-9afe03acd032.png)

アタッチメントを選択し、リモート・ピアリング接続アタッチメントからリモート・ピアリング接続の作成をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/64416111-8f25-404d-a3b4-03eda9bafdbc.png)


任意の名前を入力し、リモート・ピアリング接続の作成をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/030b3590-7165-48a3-a7c5-27a7d52a72e7.png)

作成されました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/eb8e7e06-18b3-4058-80f6-6c1f10d1a709.png)

同様に東京リージョンでも、動的ルーティング・ゲートウェイ、仮想クラウド・ネットワーク・アタッチメント、リモート・ピアリング接続の作成を行います。

## 接続の確立

接続の確立をします。右上の接続の確立をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/4ac55afe-18f5-45b6-9d1a-21c479884554.png)

東京リージョンのリモート・ピアリング接続のOCIDを張り付けて、接続の確立をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/e6bb84b6-b300-4bf6-a95d-884c21c354b4.png)

接続が確立されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/a5feae30-68e7-4846-b91d-03a686695708.png)

東京のリモート・ピアリング接続の情報を確認すると、こちらもピアリング済みであることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/a17825ac-5650-44cf-bc12-d6b51ef8f6a4.png)


## ルート・ルールとセキュリティ・リストの設定
次に両リージョンのVCN（プライベート・サブネット、パブリック・サブネット）のルート・ルール、セキュリティ・リストでお互いにアクセスできるよう必要な設定を行います。
以下はシドニーのプライベート・サブネットのルート・ルールです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/fd88c17b-44c5-4f04-a4c5-ee73d3d7bf31.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/ec1f2de7-38bd-415a-9056-907adcf8687e.png)

セキュリティ・リストのイングレス・ルール、エグレス・ルールにもルールを追加します。
以下では同じVCNのパブリック・サブネットからはすべてのプロトコルを許可し、東京リージョンからのアクセスは1521、22で制限しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/5a50c644-77c8-4f8b-9762-bd6efb4a4c74.png)

## 接続の確認
東京リージョンのパブリック・サブネットに作成済みのコンピュートからOracle Clientを使ってシドニーのプライベート・エンドポイントに作成したBase DatabaseのCDBにアクセスしてみます。接続文字列はデータベース詳細にあるデータベース接続で確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/020a540c-5864-4aee-ae7c-dbe11486734b.png)

今回DNS名の解決設定は行っていないので、ホスト名をIPアドレスに変更して接続の確認を行いました。DNS名の解決設定をする場合は[こちらの記事](https://qiita.com/500InternalServerError/items/1cb5a05f5ff711b0ccb2#3-vcn%E9%96%93%E3%81%A7%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88dns%E3%81%AB%E3%82%88%E3%82%8B%E5%90%8D%E5%89%8D%E8%A7%A3%E6%B1%BA%E3%82%92%E5%8F%AF%E8%83%BD%E3%81%AB%E3%81%99%E3%82%8B)が参考になると思います。
```
[oracle@dev1 ~]$ sqlplus system/<パスワード>@10.0.1.49:1521/syddb19c_syddb19c.prisubnet.sydaravcn1.oraclevcn.com

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Apr 17 01:47:56 2025
Version 21.9.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Tue Jan 21 2025 09:44:42 +00:00

Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.26.0.0.0

SQL>
```
# Base Databaseのリモート・クローン
Base DatabaseにはPDBのリモート・クローン機能が存在しますが、[ドキュメント](https://docs.oracle.com/en/cloud/paas/base-database/about-pdb/index.html#GUID-107AD46F-EE5B-4A70-BB66-3A374B872A27)に同じAD上のみとあり、リージョン間だと利用できませんでした。そのため手動でリモート・クローンを実行します。

## 東京リージョンのPDBにデータベース・リンク用のユーザーを作成
リモート・クローンはターゲットのCDBでソースPDBへのデータベース・リンクを作成し、それを指定してPDBを作成します。
東京リージョンのCDBに共通ユーザーを作成するか、ソースのPDBにローカル・ユーザーを作成する必要がありますが、今回は後者でユーザーを作成しました。
```
-- 東京のBaseDBのPDB1にSYSユーザーで接続
sqlplus / as sysdba
SQL> ALTER SESSION SET container=pdb1;
SQL> CREATE USER remote_clone_user IDENTIFIED BY <パスワード>;
-- 必要な権限を付与（最小の例)
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO remote_clone_user;
```

## シドニーリージョンのCDBでデータベース・リンクを作成
次にターゲットであるシドニーリージョンのCDBでソース・データベースである東京リージョンのCDBへのデータベース・リンクを作成します。
```
-- シドニーのBaseDBのCDBにSYSユーザーで接続し実行する
sqlplus sys/<パスワード>@10.0.1.49:1521/syddb19c_syddb19c.prisubnet.sydaravcn1.oraclevcn.com as sysdba
SQL> CREATE DATABASE LINK PDB1.PRIVATE1.VCN1.ORACLEVCN.COM
    CONNECT TO REMOTE_CLONE_USER IDENTIFIED BY <パスワード> USING '(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.1.104)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=pdb1.private1.vcn1.oraclevcn.com)))'

-- データベース・リンクの確認
SQL> select * from user_users@pdb1.PRIVATE1.VCN1.ORACLEVCN.COM;

USERNAME          USER_ID ACCOUNT_STATUS LOCK_DATE    EXPIRY_DATE        DEFAULT_TABLESPACE TEMPORARY_TABLESPACE LOCAL_TEMP_TABLESPACE CREATED            INITIAL_RSRC_CONSUMER_GROUP EXTERNAL_NAME PROXY_ONLY_CONNECT COMMON ORACLE_MAINTAINED INHERITED DEFAULT_COLLATION IMPLICIT ALL_SHARD PASSWORD_CHANGE_DATE 
----------------- ------- -------------- ------------ ------------------ ------------------ -------------------- --------------------- ------------------ --------------------------- ------------- ------------------ ------ ----------------- --------- ----------------- -------- --------- -------------------- 
REMOTE_CLONE_USER     112 OPEN           Invalid Date 2025/6/16 11:34:55 USERS              TEMP                 TEMP                  2025/4/17 11:34:55 DEFAULT_CONSUMER_GROUP      null          N                  NO     N                 NO        USING_NLS_COMP    NO       NO        2025/4/17 11:34:55   

1行が選択されました。
```
## シドニーリージョンのCDBでPDBのクローンを実行
続けてクローンを実行します。
Base Databaseはデフォルトで暗号化されているので、ドキュメントの[「統一モードで、暗号化データを含むPDBのリモート・クローニングを2つのCDB間で実行する」](https://docs.oracle.com/cd/F19136_01/asoag/managing-keystores-encryption-keys-in-united-mode.html#GUID-2B2E9E7D-10E0-4D3E-B466-4767AC3D81C1)にある記載に従って、KEYSTORE IDENTIFIED BY句を指定します。

```
-- シドニーのBaseDBのCDBにSYSユーザーで接続して実行
SQL> create pluggable database CLONE_PDB1 from PDB1@pdb1.PRIVATE1.VCN1.ORACLEVCN.COM KEYSTORE IDENTIFIED BY <パスワード>;

Pluggable database CLONE_PDB1 created.

```

## シドニーリージョンでクローンPDBをOPEN
作成したPDBの情報を確認し、OPENします。

```
SQL> select * from v$pdbs;　-- CLONE_PDB1の情報があることを確認

CON_ID       DBID    CON_UID GUID                     NAME       OPEN_MODE  RESTRICTED OPEN_TIME                CREATE_SCN TOTAL_SIZE BLOCK_SIZE RECOVERY_STATUS SNAPSHOT_PARENT_CON_ID APPLICATION_ROOT APPLICATION_PDB APPLICATION_SEED APPLICATION_ROOT_CON_ID APPLICATION_ROOT_CLONE PROXY_PDB LOCAL_UNDO UNDO_SCN UNDO_TIMESTAMP CREATION_TIME      DIAGNOSTICS_SIZE PDB_COUNT AUDIT_FILES_SIZE MAX_SIZE MAX_DIAGNOSTICS_SIZE MAX_AUDIT_SIZE LAST_CHANGED_BY TEMPLATE TENANT_ID UPGRADE_LEVEL GUID_BASE64              
------ ---------- ---------- ------------------------ ---------- ---------- ---------- ------------------------ ---------- ---------- ---------- --------------- ---------------------- ---------------- --------------- ---------------- ----------------------- ---------------------- --------- ---------- -------- -------------- ------------------ ---------------- --------- ---------------- -------- -------------------- -------------- --------------- -------- --------- ------------- ------------------------ 
     2 2820305893 2820305893 LDUu1/xiGRfgYxkC9AqRBA== PDB$SEED   READ ONLY  NO         2025-04-17T01:32:44.203Z    2166472 1458569216       8192 ENABLED                           null NO               NO              NO                                  null NO                     NO                 1      280 Invalid Date   2025/1/21 9:41:36                 0         0                0        0                    0              0 COMMON USER     NO       null                  1 LDUu1/xiGRfgYxkC9AqRBAA= 
     3 1592369208 1592369208 LDVb30pJHwfgYxkC9AqvKQ== PDB0       READ WRITE NO         2025-04-17T01:32:46.732Z    2413382 1474297856       8192 ENABLED                           null NO               NO              NO                                  null NO                     NO                 1      280 Invalid Date   2025/1/21 9:54:11                 0         0                0        0                    0              0 COMMON USER     NO       null                  1 LDVb30pJHwfgYxkC9AqvKQA= 
     4 3775040101 3775040101 MvHI1HbI0ZLgYzEBAApkFQ== CLONE_PDB1 MOUNTED    null       2025-04-17T03:15:21.582Z    3210508 9552789504       8192 ENABLED                           null NO               NO              NO                                  null NO                     NO                 1      280 Invalid Date   2025/4/17 12:13:23                0         0                0        0                    0              0 COMMON USER     NO       null                  1 MvHI1HbI0ZLgYzEBAApkFQA= 


3行が選択されました。


SQL> alter pluggable database clone_pdb1 open;

Pluggable database CLONE_PDB1 altered.

```

手動で作成したのですぐにはコンソールに反映されません。[ドキュメント](https://docs.oracle.com/en/cloud/paas/base-database/about-pdb/index.html#GUID-A1C83C94-50F1-4F1F-9899-E6316027DEE9)によると、6時間という記載がありましたので、待って確認してみたところ、コンソールにも表示がされました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/385a8a36-0a1f-4ce6-8959-1018ae8ada6e.png)


# Autonomous Databaseのクローン
東京リージョンのAutonomous Databaseをシドニーリージョンにクローンします。Autonomous Databaseはリージョン間のクローンもコンソールで可能です。その他のアクションからクローンの作成を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/33e10018-e778-40d0-ab7c-721ebbb6ef73.png)


リージョンにはシドニー、VCN、サブネットはシドニーリージョンでBase Databaseを作成するときに指定した作成済みのVCN、プライベート・サブネットを選択してフル・クローンします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/e9b02589-cdfc-4cf9-a5cb-587f52f3c652.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/615e130e-8665-43b6-bd97-4695e3728134.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/217761df-1924-4180-b133-81785e288f00.png)

クローンが作成されました。一般情報のソースのクローニングに東京リージョンのAutonomous Databaseの名前が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/ffe9f171-1b36-4284-8ce9-f50e0e3af60a.png)

# Data Transformsにアクセスしフローを実行
クローンしたAutonomous DatabaseのData Transformsにアクセスし、ADMINユーザーでログインします。
Connectionsやデータ・フローやワーク・フローが存在することが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/98832f18-262a-4281-89d6-347c51ab0741.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/7f67be41-fef0-43a0-97f8-eacc6ae14ccc.png)



しかし、Connectionの定義は東京リージョンのAutonomous Dataase、Base Databaseを指したままなので変更が必要です。atp1、pdb1のJDBC URLをシドニーリージョンのAutonomous Database、Base DatabaseのPDBの文字列に修正します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/9539ae1b-fd88-4da7-a797-ac099699e222.png)

修正後、データ・フローを実行すると、成功しました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/66a527f5-122e-475e-88e0-596d4b0e205f.png)

# おわりに
東京リージョンで構築した環境をシドニーリージョンにクローンでもっていくことが無事できました。試している途中で確認したこともせっかくなので記載しておきます。


# ついでにやってみたことやぶつかったこと

## Base Databaseの接続を作成してSQLワークシートを利用する
接続を作成すると、コンソールからSQLワークシートが利用できます。コンピュートを用意する必要がなく便利かと思い、作成したDBシステムのデータベース詳細で接続を作成してみました。
接続の作成をクリックして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/140965f8-6d4d-426d-bcda-0a053ec929d5.png)

必要な項目を入力します。パスワード・シークレット、プライベート・エンドポイントは既存のものがない場合は作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/0bdfbe1f-0b0a-4510-b995-ff99714c401f.png)

作成したら作成済みの接続をクリックし、右上のSQLワークシートをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/8bb092cd-871b-4749-93bd-cf4b3178cd1a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/0db6342a-ecbb-4593-bb1e-c3615dc471ab.png)


SQLワークシートの例は以下のとおり。クライアントツールを準備しなくてもデータベースにアクセスできます。要塞があれば、SQLCLも利用できそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/0efcf6c8-3ac0-4780-9b18-3d09d375304a.png)

なお、セキュリティ・リストのエグレスルールにプライベート・サブネットのCIDRがないとORA-12170でアクセスできませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/453bc983-5d36-415f-bc22-624b4dd8d694.png)


## Base Databaseのパッチレベルをあわせる

実は東京リージョンとシドニーリージョンのBase Databaseのパッチレベルが違っており（東京19.24、シドニー19.26 )クローンした後のOPENで警告が発生し、RestrictedモードでのOPENとなりました。
```
alter pluggable database clone_pdb1 open;

ORA-17110 位置 0,0            
Execution completed with warning. https://docs.oracle.com/error-help/db/ora-17110/ 

select * from v$pdbs;

CON_ID       DBID    CON_UID GUID                     NAME       OPEN_MODE  RESTRICTED OPEN_TIME                CREATE_SCN TOTAL_SIZE BLOCK_SIZE RECOVERY_STATUS SNAPSHOT_PARENT_CON_ID APPLICATION_ROOT APPLICATION_PDB APPLICATION_SEED APPLICATION_ROOT_CON_ID APPLICATION_ROOT_CLONE PROXY_PDB LOCAL_UNDO UNDO_SCN UNDO_TIMESTAMP CREATION_TIME      DIAGNOSTICS_SIZE PDB_COUNT AUDIT_FILES_SIZE MAX_SIZE MAX_DIAGNOSTICS_SIZE MAX_AUDIT_SIZE LAST_CHANGED_BY TEMPLATE TENANT_ID UPGRADE_LEVEL GUID_BASE64              
------ ---------- ---------- ------------------------ ---------- ---------- ---------- ------------------------ ---------- ---------- ---------- --------------- ---------------------- ---------------- --------------- ---------------- ----------------------- ---------------------- --------- ---------- -------- -------------- ------------------ ---------------- --------- ---------------- -------- -------------------- -------------- --------------- -------- --------- ------------- ------------------------ 
     2 2820305893 2820305893 LDUu1/xiGRfgYxkC9AqRBA== PDB$SEED   READ ONLY  NO         2025-04-17T01:32:44.203Z    2166472 1458569216       8192 ENABLED                           null NO               NO              NO                                  null NO                     NO                 1      280 Invalid Date   2025/1/21 9:41:36                 0         0                0        0                    0              0 COMMON USER     NO       null                  1 LDUu1/xiGRfgYxkC9AqRBAA= 
     3 1592369208 1592369208 LDVb30pJHwfgYxkC9AqvKQ== PDB0       READ WRITE NO         2025-04-17T01:32:46.732Z    2413382 1474297856       8192 ENABLED                           null NO               NO              NO                                  null NO                     NO                 1      280 Invalid Date   2025/1/21 9:54:11                 0         0                0        0                    0              0 COMMON USER     NO       null                  1 LDVb30pJHwfgYxkC9AqvKQA= 
     4 3775040101 3775040101 MvHI1HbI0ZLgYzEBAApkFQ== CLONE_PDB1 READ WRITE YES        2025-04-17T03:17:43.518Z    3210508 9552789504       8192 ENABLED                           null NO               NO              NO                                  null NO                     NO                 1      280 Invalid Date   2025/4/17 12:13:23                0         0                0        0                    0              0 COMMON USER     NO       null                  1 MvHI1HbI0ZLgYzEBAApkFQA= 


Elapsed: 00:00:00.020
3行が選択されました。
```

pdb_plug_in_violationsを参照したところ、TYPEがERRORでSTATUSがPENDINGになっているものがありました。（★もOPEN前はPendingでしたが、OPEN後はRESOLVEDになっていました。）

```
select * from pdb_plug_io_violations;


NAME       CAUSE                    TYPE    MESSAGE                                                                                                                                                             STATUS   ACTION                                          
---------- ------------------------ ------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------- 
CLONE_PDB1 Parameter                WARNING CDB parameter pga_aggregate_limit mismatch: Previous 7424M Current 6912M                                                                                            RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 Parameter                WARNING CDB parameter nls_language mismatch: Previous 'AMERICAN' Current 'JAPANESE'                                                                                         RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 Parameter                WARNING CDB parameter wallet_root mismatch: Previous '/opt/oracle/dcs/commonstore/wallets/aradb19c_ps5_nrt' Current '/opt/oracle/dcs/commonstore/wallets/syddb19c_syddb19c' RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 Parameter                WARNING CDB parameter pga_aggregate_target mismatch: Previous 3712M Current 3456M                                                                                           RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 SQL Patch                ERROR   '19.26.0.0.0 Release_Update 2501181248' is installed in the CDB but '19.24.0.0.0 Release_Update 2406272351' is installed in the PDB                                 PENDING  Call datapatch to install in the PDB or the CDB 
CLONE_PDB1 SQL Patch                ERROR   Interim patch 37102264/25987410 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)): Installed in the CDB but not in the PDB                                         PENDING  Call datapatch to install in the PDB or the CDB 
CLONE_PDB1 SQL Patch                ERROR   Interim patch 36414915/25700138 (OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915)): Not installed in the CDB but installed in the PDB                               PENDING  Call datapatch to install in the PDB or the CDB 
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36538667 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           ★
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36414915 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           ★
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36587798 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           ★
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36582781 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           ★
PDB$SEED   SQL Patch                ERROR   Interim patch 37102264/25987410 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)): Installed in the CDB but not in the PDB                                         RESOLVED Call datapatch to install in the PDB or the CDB 
PDB$SEED   SQL Patch                ERROR   '19.26.0.0.0 Release_Update 2501181248' is installed in the CDB but no release updates are installed in the PDB                                                     RESOLVED Call datapatch to install in the PDB or the CDB 
PDB0       is encrypted tablespace? WARNING Tablespace SYSTEM is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.                                                                      RESOLVED Encrypt the tablespace.                         
PDB0       is encrypted tablespace? WARNING Tablespace SYSAUX is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.                                                                      RESOLVED Encrypt the tablespace.                         
PDB0       is encrypted tablespace? WARNING Tablespace USERS is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.                                                                       RESOLVED Encrypt the tablespace.                    
```

Base Databaseのコンピュートにログインし、datapatchを実行します。Precheck後問題なさそうだったのでそのまま実行しました。
```
[oracle@syd19c OPatch]$ ./datapatch -verbose -prereq -pdbs clone_pdb1
[oracle@syd19c OPatch]$ ./datapatch -verbose -pdbs clone_pdb1
SQL Patching tool version 19.26.0.0.0 Production on Thu Apr 17 15:13:01 2025
Copyright (c) 2012, 2025, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_39910_2025_04_17_15_13_01/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note:  Datapatch will only apply or rollback SQL fixes for PDBs
       that are in an open state, no patches will be applied to closed PDBs.
       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
       (Doc ID 1585822.1)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
Interim patch 36414915 (OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915)):
  Binary registry: Not installed
  PDB CLONE_PDB1: Applied successfully on 16-JUL-24 04.51.55.681299 AM
Interim patch 37102264 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)):
  Binary registry: Installed
  PDB CLONE_PDB1: Not installed

Current state of release update SQL patches:
  Binary registry:
    19.26.0.0.0 Release_Update 250118124854: Installed
  PDB CLONE_PDB1:
    Applied 19.24.0.0.0 Release_Update 240627235157 successfully on 16-JUL-24 04.56.35.205276 AM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CLONE_PDB1
    The following interim patches will be rolled back:
      36414915 (OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915))
    Patch 37260974 (Database Release Update : 19.26.0.0.250121 (37260974)):
      Apply from 19.24.0.0.0 Release_Update 240627235157 to 19.26.0.0.0 Release_Update 250118124854
    The following interim patches will be applied:
      37102264 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264))

Installing patches...
Patch installation complete.  Total patches installed: 3

Validating logfiles...done
Patch 36414915 rollback (pdb CLONE_PDB1): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/36414915/25700138/36414915_rollback_SYDDB19C_CLONE_PDB1_2025Apr17_15_13_35.log (no errors)
Patch 37260974 apply (pdb CLONE_PDB1): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37260974/26040769/37260974_apply_SYDDB19C_CLONE_PDB1_2025Apr17_15_13_49.log (no errors)
Patch 37102264 apply (pdb CLONE_PDB1): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37102264/25987410/37102264_apply_SYDDB19C_CLONE_PDB1_2025Apr17_15_13_48.log (no errors)

Automatic recompilation incomplete; run utlrp.sql to revalidate.
  PDBs: CLONE_PDB1

SQL Patching tool complete on Thu Apr 17 15:14:19 2025
```

完了したので、CLONE_PDB1を再起動します。
```
SQL> alter pluggable database clone_pdb1 close;

Pluggable database CLONE_PDB1 altered.

SQL> alter pluggable database clone_pdb1 open;

Pluggable database CLONE_PDB1 altered.

SQL> select name,cause,type,message,status,action from pdb_plug_in_violations order by name;

NAME       CAUSE                    TYPE    MESSAGE                                                                                                                                                             STATUS   ACTION                                          
---------- ------------------------ ------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------- 
CLONE_PDB1 Parameter                WARNING CDB parameter pga_aggregate_limit mismatch: Previous 7424M Current 6912M                                                                                            RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 Parameter                WARNING CDB parameter nls_language mismatch: Previous 'AMERICAN' Current 'JAPANESE'                                                                                         RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 Parameter                WARNING CDB parameter wallet_root mismatch: Previous '/opt/oracle/dcs/commonstore/wallets/aradb19c_ps5_nrt' Current '/opt/oracle/dcs/commonstore/wallets/syddb19c_syddb19c' RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 Parameter                WARNING CDB parameter pga_aggregate_target mismatch: Previous 3712M Current 3456M                                                                                           RESOLVED Please check the parameter in the current CDB   
CLONE_PDB1 SQL Patch                ERROR   '19.26.0.0.0 Release_Update 2501181248' is installed in the CDB but '19.24.0.0.0 Release_Update 2406272351' is installed in the PDB                                 RESOLVED Call datapatch to install in the PDB or the CDB 
CLONE_PDB1 SQL Patch                ERROR   Interim patch 37102264/25987410 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)): Installed in the CDB but not in the PDB                                         RESOLVED Call datapatch to install in the PDB or the CDB 
CLONE_PDB1 SQL Patch                ERROR   Interim patch 36414915/25700138 (OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915)): Not installed in the CDB but installed in the PDB                               RESOLVED Call datapatch to install in the PDB or the CDB 
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36538667 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36414915 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36587798 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           
CLONE_PDB1 Oracle Opatch            WARNING Oracle opatch mismatch: opatch 36582781 is missing in the CDB.                                                                                                      RESOLVED Install the Oracle opatch in the CDB.           
PDB$SEED   SQL Patch                ERROR   Interim patch 37102264/25987410 (OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)): Installed in the CDB but not in the PDB                                         RESOLVED Call datapatch to install in the PDB or the CDB 
PDB$SEED   SQL Patch                ERROR   '19.26.0.0.0 Release_Update 2501181248' is installed in the CDB but no release updates are installed in the PDB                                                     RESOLVED Call datapatch to install in the PDB or the CDB 
PDB0       is encrypted tablespace? WARNING Tablespace SYSTEM is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.                                                                      RESOLVED Encrypt the tablespace.                         
PDB0       is encrypted tablespace? WARNING Tablespace SYSAUX is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.                                                                      RESOLVED Encrypt the tablespace.                         
PDB0       is encrypted tablespace? WARNING Tablespace USERS is not encrypted. Oracle Cloud mandates all tablespaces should be encrypted.                                                                       RESOLVED Encrypt the tablespace.                         


16行が選択されました。

SQL> alter session set conatiner=clone_pdb1;

SQL> select PATCH_TYPE,ACTION, STATUS,DESCRIPTION, TARGET_VERSION, TARGET_BUILD_DESCRIPTION  from DBA_REGISTRY_SQLPATCH;

PATCH_TYPE ACTION   STATUS  DESCRIPTION                                           TARGET_VERSION TARGET_BUILD_DESCRIPTION 
---------- -------- ------- ----------------------------------------------------- -------------- ------------------------ 
INTERIM    APPLY    SUCCESS OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915)      19.24.0.0.0    Release_Update           
RU         APPLY    SUCCESS Database Release Update : 19.24.0.0.240716 (36582781) 19.24.0.0.0    Release_Update           
INTERIM    ROLLBACK SUCCESS OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915)      19.26.0.0.0    Release_Update           
INTERIM    APPLY    SUCCESS OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)      19.26.0.0.0    Release_Update           
RU         APPLY    SUCCESS Database Release Update : 19.26.0.0.250121 (37260974) 19.26.0.0.0    Release_Update           


Elapsed: 00:00:00.006
5行が選択されました。

```

どれもRESOLVEDになっています。DBA_REGISTRY_SQLPATCHの情報も19.26になっていました。後はINVALIDのオブジェクトを再コンパイルするutlrp.sqlを実行して完了しました。

```
[oracle@syd19c OPatch]$ sqlplus / as sysdba
SQL> alter session set container=clone_pdb1;
-- INVALIDのオブジェクトを確認
SQL> select count(*) from dba_objects where status='INVALID';
COUNT(*) 
-------- 
     652 

1行が選択されました。

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

Session altered.


TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN              2025-04-17 15:23:22

DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid
:
:

PL/SQL procedure successfully completed.
--実行後再確認
SQL> select count(*) from dba_objects where status='INVALID';
COUNT(*) 
-------- 
       0
```


## Autonomous Databaseをクローンしたときにパブリック・アクセスをOnにしたのにクローン後ツール・アクセスのURLが表示されない

Autonomous Databaseのクローンは成功したのですが、パブリック・アクセスは有効にもかかわらず、ツールのパブリック・アクセスURLが表示されませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/477444c2-2957-487b-979f-5a5cf8f20b7f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/a6c69228-e83d-498d-941e-887e9a0c7012.png)

いったん、その他のアクションから、ネットワークの変更を選択し、パブリック・アクセスをOffに変更、その後改めてOnにしたところ、出力がされました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/72cd5a48-e1cb-425d-a1a9-6e3b6d73c356.png)

## クローン後のData Transformsの接続定義を変更したがエラーになる
クローンしてすぐのAutnomous Databaseでは、Data TransformsのConnectionsのJDBC_URLを正しい宛先に変更しても接続のテスト(Test Connection)で以下のエラーになりました。
 
> Failed to connect to "atp1" : IO Error: The Network Adapter could not establish the connection.
> Check whether your Autonomous Database is configured to use a Private Endpoint.


2時間くらい経った後接続できるようになりました。プライベート・ネットワークでの有効化がされるのに時間がかかるのかもしれません。