Oracle 12C如何使用备份集执行只读表空间的跨平台传输

74次阅读
没有评论

共计 7914 个字符,预计需要花费 20 分钟才能阅读完成。

这篇文章主要介绍 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 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. 对源数据库中的要被传输的表空间 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 t
PLATFORM_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.

9 rows selected.

5. 给 RMAN 备份输出文件选择命名方法, 使用 backup 命令的 format 子句来为备份输出文件选择输出方法。

6. 启动 RMAN 连接到源数据库 (整个 RAC CDB) 并将重启源数据库并以只读方式打开

[oracle@jytest1 ~]$ rman target sys/abcd@jy catalog rco/abcd@jypdb_173
Recovery Manager: Release 12.2.0.1.0 - Production on Mon Feb 5 23:22:24 2018
Copyright (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-18
using channel ORA_DISK_1
Running TRANSPORT_SET_CHECK on specified tablespaces
TRANSPORT_SET_CHECK completed successfully
Performing 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:08
Export completed
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00022 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353
input datafile file number=00023 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783
channel ORA_DISK_1: starting piece 1 at 05-FEB-18
channel ORA_DISK_1: finished piece 1 at 05-FEB-18
piece handle=/ora_backup/tts/trans_ts.bck tag=TAG20180205T235319 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting full datafile backup set
input Data Pump dump file=/u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmp
channel ORA_DISK_1: starting piece 1 at 05-FEB-18
channel ORA_DISK_1: finished piece 1 at 05-FEB-18
piece handle=/ora_backup/tts/trans_ts_dmp.bck tag=TAG20180205T235319 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 05-FEB-18
starting full resync of recovery catalog
full resync complete

total 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 2018
Copyright (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(*)
----------
 45
SQL  select count(*) from cs.t2;
 COUNT(*)
----------
 46

目标数据库

SQL  alter session set container=jypdb;
会话已更改。SQL  select count(*) from tts.t1;
 COUNT(*)
----------
 45
SQL  select count(*) from cs.t2;
 COUNT(*)
----------
 46

以上是“Oracle 12C 如何使用备份集执行只读表空间的跨平台传输”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计7914字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)