文档内容
|
|
目标 |
|
|
解决方案 |
|
|
参考 |
适用于:
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;