[OCI]東京リージョンにあるPDBのリフレッシュ可能クローンを大阪リージョンにあるCDB内に作成してみた


# はじめに

東京リージョンにあるDBCS上のPDBのリフレッシュ可能クローンを大阪リージョンにあるDBCSインスタンス上のCDB内に作成する手順を検証してみました。

![スライド2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/7046f26d-dba6-aed7-b6aa-cd59ece5a9d8.jpeg)

おおまかな手順として、以下のような流れになります。

1. 東京リージョン、大阪リージョンに仮想クラウドネットワーク（VCN）を構成する
2. VCN間をリモート・ピアリングで接続する
3. VCN間でプライベートDNSによる名前解決を可能にする
4. 東京リージョン、大阪リージョンのVCN内にDBCSインスタンスを作成する
5. 大阪リージョンのCDBから東京リージョンのCDBにデータベース・リンクを作成する
6. 東京リージョンにあるPDBのリフレッシュ可能クローンを大阪リージョンのCDB内に作成する
7. リフレッシュ操作によって東京リージョンのPDBの変更が大阪リージョンのクローンに反映されるか確認する

# 1. 東京リージョン、大阪リージョンにネットワークを構成する
まずは東京、大阪の各リージョンにVCNを作成し、ネットワークを構成します。
![スライド3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/36f36fbe-fe09-4e0f-7cb8-b7aa3f5abc98.jpeg)

1.VCNの作成
**＜東京リージョン＞**
VCN「VCN_Tokyo」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | VCN_Tokyo |
| IPv4 CIDRブロック  | 10.0.0.0/16 |

**＜大阪リージョン＞**
VCN「VCN_Osaka」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | VCN_Osaka |
| IPv4 CIDRブロック  | 10.1.0.0/16 |

2.インターネット・ゲートウェイの作成
**＜東京リージョン＞**
インターネット・ゲートウェイ「IG_Tokyo」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | IG_Tokyo |

**＜大阪リージョン＞**
インターネット・ゲートウェイ「IG_Osaka」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | IG_Osaka |

3.動的ルーティング・ゲートウェイの作成
**＜東京リージョン＞**
動的ルーティング・ゲートウェイ「DRG_Tokyo」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | DRG_Tokyo |

**＜大阪リージョン＞**
動的ルーティング・ゲートウェイ「DRG_Tokyo」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | DRG_OSaka |

4.DRGアタッチメントの作成
**＜東京リージョン＞**
DRGアタッチメント「VCN_Tokyo_DRG」を作成し、DRG「DRG_Tokyo」を「VCN_Tokyo」にアタッチします。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | VCN_Tokyo_DRG |
| DRGの選択  | DRG_Tokyo |

**＜大阪リージョン＞**
DRGアタッチメント「VCN_Osaka_DRG」を作成し、DRG「DRG_Osaka」を「VCN_Osaka」にアタッチします。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前              | VCN_Osaka_DRG |
| DRGの選択  | DRG_Osaka |

5.ルート表へのルート・ルールの追加
**＜東京リージョン＞**
VCN作成時に作成されたデフォルトのルート表「Default Route Table for VCN_Tokyo」にルート・ルールを追加します。

・インターネット宛のトラフィックをIG_Tokyoにルーティングするルート・ルール

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ターゲット・タイプ              | インターネット・ゲートウェイ |
| 宛先CIDRブロック  | 0.0.0.0/0 |
| ターゲット・インターネット・ゲートウェイ  | IG_Tokyo |

・VCN_Osaka（10.1.0.0/16）宛のトラフィックをDRG_Tokyoにルーティングするルート・ルール

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ターゲット・タイプ              | 動的・ルーティング・ゲートウェイ |
| 宛先CIDRブロック  | 10.1.0.0/16 |
| ターゲット・動的ルーティング・ゲートウェイ  | DRG_Tokyo（変更不可） |

**＜大阪リージョン＞**
VCN作成時に作成されたデフォルトのルート表「Default Route Table for VCN_Osaka」にルート・ルールを追加します。

・インターネット宛のトラフィックをIG_Osakaにルーティングするルート・ルール

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ターゲット・タイプ              | インターネット・ゲートウェイ |
| 宛先CIDRブロック  | 0.0.0.0/0 |
| ターゲット・インターネット・ゲートウェイ  | IG_Osaka |

・VCN_Tokyo（10.0.0.0/16）宛のトラフィックをDRG_Osakaにルーティングするルート・ルール

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ターゲット・タイプ              | 動的・ルーティング・ゲートウェイ |
| 宛先CIDRブロック  | 10.1.0.0/16 |
| ターゲット・動的ルーティング・ゲートウェイ  | DRG_Osaka（変更不可） |

