共计 5924 个字符,预计需要花费 15 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 Oraclc 12C 如何使用不一致备份执行跨平台传输表空间,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
使用不一致备份执行跨平台传输表空间
RMAN 可以跨平台传输不一致表空间备份。不一致表空间备份是当表空间处于读写状态时对一个或多个表空间创建的备份。不一致是指备份的数据文件包含了检查点之后发生的改变。跨平台不一致备份所生成的外部数据文件不能 直接附加到目标数据库。可以通过应用跨平台增量备份来使外部数据文件达到一致。这种备份必须包含附加传输表空间到目标数据库所需要元数据的 dump 文件。
不一致备份能让你减少停机时间。当表空间联机时,在源数据库上创建跨平台不一致备份。第一次备份必须是 level 0 增量备份,后续,创建 level 1 增量备份它包含从最近 level 1 备份后所有发生的改变。就算其它 level 1 增量 备份正在源数据库上创建时,这些 level 0 与 level 1 增量备份可以被还原与应用到目标数据库。在开始应用之前所创建的 level 1 备份到目标数据库之前不需要等待所有 level 1 增量备份在源数据库上创建完成就可以执行。因为 当创建增量备份时这些表空间仍然处于联机状态,在这时应用程序仍然可以正常运行。当最后一次创建增量备份时需要将表空间置于只读状态,这时应用程序处于停机状态。最后的备份必须包含附加表空间到目标数据库所需要 的元数据。
在目标数据库上,首先还原 level 0 增量备份来创建外部数据文件集。下一步就是应用当表空间处于读写状态时所生成的 level 1 增量备份至这些还原的外部数据文件。以创建这些备份的顺序来应用这些备份。在大多数情况下,目标数据库的内容就赶上最后增量备份之前的最近一次 level 1 增量备份所包含的内容,创建最后增量备份时需要将源数据库中的表空间设置为只读状态。最后还原最终的 level 1 增量备份时会使用外部数据文件达到一致状态。这次的备份包含附加表空间到目标数据库中所需要的元数据。
可以使用备份集或镜像副本来跨平台传输不一致备份,使用 backup 命令来以备份集方式来创建跨平台备份。使用 convert 命令来以镜像副本来创建跨平台备份。
在源数据为上创建不一致与增量备份
在 backup 或 convert 命令中使用 allow inconsistent 子句来为表空间创建跨平台不一致备份。当创建不一致备份时这些表空间处于读写状态。为了创建增量备份,在 backup 命令中使用 incremental level 1 子句。
第一次不一致备份是 level 0 增量备份。后续可以创建多个跨平台的 level 1 增量备份。最后一次跨平台增量备份必须是一个一致的备份因此在创建时表空间必须处于只读状态。在创建最后一次增量备份时,在 backup 命令中使用 dump file 子句来创建包含表空间元数据的 dump 文件。
当使用 convert 命令时,必须显式的使用 Data Pump 导出工具来创建包含表空间元数据的导出 dump 文件。allo inconsistent 子句不能用于跨平台数据库备份。
在目标数据库还原与恢复不一致备份
当源数据库中表空间处于读写状态时首先在目标数据库中还原跨平台 level 0 增量备份。这个操作会还原备份与创建外部数据文件副本。因为创建备份时这些表空间不是处于只读状态所以这些外部数据文件处于一不致状态。为了 使用这些外部数据文件达到一致并且达到一致检查点 SCN,以创建增量备份的顺序来应用这些增量备份。最后应用的增量备份在创建时源数据库中的表空间必须处于只读状态。下一步就是将表空间附加到目标数据库中,在传输表 空间时可以还原与导入包含元数据的 dump 文件。
对还原的数据文件应用跨平台增量备份所要满足的条件
为了对还原的外部数据文件集成功应用跨平台增量表空间备份必须满足以下条件:
. 每个被包含在跨平台增量备份中的数据文件,它的开始 SCN 号必须小于外部数据文件副本的当前检查点 SCN 号。
. 对于通过还原操作所创建的外部数据文件副本必须不能被修改。例如,如果外部数据文件副本已经被附加到目标数据库中,并且处于读写状态,然后置于只读状态,那么 RMAN 会认为这些文件已经被修改。
跨平台传输不一致表空间
跨平台传输不一致表空间分主以下三个主要操作
1. 在源数据库上创建传输表空间所需要的文件。
2. 将文件从源主机传输到目标主机上。
3. 在目标主机上还原表空间并附加到目标数据库
一在源数据库上创建传输表空间所需要的文件
1.1 如果被传输的表空间是 TDE 加密表空间,那么在创建备份集之前指定加密密码
RMAN SET PASSPHRASE ON IDENTIFIED BY encr_temp;
1.2 对于要被传输的表空间在其处于读写状态下创建跨平台 level 0 不一致备份。在 backup 命令中使用 allow inconsistent and incremental level 0 子句来指示备份是不一致备份。
1.3 在要被传输的表空间在其处于读写状态下创建跨平台 level 1 增量备份。在 level 0 不一致备份后,在表空间处于读写状态下时可以创建任何数量的 level 1 增量备份。在 backup 命令中使用 allow inconsistent 与 incremental level 1 子句来创建增量备份。当被传输表空间处于读写状态时频繁的执行增量备份的好处就是可以减少当表空间处于只读状态时所创建的最后增量备份应用到目标数据库的时间。
1.4 当被传输表空间处于只读状态时创建跨平台 level 1 增量备份。这是最后一次增量备份并且它必须包含附加表空间到目标数据库中所需要的表空间元数据。在 backup 命令中使用 incremental level 1 子句来创建 level 1 增量 备份。
当使用 backup 命令执地跨平台传输时,使用 datapump 子句在创建增量备份的同时也生成导出 dump 文件。dump 文件被创建在一个单独的备份集中。当使用镜像副本来创建跨平台增量备份时,必须显式地使用 Data Pump 导出工具来 创建包含表空间元数据的 dump 文件。
二将文件从源主机传输到目标主机上
使用 ftp,操作系统复制命令或一些其它机制来移动备份集,数据文件与 dump 文件到目标主机上。
三在目标主机上还原表空间并附加到目标数据库
3.1 如果被传输表空间是 TDE 加密表空间,那么通过下面的方式来指定密码
RMAN SET PASSPHRASE ON IDENTIFIED BY encr_temp;
3.2 还原跨平台 level 0 不一致备份
还原操作将会在目标数据库上创建一组外部数据文件。这些外部数据文件是不一致状态,并且它们在附加到目标数据库之前需要执行恢复。使用 restore 命令来还原跨平台 level 0 不一致备份。当还原跨平台不一致备份,它是由 备份集组成,使用 from backupset 子句来指定包含 level 0 不一致备份的备份集名称。
3.3 应用表空间处于读写状态时所创建的跨平台 level 1 增量备份到还原的外部数据文件。
如果创建了多次跨平台 level 1 增量备份,那么这些增量备份必须以相同的顺序来进行应用。使用 recover 命令来应用增量备份。recover 命令中的 foreign datafilecopy 子句必须列出增量备份所要应用到的每个数据文件。使用 from backupset 子句来指定包含被恢复数据的备份集名称。
3.4 应用表空间处于只读状态时所创建的跨平台 level 1 增理备份到还原的外部数据文件。
使用 recover 命令来应用增量备份。recover 命令中的 foreign datafilecopy 子句必须列出增量备份所要应用到的每个数据文件。使用 from backupset 子句来指定包含被恢复数据的备份集名称。
3.5 还原包含表空间元数据的备份集
使用 restore 命令来还原在创建跨平台增量备份时一同创建的包含 dump 文件的备份集。这种备份是当表空间处于只读状态时所创建的。可以使用 dump file 子句来指定目标数据库上 dump 文件的名称,datapump destination 子句 来指定存储 dump 文件的目录。如果这些子句被忽略,RMAN 将使用配置的缺省值。当使用备份集传输数据时,使用 from backupset 子句来指定包含 dump 文件的备份集。
3.6 向目标数据库导入包含表空间元数据的 dump 文件
通过使用 Data Pump 导入工具来导入在执行增量备份时所生成的 dump 文件来附加被恢复的表空间到目标数据库中。运行 Data Pump 导入工具的用户必须有 sysdba 权限。
Performing Cross-Platform Inconsistent Tablespace Transport Using Backup Sets
下面的例子将 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. 当表空间 jypdb:tts, 与 jypdb:cs 处于读写状态时创建跨平台 level 0 不一致备份。备份集名为 tts_cs_incon.bck 并存储在 /ora_backup/tts 目录中
RMAN backup for transport allow inconsistent incremental level 0 tablespace JYPDB: TTS ,JYPDB: CS format /ora_backup/tts/tts_cs_incon.bck
Starting backup at 09-FEB-18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=16 instance=jy1 device type=DISK
channel ORA_DISK_1: starting incremental level 0 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 09-FEB-18
channel ORA_DISK_1: finished piece 1 at 09-FEB-18
piece handle=/ora_backup/tts/tts_cs_incon.bck tag=TAG20180209T184928 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 09-FEB-18
因为使用 for transport 代替 to platform 子句,因此这种跨平台备份可以被还原到任何平台。这种转换操作将在目标数据库上完成。
5. 对 tts.t1 与 cs.t2 表进行更新
SQL select count(*) from tts.t1;
COUNT(*)
----------
45