博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 12c RMAN Cross-Platform Transport of a Closed PDB
阅读量:2437 次
发布时间:2019-05-10

本文共 13278 字,大约阅读时间需要 44 分钟。

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 compatibleNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------compatible                           string      12.2.0noncdb_compatible                    boolean     FALSE

目标数据库

SQL> show parameter compatibleNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------compatible                           string      12.2.0noncdb_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 ONLYJYPDB                                                                                                                            MOUNTEDTESTPDB                                                                                                                          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-18using channel ORA_DISK_1running UNPLUG on the specified pluggable database: JYPDBUNPLUG file path : /ora_backup/tpdbs/metadata_jypdb.xmlchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00028 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/users.278.962209649input datafile file number=00025 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/sysaux.316.962209649input datafile file number=00026 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/undotbs1.264.962209649input datafile file number=00027 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/undo_2.268.962209649input datafile file number=00024 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/system.271.962209649input datafile file number=00029 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/test.275.962210609input datafile file number=00030 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353input datafile file number=00031 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783channel ORA_DISK_1: starting piece 1 at 11-FEB-18channel ORA_DISK_1: finished piece 1 at 11-FEB-18piece handle=/ora_backup/tpdbs/transport_jypdb.bck tag=TAG20180211T223539 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:55Finished backup at 11-FEB-18starting full resync of recovery catalogfull resync completeRMAN> 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-18using channel ORA_DISK_1running UNPLUG on the specified pluggable database: TESTPDBUNPLUG file path : /ora_backup/tpdbs/metadata_testpdb.xmlchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00033 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/sysaux.259.962469409input datafile file number=00034 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/undotbs1.265.962469409input datafile file number=00032 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/system.260.962469409input datafile file number=00035 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/undo_2.266.962469409input datafile file number=00037 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/test.269.962469409input datafile file number=00036 name=+DATA/JY/600D6F56DEB669CCE053AB828A0AAB7E/DATAFILE/users.267.962469409channel ORA_DISK_1: starting piece 1 at 11-FEB-18channel ORA_DISK_1: finished piece 1 at 11-FEB-18piece handle=/ora_backup/tpdbs/transport_testpdb.bck tag=TAG20180211T223830 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:35Finished backup at 11-FEB-18starting full resync of recovery catalogfull resync complete[oracle@jytest1 tpdbs]$ ls -lrttotal 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 插入文件 31RMAN-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 插入文件 37RMAN-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 ONLYJYPDB                                                                                                                    READ WRITETESTPDB                                                                                                                  READ WRITE

9.查询tts.t1与cs.t2表中的数据来验证跨平台传输PDB是否操作成功

SQL> select count(*) from tts.t1;  COUNT(*)----------        90SQL> select count(*) from cs.t2;  COUNT(*)----------        92

到此,跨平台传输PDB就完成了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26015009/viewspace-2151526/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26015009/viewspace-2151526/

你可能感兴趣的文章
安装管理客户机(转)
查看>>
目前主流的两类关系型数据库系统(转)
查看>>
Oracle 9i的两种工作模式(转)
查看>>
在Oracle数据库10g中跟踪SQL(转)
查看>>
Oracle 10g Release2新功能之变化通知(转)
查看>>
ORACLE之常用FAQ V1.0一(构架体系)(转)
查看>>
Oracle 10g 新特性之虚拟专用数据库(转)
查看>>
深刻理解Oracle数据库的启动和关闭(转)
查看>>
将Oracle 10g内置的安全特性用于PHP(转)
查看>>
骇客攻击:跳板攻击与防御(1)(转)
查看>>
黑客入侵计中计(转)
查看>>
谈DoS攻击和DDoS的攻击方式(转)
查看>>
Word 2003 视频教程-关闭 Word(转)
查看>>
JBuilder8配置CVSNT 2.0 (转)
查看>>
分布式反射:新一代的DDoS攻击(转)
查看>>
SYN Flood攻击的基本原理(转)
查看>>
软件开发怎么管?---产品、过程、人员三要素 (转)
查看>>
用dhtml做了一个密码管理器 (转)
查看>>
Php 3.x与4.x中关于对象编程的不兼容问题 (转)
查看>>
Cg FAQ (转)
查看>>