Oracle 12C如何使用备份集执行只读表空间的跨平台传输
这篇文章主要介绍Oracle 12C如何使用备份集执行只读表空间的跨平台传输,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
使用带用for transport或to platform子句的backup命令来创建备份集来将只读表空间从一个平台传输到另一个平台。当传输只读表空间时,必须要导出这些表空间的元数据。这些元数据会在将表空间附加到目标数据库时需要使用。当跨平台传输表空间时,源平台与目标平台可以使用不同的字节序。可以还原跨平台备份中的所有数据文件或表空间或者它们中的一部分。在还原这些对象之后,可以为被还原的数据文件指定路径与名称。
使用备份集执行跨平台传输表空间的先决条件
.源数据库与目标数据库的spfile参数文件中的compatible参数必须设置为12.0.0或更高版本。
.被传输的表空间必须是自包含。执行dbms_tts.transport_set_check过程来检查依赖性。如果transport_set_violations视图包含指定表空间的相关行记录,那么必须在创建跨平台备份之前解决这种依赖性。
.被传输的表空间必须是只读模式,除非在backup命令中使用了allow inconsistent子句。
下面的例子将Linux平台上的RAC CDB中的jypdb的表空间tts与cs传输到windows平台上的单实例CDB的jypdb数据库中。使用备份集对只读表空间执行跨平台传输的操作如下:
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.对源数据库中的要被传输的表空间tts与cs执行自包含检查
SQL> alter session set container=jypdb;Session altered.SQL> exec sys.dbms_tts.transport_set_check('TTS,CS',true);PL/SQL procedure successfully completed.SQL> select * from sys.transport_set_violations;no rows selected
3.检查源平台与目标平台的字节序
源平台
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 tPLATFORM_NAME ENDIAN_FORMAT-------------------------------------------------------------------------------- --------------Microsoft Windows x86 64-bit Little
4.将要被传输的表空间(tts,cs)设置为只读状态
SQL> alter tablespace tts read only;Tablespace altered.SQL> alter tablespace cs read only;Tablespace altered.SQL> select tablespace_name,status from user_tablespaces;TABLESPACE_NAME STATUS------------------------------ ---------SYSTEM ONLINESYSAUX ONLINEUNDOTBS1 ONLINETEMP ONLINEUNDO_2 ONLINEUSERS ONLINETEST ONLINETTS READ ONLYCS READ ONLY9 rows selected.
5.给RMAN备份输出文件选择命名方法,使用backup命令的format子句来为备份输出文件选择输出方法。
6.启动RMAN连接到源数据库(整个RAC CDB)并将重启源数据库并以只读方式打开
[oracle@jytest1 ~]$ rman target sys/abcd@jy catalog rco/abcd@jypdb_173Recovery Manager: Release 12.2.0.1.0 - Production on Mon Feb 5 23:22:24 2018Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.connected to target database: JY (DBID=979425723)connected to recovery catalog database
7.在backup命令中使用for transport或to platform子句来备份表空间。下面的例子对表空间tts与cs创建跨平台传输备份。备份可以被还原到Microsoft Windows IA (64-bit)平台。Data Pump导出dump文件包含了附加表空间到目标数据库中所需要的元数据。备份文件与dump文件存储在/ora_backup/tts目录中。
RMAN> backup to platform 'Microsoft Windows x86 64-bit' format '/ora_backup/tts/trans_ts.bck' datapump format '/ora_backup/tts/trans_ts_dmp.bck' tablespace JYPDB:'TTS',JYPDB:'CS';Starting backup at 05-FEB-18using channel ORA_DISK_1Running TRANSPORT_SET_CHECK on specified tablespacesTRANSPORT_SET_CHECK completed successfullyPerforming export of metadata for specified tablespaces... EXPDP> Starting "SYS"."TRANSPORT_EXP_JY_xput": EXPDP> Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS EXPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER EXPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK EXPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE EXPDP> Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX EXPDP> Master table "SYS"."TRANSPORT_EXP_JY_xput" successfully loaded/unloaded EXPDP> ****************************************************************************** EXPDP> Dump file set for SYS.TRANSPORT_EXP_JY_xput is: EXPDP> /u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmp EXPDP> ****************************************************************************** EXPDP> Datafiles required for transportable tablespace CS: EXPDP> +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783 EXPDP> Datafiles required for transportable tablespace TTS: EXPDP> +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353 EXPDP> Job "SYS"."TRANSPORT_EXP_JY_xput" successfully completed at Mon Feb 5 23:57:57 2018 elapsed 0 00:03:08Export completedchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00022 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353input datafile file number=00023 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783channel ORA_DISK_1: starting piece 1 at 05-FEB-18channel ORA_DISK_1: finished piece 1 at 05-FEB-18piece handle=/ora_backup/tts/trans_ts.bck tag=TAG20180205T235319 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:03channel ORA_DISK_1: starting full datafile backup setinput Data Pump dump file=/u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmpchannel ORA_DISK_1: starting piece 1 at 05-FEB-18channel ORA_DISK_1: finished piece 1 at 05-FEB-18piece handle=/ora_backup/tts/trans_ts_dmp.bck tag=TAG20180205T235319 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 05-FEB-18starting full resync of recovery catalogfull resync complete[oracle@jytest1 tts]$ ls -lrttotal 2472-rw-r----- 1 oracle asmadmin 2318336 Feb 5 17:57 trans_ts.bck-rw-r----- 1 oracle asmadmin 212992 Feb 5 17:57 trans_ts_dmp.bck
因为在backup命令中使用了to platform子句,因此将数据文件转换成目标平台字节序的操作在源平台执行。
8.将backup命令生成的备份集与Data Pump导出的dump文件传输到目标平台的D:\app\oracle\oradata\tts目录中
9.使用rman连接到目标数据库(单实例CDB中的JYPDB)
C:\Users\Administrator>rman target sys/abcd@jypdb恢复管理器: Release 12.2.0.1.0 - Production on 星期一 2月 5 00:22:31 2018Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.已连接到目标数据库: JY:JYPDB (DBID=4203494064)
10.使用有foreign tablespace子句的restore命令来还原从源平台传输过来的备份集
RMAN> restore foreign tablespace TTS,CS to new from backupset 'D:\app\oracle\oradata\tts\trans_ts.bck' dump file from backupset 'D:\app\oracle\oradata\tts\trans_ts_dmp.bck';从位于 06-2月 -18 的 restore 开始使用目标数据库控制文件替代恢复目录分配的通道: ORA_DISK_1通道 ORA_DISK_1: SID=8 设备类型=DISK通道 ORA_DISK_1: 正在开始还原数据文件备份集通道 ORA_DISK_1: 正在指定从备份集还原的数据文件通道 ORA_DISK_1: 正在还原外部表空间 TTS 中的所有文件通道 ORA_DISK_1: 正在还原外部表空间 CS 中的所有文件通道 ORA_DISK_1: 正在读取备份片段 D:\app\oracle\oradata\tts\trans_ts.bck通道 ORA_DISK_1: 将外部文件 22 还原到 D:\APP\ORACLE\ORADATA\JY\5F9AC6865E87549FE053AB828A0ADE94\DATAFILE\O1_MF_TTS_F7K17RGW_.DBF通道 ORA_DISK_1: 将外部文件 23 还原到 D:\APP\ORACLE\ORADATA\JY\5F9AC6865E87549FE053AB828A0ADE94\DATAFILE\O1_MF_CS_F7K17RHC_.DBF通道 ORA_DISK_1: 外部片段句柄 = D:\app\oracle\oradata\tts\trans_ts.bck通道 ORA_DISK_1: 已还原备份片段 1通道 ORA_DISK_1: 还原完成, 用时: 00:00:02通道 ORA_DISK_1: 正在开始还原数据文件备份集通道 ORA_DISK_1: 正在指定从备份集还原的数据文件通道 ORA_DISK_1: 正在将数据泵转储文件还原到 D:\app\oracle\product\12.2.0\dbhome_1/dbs/backup_tts_JY_38586.dmp通道 ORA_DISK_1: 正在读取备份片段 D:\app\oracle\oradata\tts\trans_ts_dmp.bck通道 ORA_DISK_1: 外部片段句柄 = D:\app\oracle\oradata\tts\trans_ts_dmp.bck通道 ORA_DISK_1: 已还原备份片段 1通道 ORA_DISK_1: 还原完成, 用时: 00:00:02正在执行元数据导入... IMPDP> 已成功加载/卸载了主表 "SYS"."TSPITR_IMP_JY_pfCp" IMPDP> 启动 "SYS"."TSPITR_IMP_JY_pfCp": IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/TABLE IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/INDEX/INDEX IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/INDEX_STATISTICS IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/TABLE_STATISTICS IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/STATISTICS/MARKER IMPDP> 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK IMPDP> 作业 "SYS"."TSPITR_IMP_JY_pfCp" 已于 星期二 2月 6 00:24:02 2018 elapsed 0 00:00:33 成功完成导入完毕在 05-2月 -18 完成了 restore
11.在目标数据库中查询表tts.t1与cs.t2记录是否与源数据库中一致,如果一致说用表空间tts与cs跨平台传输成功
源数据库
SQL> alter session set container=jypdb;会话已更改。SQL> select count(*) from tts.t1; COUNT(*)---------- 45SQL> select count(*) from cs.t2; COUNT(*)---------- 46
目标数据库
SQL> alter session set container=jypdb;会话已更改。SQL> select count(*) from tts.t1; COUNT(*)---------- 45SQL> select count(*) from cs.t2; COUNT(*)---------- 46
以上是"Oracle 12C如何使用备份集执行只读表空间的跨平台传输"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!