6.セキュリティ・リストへのイングレス・ルールの追加
**＜東京リージョン＞**
VCN作成時に作成されたデフォルトのセキュリティ・リスト「Default Security List for VCN_Tokyo」にイングレス・ルールを追加します。

・VCN_Osaka（10.1.0.0/16）からのトラフィックを許可するためのイングレス・ルール

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ステートレス              | チェックをオフ |
| ソースタイプ  | CIDR |
| ソースCIDR  | 10.1.0.0/16 |
| IPプロトコル  | 全てのプロトコル |

**＜大阪リージョン＞**
VCN作成時に作成されたデフォルトのセキュリティ・リスト「Default Security List for VCN_Osaka」にイングレス・ルールを追加します。

・VCN_Tokyo（10.0.0.0/16）からのトラフィックを許可するためのイングレス・ルール

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ステートレス              | チェックをオフ |
| ソースタイプ  | CIDR |
| ソースCIDR  | 10.0.0.0/16 |
| IPプロトコル  | 全てのプロトコル |

7.サブネットの作成
**＜東京リージョン＞**
VCN_Tokyo内にサブネット「Subnet_Tokyo」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | Subnet_Tokyo |
| サブネット・タイプ  | リージョナル（推奨） |
| CIDRブロック  | 10.0.1.0/24 |
| ルート表  | Default Route Table for VCN_Tokyo |
| サブネット・アクセス  | パブリック・サブネット |
| DNS解決  | チェックをオン |
| DNSラベル | 空欄のまま |
| DHCPオプション | Default DHCP Options for VCN_Tokyo |
| セキュリティ・リスト | Default Security List for VCN_Tokyo |

**＜大阪リージョン＞**
VCN_Osaka内にサブネット「Subnet_Osaka」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | Subnet_Osaka |
| サブネット・タイプ  | リージョナル（推奨） |
| CIDRブロック  | 10.1.1.0/24 |
| ルート表  | Default Route Table for VCN_Osaka |
| サブネット・アクセス  | パブリック・サブネット |
| DNS解決  | チェックをオン |
| DNSラベル | 空欄のまま |
| DHCPオプション | Default DHCP Options for VCN_Osaka |
| セキュリティ・リスト | Default Security List for VCN_Osaka |

これまでの作業で、下の図の状態になりました。
![スライド3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/36f36fbe-fe09-4e0f-7cb8-b7aa3f5abc98.jpeg)

# 2. VCN間をリモート・ピアリングで接続する
次に、VCN_TokyoとVCN_Osakaの間で通信を行うためにVCN間をリモート・ピアリングで接続します。
![スライド4.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/17d1eed6-0960-fc9e-9c41-e0848b981ee5.jpeg)

1.リモート・ピアリング接続の作成
**＜東京リージョン＞**
DRG「DRG_Tokyo」にリモート・ピアリング接続「VCN_Tokyo to VCN_Osaka」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | VCN_Tokyo to VCN_Osaka |

**＜大阪リージョン＞**
DRG「DRG_Osaka」にリモート・ピアリング接続「VCN_Osaka to VCN_Tokyo」を作成します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | VCN_Osaka to VCN_Tokyo |

2.リモート・ピアリング接続を確立します。
**＜東京リージョン＞**
リモート・ピアリング接続「VCN_Tokyo to VCN_Osaka」から「VCN_Osaka to VCN_Tokyo」への接続を確立します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| リージョン             | ap-osaka-1 |
| リモート・ピアリング接続OCID             | 「VCN_Osaka to VCN_Tokyo」のOCID |

**＜大阪リージョン＞**
リモート・ピアリング接続「VCN_Osaka to VCN_Tokyo」から「VCN_Tokyo to VCN_Osaka」への接続を確立します。

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| リージョン             | ap-tokyo-1 |
| リモート・ピアリング接続OCID             | 「VCN_Tokyo to VCN_Osaka」のOCID |

![スライド4.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/17d1eed6-0960-fc9e-9c41-e0848b981ee5.jpeg)

# 3. VCN間でプライベートDNSによる名前解決を可能にする
VCNのプライベートDNSリゾルバのエンドポイントを作成し、VCNをまたいだ通信でも名前解決ができるようにします。
![スライド5.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/422ab424-85b2-ac52-5fda-203f2b206de5.jpeg)

