Oracle 12c RMAN Cross-Platform Transport of a Closed PDB
PDB可以被傳輸並插入到與源平臺不同的目標CDB資料庫中。除了需要對PDB建立備份外還需要將PDB插入到目標CDB中所需要的後設資料。源CDB與目標CDB中的compatible引數必須設定為12.2,並且源平臺與目標平臺有相同的位元組 序。
下面的例子將Linux平臺上的RAC CDB中的PDB資料庫(jypdb與testpdb)傳輸到windows平臺上的單例項CDB資料庫中。 執行跨平臺傳輸的操作如下:
1.檢查源資料庫與目標資料庫的compatible引數是否設定為12.0.0或更高版本
源資料庫
SQL> show parameter compatible NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 12.2.0 noncdb_compatible boolean FALSE
目標資料庫
SQL> show parameter compatible NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 12.2.0 noncdb_compatible boolean FALSE
2.檢查源平臺與目標平臺的位元組序
源平臺
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name; PLATFORM_NAME ENDIAN_FORMAT ----------------------------------------------------------------------------------------------------- -------------- Linux x86 64-bit Little
目標平臺
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name; PLATFORM_NAME ENDIAN_FORMAT -------------------------------------------------------------------------------- -------------- Microsoft Windows x86 64-bit Little
3.將要被傳輸的pdb(jypdb,testpdb)設定為關閉狀態
SQL> alter pluggable database jypdb close immediate; Pluggable database altered. SQL> alter pluggable database testpdb close immediate; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY JYPDB MOUNTED TESTPDB MOUNTED
4.使用backup pluggable database命令來為PDB(jypdb,testpdb)建立跨平臺完全備份
下面的例子是為PDB(jypdb,testpdb)建立跨平臺傳輸備份目標平臺為Microsoft Windows x86 64-bit。使用unplug into子句將生成將PDB插入目標CDB中所需要的後設資料XML檔案。
RMAN> backup to platform='Microsoft Windows x86 64-bit' unplug into '/ora_backup/tpdbs/metadata_jypdb.xml' pluggable database jypdb format '/ora_backup/tpdbs/transport_jypdb.bck'; Starting backup at 11-FEB-18 using channel ORA_DISK_1 running UNPLUG on the specified pluggable database: JYPDB UNPLUG file path : /ora_backup/tpdbs/metadata_jypdb.xml channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00028 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/users.278.962209649 input datafile file number=00025 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/sysaux.316.962209649 input datafile file number=00026 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/undotbs1.264.962209649 input datafile file number=00027 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/undo_2.268.962209649 input datafile file number=00024 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/system.271.962209649 input datafile file number=00029 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/test.275.962210609 input datafile file number=00030 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353 input datafile file number=00031 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783 channel ORA_DISK_1: starting piece 1 at 11-FEB-18 channel ORA_DISK_1: finished piece 1 at 11-FEB-18 piece handle=/ora_backup/tpdbs/transport_jypdb.bck tag=TAG20180211T223539 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55 Finished backup at 11-FEB-18 starting full resync of recovery catalog full resync complete RMAN> backup to platform='Microsoft Windows x86 64-bit' unplug into '/ora_backup/tpdbs/metadata_testpdb.xml' pluggable database testpdb format '/ora_backup/tpdbs/transport_testpdb.bck'; Starting backup at 11-FEB-18 using channel ORA_DISK_1 running UNPLUG on the specified pluggable database: TESTPDB UNPLUG file path : /ora_backup/tpdbs/metadata_testpdb.xml channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00033 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/sysaux.259.962469409 input datafile file number=00034 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/undotbs1.265.962469409 input datafile file number=00032 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/system.260.962469409 input datafile file number=00035 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/undo_2.266.962469409 input datafile file number=00037 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/test.269.962469409 input datafile file number=00036 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/users.267.962469409 channel ORA_DISK_1: starting piece 1 at 11-FEB-18 channel ORA_DISK_1: finished piece 1 at 11-FEB-18 piece handle=/ora_backup/tpdbs/transport_testpdb.bck tag=TAG20180211T223830 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35 Finished backup at 11-FEB-18 starting full resync of recovery catalog full resync complete [oracle@jytest1 tpdbs]$ ls -lrt total 1707044 -rw-r--r-- 1 oracle asmadmin 11417 Feb 11 16:36 metadata_jypdb.xml -rw-r----- 1 oracle asmadmin 1038204928 Feb 11 16:37 transport_jypdb.bck -rw-r--r-- 1 oracle asmadmin 9575 Feb 11 16:38 metadata_testpdb.xml -rw-r----- 1 oracle asmadmin 709779456 Feb 11 16:39 transport_testpdb.bck
5.將步驟4生成的備份檔案與XML檔案傳輸到目標主機上的D:\app\oracle\oradata\pdbs目錄中
6.確保目標CDB資料庫的狀態為讀寫狀態
SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE
7.執行dbms_pdb.check_plug_compatibility過程來判斷被傳輸的PDB與目標CDB是否相容。
SQL> declare 2 c boolean; 3 begin 4 c:=dbms_pdb.check_plug_compatibility('D:\app\oracle\oradata\pdbs\metadata_jypdb.xml','JYPDB'); 5 if (c) then dbms_output.put_line('True'); 6 else dbms_output.put_line('False'); 7 end if; 8 end; 9 / PL/SQL 過程已成功完成。 SQL> declare 2 c boolean; 3 begin 4 c:=dbms_pdb.check_plug_compatibility('D:\app\oracle\oradata\pdbs\metadata_testpdb.xml','TESTPDB'); 5 if (c) then dbms_output.put_line('True'); 6 else dbms_output.put_line('False'); 7 end if; 8 end; 9 / PL/SQL 過程已成功完成。
8.還原PDB備份
使用using子句來儲存將源PDB插入目標CDB所需要的後設資料所在的XML檔名。為了將資料檔案複製到與XML檔案所描述的不同位置使用file_name_convert子句。
RMAN> restore using 'D:\app\oracle\oradata\pdbs\metadata_jypdb.xml' foreign pluggable database JYPDB format 'D:\APP\ORACLE\ORADATA\JY\DATAFILE\%U' from backupset 'D:\app\oracle\oradata \pdbs\transport_jypdb.bck'; 從位於 11-2月 -18 的 restore 開始 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在開始還原資料檔案備份集 通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案 通道 ORA_DISK_1: 正在還原備份片段中的所有外部檔案 通道 ORA_DISK_1: 正在讀取備份片段 D:\app\oracle\oradata\pdbs\transport_jypdb.bck 通道 ORA_DISK_1: 將外部檔案 28 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-USERS_FNO-28_IASR0EH6 通道 ORA_DISK_1: 將外部檔案 25 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-SYSAUX_FNO-25_EGSR0EH6 通道 ORA_DISK_1: 將外部檔案 26 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-UNDOTBS1_FNO-26_TESR0EH6 通道 ORA_DISK_1: 將外部檔案 27 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-UNDO_2_FNO-27_D2SR0EH6 通道 ORA_DISK_1: 將外部檔案 24 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-SYSTEM_FNO-24_FFSR0EH6 通道 ORA_DISK_1: 將外部檔案 29 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-TEST_FNO-29_OMSR0EH6 通道 ORA_DISK_1: 將外部檔案 30 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-TTS_FNO-30_SUSR0EH6 通道 ORA_DISK_1: 將外部檔案 31 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-CS_FNO-31_7LSR0EH6 通道 ORA_DISK_1: 外部片段控制程式碼 = D:\app\oracle\oradata\pdbs\transport_jypdb.bck 通道 ORA_DISK_1: 已還原備份片段 1 通道 ORA_DISK_1: 還原完成, 用時: 00:00:36 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/system.271.962209649 插入檔案 24 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/sysaux.316.962209649 插入檔案 25 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/undotbs1.264.962209649 插入檔案 26 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/TEMPFILE/temp.258.967837571 插入檔案 5 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/undo_2.268.962209649 插入檔案 27 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/users.278.962209649 插入檔案 28 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/test.275.962210609 插入檔案 29 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353 插入檔案 30 通道 ORA_DISK_1: 正在為 +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783 插入檔案 31 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: 位於 02/11/2018 23:22:50 的 restore 命令失敗 RMAN-00600: internal error, arguments [5302] [] [] [] [] RMAN> restore using 'D:\app\oracle\oradata\pdbs\metadata_testpdb.xml' foreign pluggable database testpdb format 'D:\APP\ORACLE\ORADATA\JY\DATAFILE\%U' from backupset 'D:\app\oracle \oradata\pdbs\transport_testpdb.bck'; 從位於 11-2月 -18 的 restore 開始 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在開始還原資料檔案備份集 通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案 通道 ORA_DISK_1: 正在還原備份片段中的所有外部檔案 通道 ORA_DISK_1: 正在讀取備份片段 D:\app\oracle\oradata\pdbs\transport_testpdb.bck 通道 ORA_DISK_1: 將外部檔案 33 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-SYSAUX_FNO-33_N4SR0EOK 通道 ORA_DISK_1: 將外部檔案 34 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-UNDOTBS1_FNO-34_S1SR0EOK 通道 ORA_DISK_1: 將外部檔案 32 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-SYSTEM_FNO-32_KTSR0EOK 通道 ORA_DISK_1: 將外部檔案 35 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-UNDO_2_FNO-35_PGSR0EOK 通道 ORA_DISK_1: 將外部檔案 37 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-TEST_FNO-37_1MSR0EOK 通道 ORA_DISK_1: 將外部檔案 36 還原到 D:\APP\ORACLE\ORADATA\JY\DATAFILE\DATA_D-JY_I-979425723_TS-USERS_FNO-36_9ASR0EOK 通道 ORA_DISK_1: 外部片段控制程式碼 = D:\app\oracle\oradata\pdbs\transport_testpdb.bck 通道 ORA_DISK_1: 已還原備份片段 1 通道 ORA_DISK_1: 還原完成, 用時: 00:00:16 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/system.260.962469409 插入檔案 32 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/sysaux.259.962469409 插入檔案 33 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/undotbs1.265.962469409 插入檔案 34 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/TEMPFILE/temp.276.967837623 插入檔案 6 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/undo_2.266.962469409 插入檔案 35 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/users.267.962469409 插入檔案 36 通道 ORA_DISK_1: 正在為 +DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/test.269.962469409 插入檔案 37 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: 位於 02/11/2018 23:26:28 的 restore 命令失敗 RMAN-00600: internal error, arguments [5302] [] [] [] []
上面的錯誤是因為XMl檔案所描述的資料檔名是源資料庫中的檔名,手功修改XML檔案中的資料檔名為目標資料庫中的資料檔名,並執行下面的命令來建立PDB
SQL> create pluggable database jypdb using 'D:\app\oracle\oradata\pdbs\metadata_jypdb.xml'; 插接式資料庫已建立。 SQL> create pluggable database testpdb using 'D:\app\oracle\oradata\pdbs\metadata_testpdb.xml'; 插接式資料庫已建立。 SQL> alter pluggable database all open; 插接式資料庫已變更。 SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY JYPDB READ WRITE TESTPDB READ WRITE
9.查詢tts.t1與cs.t2表中的資料來驗證跨平臺傳輸PDB是否操作成功
SQL> select count(*) from tts.t1; COUNT(*) ---------- 90 SQL> select count(*) from cs.t2; COUNT(*) ---------- 92
到此,跨平臺傳輸PDB就完成了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2151526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c RMAN Performing Cross-Platform Transport of a PDB Using InconsistentOracleROSPlatform
- Oracle 12C RMAN Cross-Platform Transport of PDBsOracleROSPlatform
- Oracle 12C RMAN transport tablespace from PDB of RAC CDB to remote PDBOracleREM
- oracle 12c rman備份pdbOracle
- Oracle 12C RMAN Duplicating Tablespaces Within a PDBOracle
- Oracle 12C RMAN Duplicating the PDB to remote CDBOracleREM
- Oracle 12c Relocate PDBOracle
- Oracle 12c PDB淺析Oracle
- Oracle 12C -- 使用seed PDB建立新的pdbOracle
- oracle實驗記錄 (transport tablespace(Rman))Oracle
- Oracle 12c PDB遷移(一)Oracle
- Oracle 12c系列(六)|Relocate a PDBOracle
- Oracle 12c系列(五)|PDB RefreshOracle
- Oracle 12c PDB淺析(二)Oracle
- ORACLE 12C pdb受限解決思路Oracle
- Oracle 12c系列(二)|PDB的建立Oracle
- ORACLE 12C新特性——CDB與PDBOracle
- oracle 12c使用dblink克隆pdbOracle
- oracle實驗記錄 (oracle 10G rman transport database)OracleDatabase
- oracle 12c PDB隨CDB啟動和連結PDB的方式Oracle
- Oracle 12c 多租戶 手工建立 pdb 與 手工刪除 pdbOracle
- 12C PDB使用RMAN的4種完全恢復場景
- Oracle 12C Transport a Database to a Different Platform Using Backup SetsOracleDatabasePlatform
- Oracle 12c CDB&PDB 基本維護Oracle
- Oracle 12c 多租戶在 CDB 中 Plug A PDB,Unplugging A PDBOracle
- ORACLE 12C PDB 維護基礎介紹Oracle
- Oracle 12c 使用Non-CDB來建立PDBOracle
- Oracle 12C 建立使用者連線pdbOracle
- Oracle 12c PDB中碰到的DG問題Oracle
- Oracle 12c 手工建立 和 刪除 PDB 示例Oracle
- 建立、克隆pdb---oracle 12c 學習(1)Oracle
- oracle 12c 使用RMAN的傳輸表空間功能在PDB之間遷移資料Oracle
- 12c pdb基本操作
- Oracle 12c RMAN全攻略Oracle
- ORACLE 12C RMAN 功能增強Oracle
- Oracle 12c 多租戶 CDB 與 PDB 備份Oracle
- Oracle 12c PDB的資料備份恢復Oracle
- oracle 12c pdb測試:建立、開關、刪除Oracle