如何还原一个12c版本之前的数据库备份到一个不同OS平台,不同字节码顺序的12c数据库

如何还原一个 12c 版本之前的数据库备份到一个不同操作系统平台,不同字节码顺序的 12c 数据库 (文档 ID 2047631.1)

文档内容


目标

解决方案

参考


适用于:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
本文档所含信息适用于所有平台

目标

在 12c 数据库中,我们可以还原和恢复一个在不同于当前操作系统,不同于当前字节码顺序的平台所生成的备份到当前数据库中,并且不用执行比正常恢复更多的额外命令。

根据 "Bug 13335722 - Enhancement to allow RMAN conversion of backups cross-endian cross-platform" 你可以使用命令'restore from platform'还原一个在 11.2.0.4 中生成的备份到 12c 数据库中。


 

解决方案

额外需要的语法是'restore from platform'。在以下例子中,我们用 rman 迁移一个表空间从 Solaris (SPARC) 平台到 Linux (x86-64) 平台:

在源库 11.2.0.4 中,把表空间 TS2 置为只读模式:

SQL> alter tablespace ts2 read only;


创建表空间 TS2 的全备份:

RMAN> backup incremental level 0 format '/export/home/oracle/bkup/sol_l0_ts2.dat' tablespace ts2;


使用 data pump 导出表空间 TS2 的元数据:

% expdp \“/ as sysdba\” directory=xtt_dump_dir dumpfile=sol_ts2.dmp logfile=xtt_dump_dir transport_tablespaces=ts2;

 

在目标库 12c,使用'RESTORE FROM PLATFORM '命令还原 TS2 全备份到数据库并导入 TS2 的元数据。

 

还原 TS2 的全备份到新的路径:

RMAN> restore from platform ‘Solaris[tm] OE (64-bit)’ foreign datafile 7 format ‘/home/oracle/dp/ts2.dbf’ from backupset ‘/home/oracle/dp/sol_l0_ts2.dat’;


创建新用户 HR2(用于随着 TS2 元数据一起导入的表):

SQL> create user hr2 identified by oracle;


导入元数据,把表空间 TS2"插入"当前数据库:

% impdp ‘”/ as sysdba”’ directory=dpdir dumpfile=sol_ts2.dmp transport_datafiles=’/home/oracle/dp/ts2.dbf’ nologfile=Y;
请使用浏览器的分享功能分享到微信等