1.リスニング用エンドポイントの作成
**＜東京リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | DNS_EP_VCN_Tokyo_Listen |
| サブネットの選択   | Subnet_Tokyo |
| エンドポイント・タイプ   | リスニング |
| リスニングIPアドレス   |  10.0.1.254|
| ネットワーク・セキュリティ・グループを使用してトラフィックを制御   |  チェックをオフ|

**＜大阪リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | DNS_EP_VCN_Osaka_Listen |
| サブネットの選択   | Subnet_Osaka |
| エンドポイント・タイプ   | リスニング |
| リスニングIPアドレス   |  10.1.1.254|
| ネットワーク・セキュリティ・グループを使用してトラフィックを制御   |  チェックをオフ|

2.転送用エンドポイントの作成
**＜東京リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | DNS_EP_VCN_Tokyo_Trans |
| サブネットの選択   | Subnet_Tokyo |
| エンドポイント・タイプ   | 転送 |
| 転送IPアドレス   |  10.0.1.253|
| ネットワーク・セキュリティ・グループを使用してトラフィックを制御   |  チェックをオフ|

**＜大阪リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| 名前             | DNS_EP_VCN_Osaka_Trans |
| サブネットの選択   | Subnet_Osaka |
| エンドポイント・タイプ   | 転送 |
| 転送IPアドレス   |  10.1.1.253|
| ネットワーク・セキュリティ・グループを使用してトラフィックを制御   |  チェックをオフ|

3.問合せルールの作成（追加）
**＜東京リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ルール条件             | ドメイン |
| ドメイン   | vcnosaka.oraclevcn.com |
| ルール・アクション   | 転送（変更不可） |
| ソース・エンドポイント   | DNS_EP_VCN_Tokyo_Trans |
| 宛先IPアドレス   |  10.1.1.254|

**＜大阪リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| ルール条件             | ドメイン |
| ドメイン   | vcntokyo.oraclevcn.com |
| ルール・アクション   | 転送（変更不可） |
| ソース・エンドポイント   | DNS_EP_VCN_Osaka_Trans |
| 宛先IPアドレス   |  10.0.1.254|

ここまでの作業で、下の図の状態になりました。

![スライド5.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/422ab424-85b2-ac52-5fda-203f2b206de5.jpeg)

# 4. 東京リージョン、大阪リージョンのVCN内にDBCSインスタンスを作成する
各リージョンにDBCSインスタンスを作成します。
![スライド6.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/91fa6ace-d5cf-6591-657e-a076a38d5e3d.jpeg)

**＜東京リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| DBシステムの名前            | DBSystem_Tokyo |
| 可用性ドメインの選択   | AD-1 |
| シェイプ・タイプの選択   | 仮想マシン |
| シェイプの選択   | 任意のシェイプ |
| 合計ノード数   |  1|
| Oracle Database エディション   |任意のエディション|
| 使用可能なストレージ(GB)   |任意の容量|
| SSHキーの追加|「SSHキー・ペアの生成」を選択し、秘密キーを保存|
| ライセンス・タイプの選択   |含まれるライセンス|
| 仮想クラウド・ネットワーク   |VCN_Tokyo|
| クライアントのサブネット   |Subnet_Tokyo|
| ホスト名接頭辞   |tokyodb|
| プライベートIPアドレス   |10.0.1.200|
| タイム・ゾーン   |Asia/Tokyo|
| データベース名   |TOKYOCDB|
| 一意のデータベース名の接尾辞   |空欄のまま|
| データベース・イメージ   |Oracle Database 19c|
| PDB名   |TOKYO_PDB|
| 管理者資格証明：パスワード   |任意のパスワード（今回はDemo#1Demo#1）|
| 管理者パスワードをTDEウォレットに使用|チェックをオン|
| ワークロード・タイプ   |任意|
| 自動バックアップ構成の有効化   |任意|

**＜大阪リージョン＞**

| 入力項目               |       入力値      |
|:-----------------:|:------------------:|
| DBシステムの名前            | DBSystem_Osaka |
| 可用性ドメインの選択   | AD-1 |
| シェイプ・タイプの選択   | 仮想マシン |
| シェイプの選択   | 任意のシェイプ |
| 合計ノード数   |  1|
| Oracle Database エディション   |任意のエディション|
| 使用可能なストレージ(GB)   |任意の容量|
| SSHキーの追加|「SSHキー・ペアの生成」を選択し、秘密キーを保存|
| ライセンス・タイプの選択   |含まれるライセンス|
| 仮想クラウド・ネットワーク   |VCN_Osaka|
| クライアントのサブネット   |Subnet_Osaka|
| ホスト名接頭辞   |osakadb|
| プライベートIPアドレス   |10.1.1.200|
| タイム・ゾーン   |Asia/Tokyo|
| データベース名   |OSAKACDB|
| 一意のデータベース名の接尾辞   |空欄のまま|
| データベース・イメージ   |Oracle Database 19c|
| PDB名   |OSAKA_PDB|
| 管理者資格証明：パスワード   |任意のパスワード（今回はDemo#1Demo#1）|
| 管理者パスワードをTDEウォレットに使用|チェックをオン|
| ワークロード・タイプ   |任意|
| 自動バックアップ構成の有効化   |任意|

