[Oracle Database] RMAN  Network 転送 クロス・プラットフォーム・トランスポータブル表領域  してみてみた

Oracle Database 12.2 以降、FROM SERVICE 句と RESTORE FOREIGN DATAFILE コマンドを使用して、ネットワーク経由でデータファイルのクロス プラットフォーム トランスポートを直接実行できます。
このコマンドは、ソースで要求されたデータファイルのクロス・プラットフォーム・バックアップを内部的に実行し、バックアップ ピース チャンクがネットワーク経由で宛先に転送され、リストアが宛先で実行されます。
ということで、Oracle Database 12cR2 のトランスポータブル表領域 (TTS) を Oracle Database 19c へデータ移行してみてみます。




# ■ テスト用 TTS表領域データ作成
今回は、512MB テストデータ の TTS表領域を [しばちょう先生](https://blogs.oracle.com/otnjp/post/shibacho-021) 手法で作成します。

## ● スキーマ作成
1G の "SAMPLE" 表領域を新規に作成し、その表領域上に 512MB の"SAMPLE" 表を作成

### 1) 移行元PDBへ接続
```
[oracle@db12c1 ~]$ sqlplus system/<Password>@pdb12c
```

### 2) CREATE TABLESPACE
```
SQL> create tablespace SAMPLE datafile size 1G AUTOEXTEND ON NEXT 10M uniform size 10M;

	Tablespace created.
```

### 3) CREATE USER
```
SQL> create user SAMPLE identified by <Password> default tablespace SAMPLE;

	User created.

SQL> grant connect, resource to SAMPLE;

	Grant succeeded.
	
SQL> grant unlimited tablespace to SAMPLE;
```

## ● SAMPLEデータ作成
SAMPLE表の作成とデータ・ローディング

### 1) SAMPLEユーザー接続
```
SQL> connect SAMPLE/<Password>@pdb12c
	Connected.
```

### 2) CREATE TABLE SAMPLE
```
SQL> create table SAMPLE (COL1 number NOT NULL, COL2 char(1000)) pctfree 10 tablespace SAMPLE;

	Table created.
```


### 3) テストデータ作成
```
SQL> insert /*+append */ into SAMPLE
select LEVEL, 'hoge'||to_char(LEVEL)
from DUAL connect by LEVEL <= 7 * 128 * 508 ;

	455168 rows created.

SQL> commit;

	Commit complete.

SQL> create unique index IDX_SAMPLE_COL1 on SAMPLE(COL1) ;

	Index created.

SQL> alter table SAMPLE add primary key (COL1) using index ;

	Table altered.

SQL> select count(*) from SAMPLE;

	COUNT(*)
	----------
		455168
```


### 4) SAMPLEスキーマ の セグメント・サイズ確認
```
SQL> set linesize 150
SQL> col SEGMENT_NAME for a24
SQL> select SEGMENT_TYPE, SEGMENT_NAME, sum(BYTES)/1024/1024 as MB
	from USER_SEGMENTS
	group by rollup(SEGMENT_TYPE, SEGMENT_NAME) ;

	SEGMENT_TYPE	   SEGMENT_NAME 		    MB
	------------------ ------------------------ ----------
	INDEX		   IDX_SAMPLE_COL1		     8
	INDEX						     8
	TABLE		   SAMPLE			   517
	TABLE						   517
							525
```


# ■ 事前準備
## ● SQL*NET設定
移行元(DB12c) と移行先(DB19c) のCDB、PDB どうしが SQL*NET 接続できるように tnsnames.oraを設定
※ RACの場合:全ノードへ設定

```:移行元/移行先
$ cat $ORACLE_HOME/network/admin/tnsnames.ora

	CDB19C =
	  (DESCRIPTION =
	    (ADDRESS = (PROTOCOL = TCP)(HOST = db19c-scan.publicsubnet.vcnexatokyo.oraclevcn.com)(PORT = 1521))
	    (CONNECT_DATA =
	      (SERVER = DEDICATED)
	      (SERVICE_NAME = DB19c_tokyo.publicsubnet.vcnexatokyo.oraclevcn.com)
	    )
	  )
	
	CDB12c =
	  (DESCRIPTION =
	    (ADDRESS = (PROTOCOL = TCP)(HOST = db12c-scan.publicsubnet.vcnexaosaka.oraclevcn.com)(PORT = 1521))
	    (CONNECT_DATA =
	      (SERVER = DEDICATED)
	      (SERVICE_NAME = db12c_osaka.publicsubnet.vcnexaosaka.oraclevcn.com)
	    )
	  )
	
	PDB19C =
	  (DESCRIPTION =
	    (ADDRESS = (PROTOCOL = TCP)(HOST = db19c-scan.publicsubnet.vcnexatokyo.oraclevcn.com)(PORT = 1521))
	    (CONNECT_DATA =
	      (SERVER = DEDICATED)
	      (SERVICE_NAME = pdb19c.publicsubnet.vcnexatokyo.oraclevcn.com)
	    )
	  )
	
	PDB12c =
	  (DESCRIPTION =
	    (ADDRESS = (PROTOCOL = TCP)(HOST = db12c-scan.publicsubnet.vcnexaosaka.oraclevcn.com)(PORT = 1521))
	    (CONNECT_DATA =
	      (SERVER = DEDICATED)
	      (SERVICE_NAME = pdb12c.publicsubnet.vcnexaosaka.oraclevcn.com)
	    )
	  )
```

## ● 移行元 暗号 Wallet を 移行先の Wallet へ統合(オプション)
移行元の表領域が暗号化されている場合、Wallet を移行先へ

### 1) 移行元 Database 停止
```
[grid@db19c1 ~]$ srvctl stop db -d db19c_tokyo
[grid@db19c1 ~]$ srvctl status db -d db19c_tokyo
	Instance DB19c1 is not running on node db19c1
	Instance DB19c2 is not running on node db19c2
```

### 2) 移行先 ewallet.p12 を退避
   ※ RACの場合:全ノードへ設定

```
[oracle@db19c1 ~]$ cd /opt/oracle/dcs/commonstore/wallets/$ORACLE_UNQNAME/tde
[oracle@db19c1 tde]$ ls -l
	total 32
	-rwx------ 1 oracle oinstall 5512 Mar 24 11:31 cwallet.sso
	-rwx------ 1 oracle oinstall    0 Mar 24 11:30 cwallet.sso.lck
	-rwx------ 1 oracle oinstall 5467 Mar 24 11:31 ewallet.p12
	-rwx------ 1 oracle oinstall    0 Mar 24 11:30 ewallet.p12.lck

[oracle@db19c1 tde]$ mv ewallet.p12 ewallet.p12_20230326
[oracle@db19c1 tde]$ ls -l
	total 32
	-rwx------ 1 oracle oinstall 5512 Mar 24 11:31 cwallet.sso
	-rwx------ 1 oracle oinstall    0 Mar 24 11:30 cwallet.sso.lck
	-rwx------ 1 oracle oinstall 5467 Mar 24 11:31 ewallet.p12_20230326
	-rwx------ 1 oracle oinstall    0 Mar 24 11:30 ewallet.p12.lck

[oracle@db19c1 WORK]$ ls -l
	total 16
	-rwx------ 1 oracle oinstall 5512 Mar 25 16:44 cwallet.sso
	-rwx------ 1 oracle oinstall 5467 Mar 25 16:44 ewallet.p12
```

### 3) 移行元 ewallet.p12 ファイル を移行先へコピー
   ※ RACの場合:全ノードへ設定

```:移行元のewallet.p12 ファイルを 移行先へ転送
[oracle@db12c1 ~]$ cd /opt/oracle/dcs/commonstore/wallets/$ORACLE_UNQNAME/tde
[oracle@db12c1 tde]$ scp -i ~/.ssh/id_rsa ./ewallet.p12 ./cwallet.sso opc@10.10.0.22:/TDE_12c/
	ewallet.p12
```
```:移行先で転送確認
[oracle@db19c1 TDE_12c]$ ls -l　/TDE_12c
	total 16
	-rwx------ 1 oracle oinstall 5512 Mar 25 16:44 cwallet.sso
	-rwx------ 1 oracle oinstall 5467 Mar 25 16:44 ewallet.p12
```


### 4) 移行元 Database 起動
```
[grid@db19c1 ~]$ srvctl start db -d db19c_tokyo
[grid@db19c1 ~]$ srvctl status db -d db19c_tokyo
	Instance DB19c1 is running on node db19c1
	Instance DB19c2 is running on node db19c2
```

### 5) Wallet Keystore オープン
自動wallet起動でない場合、次のコマンドで Wallet Open
	※ RACの場合:1ノードのみ実行
```
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <keystore_password>;
```


### 6) 移行元 の Keystore を移行先へ Merge
   ※ RACの場合:全ノードへ設定

```:構文
ADMINISTER KEY MANAGEMENT MERGE KEYSTORE 'Keystore1_Location' IDENTIFIED BY software_keystore1_password
  INTO EXISTING KEYSTORE 'keystore2_Location' IDENTIFIED BY software_keystore2_password WITH BACKUP;

    - Keystore1_Location: 移行元の Keystore (移行先にコピーした Backup Directory)
    - keystore2_Location: 移行先の Keystore (ENCRYPTION_WALLET_LOCATION)
```


```:実行
SQL> ADMINISTER KEY MANAGEMENT MERGE KEYSTORE '/home/oracle/WORK' IDENTIFIED BY <Password>
	INTO EXISTING KEYSTORE '/opt/oracle/dcs/commonstore/wallets/DB19c_tokyo/tde' IDENTIFIED BY <Password> WITH BACKUP;

	keystore altered.
```


### 7) Keystore Status V$ENCRYPTION_WALLET 確認
    ※ RACの場合:全ノードへ設定
    ※ keystore が OPENしていない場合は、再度確認して設定

```
col WRL_PARAMETER format a60
col STATUS format a10
select * from GV$ENCRYPTION_WALLET;

	INST_ID WRL_TYPE		WRL_PARAMETER						     STATUS	WALLET_TYPE	     WALLET_OR KEYSTORE FULLY_BAC     CON_ID
	---------- -------------------- ------------------------------------------------------------ ---------- -------------------- --------- -------- --------- ----------
		1 FILE 		/opt/oracle/dcs/commonstore/wallets/DB19c_tokyo/tde/	     OPEN	AUTOLOGIN	     SINGLE    NONE	NO		   1
		1 FILE 									     OPEN	AUTOLOGIN	     SINGLE    UNITED	NO		   2
		1 FILE 									     OPEN	AUTOLOGIN	     SINGLE    UNITED	NO		   3
		2 FILE 		/opt/oracle/dcs/commonstore/wallets/DB19c_tokyo/tde/	     OPEN	AUTOLOGIN	     SINGLE    NONE	NO		   1
		2 FILE 									     OPEN	AUTOLOGIN	     SINGLE    UNITED	NO		   2
		2 FILE 									     OPEN	AUTOLOGIN	     SINGLE    UNITED	NO		   3

	6 rows selected.
```

## ● TDEウォレット内のTDE暗号化キーを更新(オプション)
Databse Clooud Databasae では、PDBに対してマスター暗号化キーを作成してアクティブ化します。
そうしない場合、PDBに表領域を作成しようとすると、エラーORA-28374: typed master key not found in walletが発生することがあります。


### 1) Database ID を取得
```
[root@db19c1 ~]# dbcli list-databases

	ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID
	---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
	237d9b59-f472-46c0-a0ce-2af85493c8a3     DB19c      Rac      19.18.0.0.0          true       Oltp              ASM        Configured   d539524d-92d0-4b40-a3e0-abc405282335
```

### 2) PDBに対してマスター暗号化キーをアクティブ化
Database ID 引数にPDBに対してマスター暗号化キーをアクティブ化
```
[root@db19c1 ~]# dbcli update-tdekey -i 237d9b59-f472-46c0-a0ce-2af85493c8a3 -p -n PDB19C
	TDE Admin wallet password:
	{
	"jobId" : "181b5d6a-2b60-40ae-b2c0",
	"status" : "Created",
	"message" : null,
	"errorCode" : "",
	"reports" : [ ],
	"createTimestamp" : "March 26, 2023 00:33:15 AM UTC",
	"resourceList" : [ ],
	"description" : "TDE update DB19c - PDBs: [DB19c]",
	"updatedTime" : "March 26, 2023 00:33:16 AM UTC",
	"percentageProgress" : "0%",
	"cause" : null,
	"action" : null
	}
```


## ● 移行元 PDBへ トランスポート表領域に含まれる スキーマ作成
スキーマ情報は、SYSTEM表領域へ格納されているため、トランスポートする表領域には含まれていないため、作成しておきます。


### 1) 移行元PDBへ接続
```
[oracle@db12c1 ~]$ sqlplus system/<Password>@pdb12c
```

### 2) CREATE USER
```
SQL> create user SAMPLE identified by <Password> default tablespace USERS;

	User created.

SQL> grant connect, resource to SAMPLE;

	Grant succeeded.
	
SQL> grant unlimited tablespace to SAMPLE;
```


# ■ 表領域が自己完結しているかを確認

下記のコマンドで表領域が自己完結しているかを確認します。
TRANSPORT_SET_VIOLATIONSで行が出なければ、自己完結しています。

```
SQL> EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('SAMPLE', TRUE);

	PL/SQL procedure successfully completed.
```


# ■ データ移行
## ● 1.ソース PDB で、表領域SAMPLEに属するデータファイルを確認します
```
SQL> select FILE_ID from DBA_DATA_FILES where TABLESPACE_NAME='SAMPLE';

	FILE_ID
	----------
		21
```


## ● 2. データ・ファイルのクロス・プラットフォーム・リストア
移行先 CDB で、FROM SERVICE 句を使用して、ソース テーブルスペースに属するデータ ファイルのクロス プラットフォーム リストアを実行します。
注: RMAN を起動し、(ソース データベースではなく) 宛先データベースに TARGET として接続します。

```:コマンド
$ rman target sys/<password>@<destination_tns>
RMAN> restore foreign datafile <datafile number>
 format '/<destination_path>/SAMPLE.dbf'
 from service <source_service_name>;
```

### 1) RMAN 接続
```
[oracle@db19c1 admin]$ rman target sys/<Password>

	Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 24 22:34:03 2023
	Version 19.18.0.0.0

	Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

	connected to target database: DB19C (DBID=2260344047)
```

### 2) Restore Foreign Datafile
```
RMAN> restore foreign datafile 21
	format '+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf'
	from service pdb12c;

	Starting restore at 26-MAR-23
	using target database control file instead of recovery catalog
	allocated channel: ORA_DISK_1
	channel ORA_DISK_1: SID=781 instance=DB19c1 device type=DISK

	channel ORA_DISK_1: starting datafile backup set restore
	channel ORA_DISK_1: using network backup set from service pdb12c
	channel ORA_DISK_1: specifying datafile(s) to restore from backup set
	channel ORA_DISK_1: restoring foreign file 21 to +DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	channel ORA_DISK_1: restore complete, elapsed time: 00:00:08
	Finished restore at 26-MAR-23
```


## ● 3. リストアした データ・ファイル の リカバリ
上記のリストアが READ ONLY モードのテーブルスペースで行われた場合、リカバリは必要ありません。次のステップ、つまりステップ 4 にスキップできます。
ただし、リストアが READ WRITE モードのテーブルスペースで行われた場合は、リカバリを実行する必要があります。
ソース表領域が READ WRITE モードのときに複数回のリカバリ試行を実行して、ソースで行われている最新の変更と同期できます。

### 1) 移行元 データベースで RMAN接続し、RECOVER コマンドを実行

```:構文
	rman target sys/<password>@<destination_tns>
	RMAN> recover foreign datafilecopy '/<destination_path>/SAMPLE.dbf' from service <source_service_name>;
```

```
[oracle@db19c1 admin]$ rman target sys/<Password>

RMAN> recover foreign datafilecopy '+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf' from service DB12C_OSAKA;

	Starting recover at 26-MAR-23
	using channel ORA_DISK_1
	channel ORA_DISK_1: starting incremental datafile backup set restore
	channel ORA_DISK_1: using network backup set from service DB12C_OSAKA
	channel ORA_DISK_1: restoring foreign file 00021 to +DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
	Finished recover at 26-MAR-23
```


### 2) 最終リカバリを実行する前に、ソースPDB テーブルスペースを READ ONLY モードにします。
```
[oracle@db12c1 ~]$ sqlplus system/<Password>@pdb12c@pdb12c

SQL> alter tablespace SAMPLE read only;

	Tablespace altered.

alter tablespace SAMPLE READ WRITE;
SQL> select TABLESPACE_NAME, STATUS from DBA_TABLESPACES where TABLESPACE_NAME='SAMPLE';

	TABLESPACE_NAME 	       STATUS
	------------------------------ ---------
	SAMPLE			       READ ONLY
```


### 3) 移行先 CDB で最終リカバリを実行します

```:コマンド
	rman target sys/<password>@<destination_tns>
	RMAN> recover foreign datafilecopy '/<destination_path>/example01.dbf' from service <source_service_name>;
```

```
[oracle@db19c1 admin]$ rman target sys/<Password>

	Recovery Manager: Release 19.0.0.0.0 - Production on Sat Mar 25 05:52:57 2023
	Version 19.18.0.0.0

	Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

	connected to target database: DB19C (DBID=2260344047)

RMAN> recover foreign datafilecopy '+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf' from service 'CDB12C';

	Starting recover at 26-MAR-23
	using target database control file instead of recovery catalog
	allocated channel: ORA_DISK_1
	channel ORA_DISK_1: SID=782 instance=DB19c1 device type=DISK
	channel ORA_DISK_1: starting incremental datafile backup set restore
	channel ORA_DISK_1: using network backup set from service CDB12C
	channel ORA_DISK_1: restoring foreign file 00021 to +DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
	Finished recover at 26-MAR-23
```

### 4) 必要に応じて、ソースPDB テーブルスペースを READ WRITE モードにします。
```
SQL> alter tablespace SAMPLE READ WRITE;

	Tablespace altered.

```


## ● 4. ソース データベース接続 データベース リンク作成
これで宛先に一貫性のあるデータファイルができましたが、宛先データベースにはまだプラグインされていません。
このためには、ソースでメタデータのエクスポートを実行し、宛先でメタデータのインポートを実行する必要があります。
impdp の network_link オプションを使用して、これらの 2 つの手順を組み合わせることもできます。
このために、ソース データベースを指す宛先データベースにデータベース リンクを作成します。

### 1) global_names = false 設定
一時的に global_names = falseを設定
```
SQL> alter system set global_names = false scope=both;
SQL> show parameter global_names

	NAME				     TYPE	 VALUE
	------------------------------------ ----------- ------------------------------
	global_names			     boolean	 FALSE
```

### 2) CREATE PUBLIC DATABASE LINK

```:構文
SQL> create public database link <dblink> connect to system identified by oracle using '<source_service_name>';
```

```
SQL> create public database link DB_LINK_PDB12C connect to system identified by <Password> using 'PDB12C';

	Database link created.


SQL> create public database link DB_LINK_CDB12C connect to system identified by <Password> using 'CDB12C';

	Database link created.
```


### 3) CREATE PUBLIC DATABASE LINK 作成確認
```
set lin 1000
col OWNER format a10
col DB_LINK format a60
col USERNAME format a10
col HOST format a20
SQL> select OWNER, DB_LINK, USERNAME, HOST from ALL_DB_LINKS;

	OWNER	   DB_LINK							USERNAME   HOST
	---------- ------------------------------------------------------------ ---------- --------------------
	PUBLIC	   DB_LINK_CDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM	SYSTEM	   CDB12C
	PUBLIC	   DB_LINK_PDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM	SYSTEM	   PDB12C
```


### 4) PUBLIC DATABASE LINK 接続確認

```
SQL> SELECT * FROM DUAL@DB_LINK_CDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM;

	D
	-
	X

SQL> SELECT * FROM DUAL@DB_LINK_PDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM;

	D
	-
	X
```










# ■ TTSメタデータのインポート実行
## ● メタデータのインポート
```：構文
impdp system/<password> network_link=<dblink> transport_tablespaces=SAMPLE transport_datafiles='/<destination_path>/SAMPLE.dbf'
```

```
[oracle@db19c1 ~]$ impdp system/<Password>@pdb19c network_link=DB_LINK_PDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM transport_tablespaces=SAMPLE transport_datafiles='+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf'

	Import: Release 19.0.0.0.0 - Production on Sun Mar 26 16:10:23 2023
	Version 19.18.0.0.0

	Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

	Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/********@pdb19c network_link=DB_LINK_PDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM transport_tablespaces=SAMPLE transport_datafiles=+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
	Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER
	Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
	Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Sun Mar 26 16:10:37 2023 elapsed 0 00:00:14
```


### ※ 次のようなエラーが出る場合、手順を見直して再実行

#### 1) USERない場合
```
	Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production

	Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database.

	Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** network_link=DB_LINK_PDB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM transport_tablespaces=SAMPLE transport_datafiles=+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
	ORA-39123: Data Pump transportable tablespace job aborted
	ORA-29342: user SAMPLE does not exist in the database

	Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at Sat Mar 25 06:39:41 2023 elapsed 0 00:00:13
```

#### 2) RACの全ノードに tnsnames.ora 設定してない場合
```
	Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production

	Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database.

	Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** network_link=DB_LINK_DB12C.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM transport_tablespaces=SAMPLE transport_datafiles=+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	ORA-39123: Data Pump transportable tablespace job aborted
	ORA-39186: No tablespaces in the specified list exist.

	Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at Sat Mar 25 13:24:39 2023 elapsed 0 00:00:07
```

#### 3) Wallet 設定してない場合
```
	Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/********@PDB19C network_link=DB_LINK_PDB12C1.PUBLICSUBNET.VCNEXATOKYO.ORACLEVCN.COM transport_tablespaces=SAMPLE transport_datafiles=+DATA/DB19C_TOKYO/pdb19c/DATAFILE/sample.dbf
	Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
	ORA-39123: Data Pump transportable tablespace job aborted
	ORA-28374: typed master key not found in wallet

	Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at Sat Mar 25 15:25:18 2023 elapsed 0 00:00:14
```


## ● メタデータのインポート確認
移行元 PDBへ接続し、SELECT文でデータがあることを確認
```
[oracle@db19c1 ~]$ sqlplus sample/<Password>@pdb19c

	SQL*Plus: Release 19.0.0.0.0 - Production on Sun Mar 26 16:44:09 2023
	Version 19.18.0.0.0

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

	Last Successful login time: Sun Mar 26 2023 16:42:42 +00:00

	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.18.0.0.0


SQL> select count(*) from sample;

	COUNT(*)
	----------
		455168
```


# ■ 参考

## ● Oracle ドキュメント
　・ [Oracle Databaseのアップグレードと移行](https://www.oracle.com/jp/a/tech/docs/upgrade-migrate-oracle-database-2021-ja.pdf)
　・ [フル・トランスポータブル・エクスポート/インポート](https://www.oracle.com/technetwork/jp/database/enterprise-edition/full-transportable-wp-12c-1973971-ja.pdf)
　・ [Oracle Databaseユーティリティ：完全トランスポータブル・エクスポート/インポート](https://www.oracle.com/technetwork/jp/database/enterprise-edition/full-transportable-wp-18c-4394831-ja.pdf)
　・ [RMANクロス・プラットフォーム・トランスポータブル表領域バックアップ・セット](https://docs.oracle.com/ja-jp/iaas/Content/Database/Tasks/mig-rman-cross-plat-transp-tablespace.htm)


## ● My Oracle Supoort
　・ [RMAN Cross Platform Tablespace Transport Over Network (Doc ID 2307383.1)](https://support.oracle.com/portal/)
　・ [ORA-28374 After Importing Encrypted Data (And Copying Wallet From Exporting Database) (Doc ID 2593834.1)](https://support.oracle.com/portal/)