ここまでの作業で、下の図のような構成になりました。
![スライド6.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/91fa6ace-d5cf-6591-657e-a076a38d5e3d.jpeg)


# 5. 大阪リージョンのCDBから東京リージョンのCDBにデータベース・リンクを作成する
大阪リージョンにあるCDB「OSAKACDB」から、東京リージョンにあるCDB「TOKYOCDB」へのデータベース・リンクを作成します。
![スライド7.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/4d4b84ba-2c26-0fba-eb3f-255957dfa47e.jpeg)

**＜東京リージョン＞**
1.データベース・リンクで使用する共通ユーザの作成
DBSystem_TokyoにopcユーザでSSH接続します。
sudoコマンドでoracleユーザにスイッチします。

```
sudo su - oracle
```
SQL*PlusでTOKYOCDBに管理者ユーザとして接続します。

```
sqlplus / as sysdba
```
データベース・リンクで使用する共通ユーザ「c##remote_clone_user」を作成し、必要な権限を付与します。

```
CREATE USER c##remote_clone_user IDENTIFIED BY Demo#1Demo#1;
GRANT CREATE SESSION, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO c##remote_clone_user CONTAINER=ALL;
GRANT CREATE PLUGGABLE DATABASE TO c##remote_clone_user CONTAINER=ALL;
GRANT SYSOPER TO c##remote_clone_user CONTAINER=ALL;
```

SQL*Plusを終了します。

```
exit
```

**＜大阪リージョン＞**
1.tnsnames.oraの編集
DBSystem_OsakaにopcユーザでSSH接続します。
sudoコマンドでoracleユーザにスイッチします。

```
sudo su - oracle
```

TOKYOCDBに接続するためのエイリアスをtnsnames.oraに追加します。

```
vi $ORACLE_HOME/network/admin/tnsnames.ora
```
DBSystem_Tokyoのtnsnames.oraを参考にしてTOKYOCDBに接続するためのエイリアスを追加します。
※SERVICE_NAMEのtokyocdb_xxxxのxxxxの部分は環境によって異なります。

```
TOKYOCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = tokyodb.subnettokyo.vcntokyo.oraclevcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tokyocdb_xxxx.subnettokyo.vcntokyo.oraclevcn.com)
    )
  )
```

SQL*PlusでOSAKACDBに管理者ユーザとして接続します。

```
sqlplus / as sysdba
```

データベース・リンク「tokyocdb_link」を作成します。

```
CREATE PUBLIC DATABASE LINK tokyocdb_link CONNECT TO c##remote_clone_user IDENTIFIED BY Demo#1Demo#1 USING 'TOKYOCDB'; 
```

これまでの作業で、下の図のような構成になりました。
![スライド7.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/4d4b84ba-2c26-0fba-eb3f-255957dfa47e.jpeg)

# 6. 東京リージョンにあるPDBのリフレッシュ可能クローンを大阪リージョンのCDB内に作成する
東京リージョンのCDB「TOKYOCDB」内にあるPDB「TOKYO_PDB」のリフレッシュ可能クローン「TOKYO_PDB_CLONE」を大阪リージョンのCDB「OSAKACDB」内に作成します。
![スライド8.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/a1eee76d-b0f3-d56a-c886-bd9656aad3c7.jpeg)

**＜東京リージョン＞**
1.tnsnames.oraの編集
この後の作業のためにtnsnames.oraにTOKYO_PDBに直接アクセスするためのエイリアスを追加しておきます。

```
TOKYO_PDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = tokyodb.subnettokyo.vcntokyo.oraclevcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tokyo_pdb.subnettokyo.vcntokyo.oraclevcn.com)
    )
  )
```
SQL*PlusでTOKYO_PDBに管理者として接続します。

```
sqlplus sys/Demo#1Demo#1@tokyo_pdb as sysdba
```
テスト用ユーザ「testuser」を作成し、必要な権限を付与します。

```
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO testuser IDENTIFIED BY Demo#1Demo#1;
```
SQL*Plusを終了します。

```
exit
```
SQL*PlusでTOKYO_PDBにtestuserとして接続します。

```
sqlplus testuser/Demo#1Demo#1@tokyo_pdb
```

テスト用テーブル「testtable」を作成します。

```
SQL> CREATE TABLE testtable AS SELECT * FROM user_role_privs;  

Table created.
```
testtableの行数を確認します。

```
SQL> SELECT count(*) FROM testtable;

  COUNT(*)
----------
	     2
```
SQL*Plusを終了します。

```
exit
```
**＜大阪リージョン＞**
SQL*PlusでOSAKACDBに管理者として接続します。

```
sqlplus / as sysdba
```
TOKYO_PDBのリフレッシュ可能クローンPDB「TOKYO_PDB_CLONE」を作成します。

```
SQL> CREATE PLUGGABLE DATABASE tokyo_pdb_clone FROM tokyo_pdb@tokyocdb_link KEYSTORE IDENTIFIED BY Demo#1Demo#1 REFRESH MODE MANUAL;

Pluggable database created.
```

PDBの状態を確認します。

```
SQL> col name for a20
SQL> SELECT name, open_mode FROM v$pdbs;

NAME                 OPEN_MODE
-------------------- ----------
PDB$SEED             READ ONLY
OSAKA_PDB            READ WRITE
TOKYO_PDB_CLONE	     MOUNTED
```
リフレッシュ可能クローンで作成されたPDB「TOKYO_PDB_CLONE」はマウント状態になります。
TOKYO_PDB_CLONEを読み取り専用でオープンします。

```
SQL> ALTER PLUGGABLE DATABASE tokyo_pdb_clone OPEN READ ONLY;

Pluggable database altered.
```
再度、PDBの状態を確認してみます。

```
SQL> col name for a20
SQL> SELECT name, open_mode FROM v$pdbs;

NAME                 OPEN_MODE
-------------------- ----------
PDB$SEED             READ ONLY
OSAKA_PDB            READ WRITE
TOKYO_PDB_CLONE	     READ ONLY
```
TOKYO_PDB_CLONEが読み取り専用でオープンされていることが確認できました。

TOKYO_PDB_CLONEに接続してみます。

```
SQL> ALTER SESSION SET CONTAINER = tokyo_pdb_clone;

Session altered.
```

testuserスキーマのtesttableのレコード数を確認してみます。

```
SQL> SELECT count(*) FROM testuser.testtable;

  COUNT(*)
----------
         2
```
TOKYO_PDBの内容がクローンされていることが確認できました。

SQL*Plusを終了します。

```
exit
```
ここまでの作業で、下の図のような構成が完成しました。
![スライド8.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/a1eee76d-b0f3-d56a-c886-bd9656aad3c7.jpeg)

# 7. リフレッシュ操作によって東京リージョンのPDBの変更が大阪リージョンのクローンに反映されるか確認する


**＜東京リージョン＞**
TOKYO_PDBにtestuserとして接続します。

```
sqlplus testuser/Demo#1Demo#1@tokyo_pdb
```
testtableにレコードを追加します。

```
SQL> INSERT INTO testtable SELECT * FROM user_role_privs;

2 rows created.

SQL> COMMIT;

Commit complete.
```
testtableのレコード数を確認します。

```
SQL> SELECT COUNT(*) FROM testtable;

  COUNT(*)
----------
         4
```
testtableのレコード数が増えている（2→4）ことが確認できました。

**＜大阪リージョン＞**
管理者ユーザでOSAKACDBに接続します。

```
sqlplus / as sysdba
```

TOKYO_PDB_CLONEに接続します。

```
SQL> ALTER SESSION SET CONTAINER = tokyo_pdb_clone;

Session altered.
```

クローンをリフレッシュする際はPDBがクローズ状態である必要があるため、TOKYO_PDB_CLONEをクローズします。

```
SQL> ALTER PLUGGABLE DATABASE CLOSE;

Pluggable database altered.
```

TOKYO_PDB_CLONEをリフレッシュします。

```
SQL> ALTER PLUGGABLE DATABASE REFRESH;

Pluggable database altered.
```

TOKYO_PDB_CLONEを読み取り専用でオープンします。

```
SQL> ALTER PLUGGABLE DATABASE OPEN READ ONLY;

Pluggable database altered.
```

testuserスキーマのtesttable表のレコード数を確認します。

```
SQL> SELECT count(*) FROM testuser.testtable;

  COUNT(*)
----------
         4
```
東京リージョンのTOKYO_PDBの変更内容が、リフレッシュ操作によって、大阪リージョンのTOKYO_PDB_CLONEに反映されていることが確認できました。