在Oracle数据库管理手册中创建传输表空间集的方法要求在执行表空间传输期间被传输的表空间要以只读模式打开。相比之下,当RMAN使用备份创建传输表空间集时,不需要访问被传输表空间的联机数据文件。这就消除了要将传输表空间设置为只读模式的操作。结果就是提高了源数据库的可用性,特别是对于很大的表空间更是如此,因为表空间在传输时仍然操作读写状态,而且将表空间设置为只读模式依赖于数据库的负载,可能需要花费很长时间。
使用RMAN创建传输表空间集能让你指定一个目标时间点,SCN或者你恢复窗口中的还原点并且传输数据的时间并不是transport tablespace的时间。例如,如果你的备份保留策略是保证一周的恢复窗口并且想创建传输表空间来报告数据库在每个月最后一天时间的内容,可以使用RMAN在下个月的第一周内的任何时间来完成这个任务。
RMAN的transport tablespace命令被用来从RMAN备份中创建传输表空间集。注意,即使用没有使用RMAN对数据库进行备份,RMAN的transport tablespace命令也仍然能被用来创建传输表空间集。然而,对于传输表空间集所期待的SCN之前必须有传输表空间集所有的数据文件副本,并且为了执行transport tablespace命令使用RMAN的catalog命令将数据文件副本和归档重做日志登记到RMAN的档案库中。当RMAN记录了所有需要的备份和日志后,就可以执行传输表空间。
何时使用RMAN来创建传输表空间集
在任何需要传输表空间的情况下,只要你有将表空间恢复到指定SCN所需要的数据库备份,都可以使用RMAN的transport tablespace命令来创建它们。
然而在以下两种特殊情况下更好有用:
.使用表空间档案库来创建传输表空间集。例如,数据库中有些表空间用来做季报。使用transport
tablespace命令来为这些存储在表空间档案库中的生成季报的表空间创建传输表空间集。之后从档案库中被请求的表空间版本被附加到一些其它数据库中来生成报表。
.当准备使用流来使用源数据库同步目标数据库时,必须安装流,为了使用目标数据库及时更新到指定的SCN,两个数据库必须被同步。
使用RMAN生成传输表空间集要有以下实例:
1.RMAN客户端
2.源数据库,包含了被传输的表空间
3.源数据库的归档重做日志备份,将用来恢复被传输的表空间
4.辅助实例,由RMAN在源数据库所在主机上创建的实例,用来执行表空间的还原和恢复,如果处成功会清除它
5.辅助集,包含了执行传输表空间所要求的数据文件和其它文件但它们不是恢复集的一部分。辅助集包括:system和sysaux表空间的副本,undo表空间和源数据库中包含 undo段或回滚段的数据文件。辅助实例还有其它相关的文件,比如,控制文件,参数文件和联机重做日志文件,但这些都是辅助集的一部分
6.辅助目录,当执行RMAN的transport tablespace命令时,磁盘上用来存储辅助集文件的目录,比如参数文件,数据文件(除了传输表空间的数据文件之外的数据文件),控制文件和辅助实例的联机重做日志文件。如果传输表空间执行成功,这些文件都会被删除。
注意:设置辅助目录是可选项,然而,如果没有设置辅助目录,必须确保对所有辅助实例文件,包括所有数据文件,联机重做日志文件都使用辅助实例参数来指定存储目录,Oracle建议使用辅助目录来简化transport tablespace命令。
7.表空间目录,存储数据文件副本和表空间传输命令完成后的输出文件的磁盘目录。
8.传输集,包含了被传输表空间的数据文件和用于在目标数据库附加表空间的导出dump文件(通常是使用Data Pump导出)。
9.用于在目标数据库附加表空间的示例导入脚本(由RMAN生成)和Data Pump导出的日志文件。
RMAN使用备份执行传输表空间的操作步骤
1.在启动阶段,RMAN会构建一个辅助实例。首先RMAN会为辅助实例自动创建参数文件,并将辅助实例启、动到nomount状态。然后,RMAN使用源数据库的控制文件备份还原辅助实例控制文件并加载控制文件。
2.当辅助实例控制文件被加载后,RMAN就会使用源数据库备份,辅助目录中的辅助数据文件和表空间目录中的传输集文件来还原辅助实例和传输集数据文件。RMAN然后在辅助实例中执行switch操作,因此辅助实例使用还原的数据文件作为辅助实例的数据文件。
RMAN对辅助实例执行数据库按时间点还原。这将辅助集和传输集数据文件中的内容更新到transport tablespace命令所指定目标时间点。(如果没有指定目录时间就是执行完全恢复)。执行transport tablespace命令时间会使用备份将需要的归档重做日志文件还原到辅助目录中(或其它目录中)并在应用给辅助实例之后将其删除。
一旦恢复完成,RMAN会对辅助实例执行open resetlogs操作。这时数据文件反映了表空间在传输表空间操作所指定的目标时间点的内容。
3.辅助实例的恢复集表空间将会被设置为只读模式,并且调用Data Pump来为恢复集表空间生成dump文件缺省情况下,生成的dump文件存储在表空间目录中,也可以指定dump文件目录。
在这时RMAN也生成了用于在目标数据库中附加传输表空间的Data Pump导入的示例脚本。脚本内容将被写入到一个名叫impscript.sql的文件中,并且存储在表空间目录中。这个脚本的命令也被包含在RMAN的transport tablespace命令的输出信息中。
如果所有操作都执行成功,RMAN会关闭辅助实例并删除除了传输集文件之外的,transport tablespace命令生成的所有文件,Data Pump导出日志和示例导入脚本。
注意:transport tablespace失踪不会自动地对恢复集数据文件进行字节序的转换。如果需要,在创建传输集后将数据文件转换为目标数据库的字节序。导入的示例脚本是假设要被附加到目标数据库的传输表空间的数据文件的存储目录与transport tablespace操作创建这些文件的目录相同。如果这些文件在表空间被附加之前移动到新的磁盘目录中,必须修改示例脚本指向新的目录。
RMAN transport tablespace命令的限制
使用RMAN创建传输表空间有以下限制:
1.必须对transport tablespace操作将数据库恢复到指定目标时间点所有需要的表空间(包括辅助集中的表空间)和归档重做日志进行备份。
2.因为RMAN在使用备份创建传输表空间的过程中会使用到Data Pump导出和导入工具,如果被传输的表空间使用XMLTypes就不能使用RMAN进行操作。在这种情况下必须使用Oracle管理手册中介绍的方法
3.因为RMAN会在与源实例相同的主机上自动创建辅助实例来还原和恢复,在执行transport tablespace命令时会有些性能开销。
4.如果删除了一个表空间,即使transport tablespace命令指定的SCN早于表空间被删除时的SCN,也不能将被删除的表空间包含在transport tablepsace命令的传输表空间集中。
5.如果对表空间重命名后,不能使用transport tablespace命令来创建表空间集的目标时间不能早于表空间被删除的时间(RMAN有关于表空间之前的名字)。
6.不能传输传表没有相关约束的表或者没有相关表的约束
7.传输集和辅助集数据文件可以包含以下任何对象:
--复制主表
--部分表
-有varray列,嵌套表或外部文件的表
--快照日志和快照表
--包含undo或回滚段的表空间
--包含属于SYS用户对象加,回滚段的表空间
如果不使用恢复目录执行transport tablespace还有以下两个限制:
1.如果使用过去某个时间点的表空间内容来创建传输集,那么执行transport tablespace命令时表空间集所使用的undo段与传输时所选择的表空间所使用的undo段必须相同。包含transport tablespace命令所指定目标SCN所需要的undo段的表空间是辅助集的一部分。不像恢复目录,控制文件中的RMAN档案库只包含在当时包含undo段的表空间记录。如果表空间要使用的undo段与指定的目标时间要使用的不同,那么transport tablespace命令将会失败。
2.如果数据库已经重用了RMAN档案库中包含transport tablespace操作所需要的备份记录信息,那么因为RMAN不能定位需要的备份而造成操作失败。如果备份仍然可用,可以使用catalog命令将需要的备份登记到RMAN档案库中,但如果数据库已经覆盖了控制文件中的备份记录那么可能要丢失需要的备份记录信息。
使用RMAN创建传输表空间集的操作过程
使用RMAN传输表空间的基本操作
1.确认源数据库与目标数据库所在平台是不是传输表空间所支持的操作系统平台。
确认源数据库操作系统平台:
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d 2 where tp.platform_name=d.platform_name ; PLATFORM_NAME ENDIAN_FORMAT ----------------------------------------------------------------------------------------------------- -------------- Linux IA (32-bit) Little
确认目数据库操作系统平台:
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d 2 where tp.platform_name=d.platform_name ; PLATFORM_NAME ENDIAN_FORMAT ----------------------------------------------------------------------------------------------------- -------------- Linux IA (32-bit) Little
这里操作系统平台都是Linux
2.确认要被传输的表空间是否是自包含表空间(TSPITR,TEST):
SQL> exec sys.dbms_tts.transport_set_check('TSPITR',true); PL/SQL procedure successfully completed. SQL> exec sys.dbms_tts.transport_set_check('TEST',true); PL/SQL procedure successfully completed. SQL> select * from sys.transport_set_violations; no rows selected
如果没有行选择,表示该表空间只包含表数据,可以传输。
记录表空间传输前表tspitr与test中的记录:
SQL> conn tspitr/tspitr Connected. SQL> select count(*) from tspitr; COUNT(*) ---------- 50641 SQL> conn test/test Connected. SQL> select count(*) from test; COUNT(*) ---------- 50680
3.对源数据库执行备份,在执行备份时一定要加上include current controlfile否则执行transport tablespace命令时会出现以下错误信息:
Automatic instance removed RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of tranport tablespace command at 03/26/2015 20:24:22 RMAN-03015: error occurred in stored script Memory Script RMAN-06026: some targets not found - aborting restore RMAN-06024: no backup or copy of the control file found to restore
[oracle@oracle11g admin]$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' [oracle@oracle11g admin]$ rman target sys/zzh_2046@test catalog rman/rman@jy Recovery Manager: Release 10.2.0.5.0 - Production on Thu Mar 26 20:01:33 2015 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: TEST (DBID=2168949517) connected to recovery catalog database RMAN> backup as backupset database include current controlfile plus archivelog; Starting backup at 2015-03-26 20:32:19 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=68 recid=75 stamp=875286167 input archive log thread=1 sequence=69 recid=76 stamp=875291999 input archive log thread=1 sequence=70 recid=77 stamp=875302397 input archive log thread=1 sequence=71 recid=78 stamp=875308491 input archive log thread=1 sequence=72 recid=79 stamp=875350203 input archive log thread=1 sequence=73 recid=80 stamp=875351397 input archive log thread=1 sequence=74 recid=81 stamp=875390545 input archive log thread=1 sequence=75 recid=82 stamp=875390643 input archive log thread=1 sequence=76 recid=83 stamp=875391627 input archive log thread=1 sequence=77 recid=84 stamp=875391661 input archive log thread=1 sequence=78 recid=85 stamp=875391764 input archive log thread=1 sequence=79 recid=86 stamp=875392340 channel ORA_DISK_1: starting piece 1 at 2015-03-26 20:32:22 channel ORA_DISK_1: finished piece 1 at 2015-03-26 20:32:29 piece handle=/u02/ora_test875392341_991 tag=TAG20150326T203220 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:08 Finished backup at 2015-03-26 20:32:29 Starting backup at 2015-03-26 20:32:29 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/test/system01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/test/sysaux01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/test/example01.dbf input datafile fno=00006 name=/u01/app/oracle/oradata/test/tspitr01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/test/undotbs01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/test/users01.dbf input datafile fno=00007 name=/u01/app/oracle/oradata/test/test01.dbf channel ORA_DISK_1: starting piece 1 at 2015-03-26 20:32:30 channel ORA_DISK_1: finished piece 1 at 2015-03-26 20:33:45 piece handle=/u02/ora_test875392350_1001 tag=TAG20150326T203229 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:15 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current control file in backupset channel ORA_DISK_1: starting piece 1 at 2015-03-26 20:33:46 channel ORA_DISK_1: finished piece 1 at 2015-03-26 20:33:47 piece handle=/u02/ora_test875392425_1011 tag=TAG20150326T203229 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 2015-03-26 20:33:47 Starting backup at 2015-03-26 20:33:47 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=80 recid=87 stamp=875392427 channel ORA_DISK_1: starting piece 1 at 2015-03-26 20:33:49 channel ORA_DISK_1: finished piece 1 at 2015-03-26 20:33:50 piece handle=/u02/ora_test875392428_1021 tag=TAG20150326T203348 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 2015-03-26 20:33:50 Starting Control File and SPFILE Autobackup at 2015-03-26 20:33:50 piece handle=/u02/c-2168949517-20150326-07 comment=NONE Finished Control File and SPFILE Autobackup at 2015-03-26 20:33:54 RMAN> list backup; List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ ------------------- 6565 56.14M DISK 00:00:07 2015-03-26 20:32:28 BP Key: 6566 Status: AVAILABLE Compressed: NO Tag: TAG20150326T203220 Piece Name: /u02/ora_test875392341_991 List of Archived Logs in backup set 6565 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- ------------------- ---------- --------- 1 68 1040304 2015-03-25 09:33:41 1064641 2015-03-25 15:02:45 1 69 1064641 2015-03-25 15:02:45 1067420 2015-03-25 16:39:58 1 70 1067420 2015-03-25 16:39:58 1090668 2015-03-25 19:33:17 1 71 1090668 2015-03-25 19:33:17 1093434 2015-03-25 21:14:51 1 72 1093434 2015-03-25 21:14:51 1125870 2015-03-26 08:50:00 1 73 1125870 2015-03-26 08:50:00 1126817 2015-03-26 09:09:56 1 74 1126817 2015-03-26 09:09:56 1144051 2015-03-26 20:02:21 1 75 1144051 2015-03-26 20:02:21 1144106 2015-03-26 20:04:02 1 76 1144106 2015-03-26 20:04:02 1144862 2015-03-26 20:20:27 1 77 1144862 2015-03-26 20:20:27 1144893 2015-03-26 20:21:00 1 78 1144893 2015-03-26 20:21:00 1144980 2015-03-26 20:22:44 1 79 1144980 2015-03-26 20:22:44 1145259 2015-03-26 20:32:19 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ------------------- 6607 Full 640.39M DISK 00:01:08 2015-03-26 20:33:38 BP Key: 6621 Status: AVAILABLE Compressed: NO Tag: TAG20150326T203229 Piece Name: /u02/ora_test875392350_1001 List of Datafiles in backup set 6607 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- ------------------- ---- 1 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/system01.dbf 2 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/undotbs01.dbf 3 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/sysaux01.dbf 4 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/users01.dbf 5 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/example01.dbf 6 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/tspitr01.dbf 7 Full 1145279 2015-03-26 20:32:30 /u01/app/oracle/oradata/test/test01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ------------------- 6608 Full 7.02M DISK 00:00:01 2015-03-26 20:33:46 BP Key: 6622 Status: AVAILABLE Compressed: NO Tag: TAG20150326T203229 Piece Name: /u02/ora_test875392425_1011 Control File Included: Ckp SCN: 1145304 Ckp time: 2015-03-26 20:33:45 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ ------------------- 6658 2.50K DISK 00:00:01 2015-03-26 20:33:49 BP Key: 6660 Status: AVAILABLE Compressed: NO Tag: TAG20150326T203348 Piece Name: /u02/ora_test875392428_1021 List of Archived Logs in backup set 6658 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- ------------------- ---------- --------- 1 80 1145259 2015-03-26 20:32:19 1145307 2015-03-26 20:33:47 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ------------------- 6689 Full 7.05M DISK 00:00:01 2015-03-26 20:33:52 BP Key: 6691 Status: AVAILABLE Compressed: NO Tag: TAG20150326T203351 Piece Name: /u02/c-2168949517-20150326-07 Control File Included: Ckp SCN: 1145329 Ckp time: 2015-03-26 20:33:51 SPFILE Included: Modification time: 2015-03-26 19:31:13
4.在这里指定了auxiliary destination子句让RMAN使用缺省值来管理辅助实例。只指定必须的选项。Oracle建议transport tablespace命令使用辅助目录秋简化辅助实例文件的管理。下面来执transport tablespace命令来传输tspitr,test两个表空间:
RMAN> transport tablespace "TSPITR","TEST" tablespace destination '/u02/transport' auxiliary destination '/u02/transport'; Creating automatic instance, with SID='flqb' initialization parameters used for automatic instance: db_name=TEST compatible=10.2.0.5.0 db_block_size=8192 db_files=200 db_unique_name=tspitr_TEST_flqb sga_target=180M processes=50 #No auxiliary parameter file used db_create_file_dest=/u02/transport control_files=/u02/transport/cntrl_tspitr_TEST_flqb.f starting up automatic instance TEST Oracle instance started Total System Global Area 188743680 bytes Fixed Size 1272720 bytes Variable Size 62915696 bytes Database Buffers 121634816 bytes Redo Buffers 2920448 bytes Automatic instance created contents of Memory Script: { # set the until clause set until scn 1145307; # restore the controlfile restore clone controlfile; # mount the controlfile sql clone 'alter database mount clone database'; # archive current online log for tspitr to a resent until time sql 'alter system archive log current'; # avoid unnecessary autobackups for structural changes during TSPITR sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;'; # resync catalog after controlfile restore resync catalog; } executing Memory Script executing command: SET until clause Starting restore at 2015-03-26 20:35:10 allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: sid=47 devtype=DISK channel ORA_AUX_DISK_1: starting datafile backupset restore channel ORA_AUX_DISK_1: restoring control file channel ORA_AUX_DISK_1: reading from backup piece /u02/ora_test875392425_1011 channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u02/ora_test875392425_1011 tag=TAG20150326T203229 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03 output filename=/u02/transport/cntrl_tspitr_TEST_flqb.f Finished restore at 2015-03-26 20:35:15 sql statement: alter database mount clone database sql statement: alter system archive log current sql statement: begin dbms_backup_restore.AutoBackupFlag(FALSE); end; starting full resync of recovery catalog full resync complete contents of Memory Script: { # generated tablespace point-in-time recovery script # set the until clause set until scn 1145307; # set an omf destination filename for restore set newname for clone datafile 1 to new; # set an omf destination filename for restore set newname for clone datafile 2 to new; # set an omf destination filename for restore set newname for clone datafile 3 to new; # set an omf destination tempfile set newname for clone tempfile 1 to new; # set a destination filename for restore set newname for datafile 6 to "/u02/transport/tspitr01.dbf"; # set a destination filename for restore set newname for datafile 7 to "/u02/transport/test01.dbf"; # rename all tempfiles switch clone tempfile all; # restore the tablespaces in the recovery set plus the auxilliary tablespaces restore clone datafile 1, 2, 3, 6, 7; switch clone datafile all; #online the datafiles restored or flipped sql clone "alter database datafile 1 online"; #online the datafiles restored or flipped sql clone "alter database datafile 2 online"; #online the datafiles restored or flipped sql clone "alter database datafile 3 online"; #online the datafiles restored or flipped sql clone "alter database datafile 6 online"; #online the datafiles restored or flipped sql clone "alter database datafile 7 online"; # make the controlfile point at the restored datafiles, then recover them recover clone database tablespace "TSPITR", "TEST", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog; alter clone database open resetlogs; # PLUG HERE the creation of a temporary tablespace if export fails due to lack # of temporary space. # For example in Unix these two lines would do that: #sql clone "create tablespace aux_tspitr_tmp # datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K"; } executing Memory Script executing command: SET until clause executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME renamed temporary file 1 to /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_temp_%u_.tmp in control file Starting restore at 2015-03-26 20:35:24 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: starting datafile backupset restore channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_system_%u_.dbf restoring datafile 00002 to /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_undotbs1_%u_.dbf restoring datafile 00003 to /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_sysaux_%u_.dbf restoring datafile 00006 to /u02/transport/tspitr01.dbf restoring datafile 00007 to /u02/transport/test01.dbf channel ORA_AUX_DISK_1: reading from backup piece /u02/ora_test875392350_1001 channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u02/ora_test875392350_1001 tag=TAG20150326T203229 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:25 Finished restore at 2015-03-26 20:36:50 datafile 1 switched to datafile copy input datafile copy recid=22 stamp=875392611 filename=/u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_system_bk7z8fsc_.dbf datafile 2 switched to datafile copy input datafile copy recid=23 stamp=875392611 filename=/u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_undotbs1_bk7z8ft1_.dbf datafile 3 switched to datafile copy input datafile copy recid=24 stamp=875392611 filename=/u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_sysaux_bk7z8fsp_.dbf datafile 6 switched to datafile copy input datafile copy recid=25 stamp=875392611 filename=/u02/transport/tspitr01.dbf datafile 7 switched to datafile copy input datafile copy recid=26 stamp=875392611 filename=/u02/transport/test01.dbf sql statement: alter database datafile 1 online sql statement: alter database datafile 2 online sql statement: alter database datafile 3 online sql statement: alter database datafile 6 online sql statement: alter database datafile 7 online Starting recover at 2015-03-26 20:36:51 using channel ORA_AUX_DISK_1 starting media recovery archive log thread 1 sequence 80 is already on disk as file /u02/1_80_870806981.dbf archive log filename=/u02/1_80_870806981.dbf thread=1 sequence=80 media recovery complete, elapsed time: 00:00:01 Finished recover at 2015-03-26 20:36:53 database opened contents of Memory Script: { #mark read only the tablespace that will be exported sql clone "alter tablespace TSPITR read only"; #mark read only the tablespace that will be exported sql clone "alter tablespace TEST read only"; # create directory for datapump export sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as '' /u02/transport''"; # export the tablespaces in the recovery set host 'expdp userid=\"/@\(DESCRIPTION=\(ADDRESS=\(PROTOCOL=beq\)\(PROGRAM=/u01/app/oracle/10.2.0/db/bin/oracle\)\(ARGV0=oracleflqb\)\(ARGS=^'\(DESCRIPTION=\(LOCAL=YES\)\(ADDRESS=\(PROTOCOL=beq\)\)\)^'\)\(ENVS=^'ORACLE_SID=flqb^'\)\)\(CONNECT_DATA=\(SID=flqb\)\)\) as sysdba\" transport_tablespaces= TSPITR, TEST dumpfile= dmpfile.dmp directory= STREAMS_DIROBJ_DPDIR logfile= explog.log'; } executing Memory Script sql statement: alter tablespace TSPITR read only sql statement: alter tablespace TEST read only sql statement: create or replace directory STREAMS_DIROBJ_DPDIR as ''/u02/transport'' Export: Release 10.2.0.5.0 - Production on Thursday, 26 March, 2015 20:37:24 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "SYS"."SYS_EXPORT_TRANSPORTABLE_01": userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/10.2.0/db/bin/oracle)(ARGV0=oracleflqb)(ARGS=\(DESCRIPTION=\(LOCAL=YES\)\(ADDRESS=\(PROTOCOL=beq\)\)\))(ENVS=ORACLE_SID=flqb))(CONNECT_DATA=(SID=flqb))) AS SYSDBA" transport_tablespaces= TSPITR, TEST dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDIR logfile=explog.log Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK Master table "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYS.SYS_EXPORT_TRANSPORTABLE_01 is: /u02/transport/dmpfile.dmp Job "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 20:38:23 host command complete /* The following command may be used to import the tablespaces. Substitute values for and . impdp directory= dumpfile= 'dmpfile.dmp' transport_datafiles= /u02/transport/tspitr01.dbf, /u02/transport/test01.dbf */ -------------------------------------------------------------- -- Start of sample PL/SQL script for importing the tablespaces -------------------------------------------------------------- -- creating directory objects CREATE DIRECTORY STREAMS$DIROBJ$1 AS '/u02/transport/'; CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS '/u02/transport'; /* PL/SQL Script to import the exported tablespaces */ DECLARE -- the datafiles tbs_files dbms_streams_tablespace_adm.file_set; cvt_files dbms_streams_tablespace_adm.file_set; -- the dumpfile to import dump_file dbms_streams_tablespace_adm.file; dp_job_name VARCHAR2(30) := NULL; -- names of tablespaces that were imported ts_names dbms_streams_tablespace_adm.tablespace_set; BEGIN -- dump file name and location dump_file.file_name := 'dmpfile.dmp'; dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR'; -- forming list of datafiles for import tbs_files( 1).file_name := 'tspitr01.dbf'; tbs_files( 1).directory_object := 'STREAMS$DIROBJ$1'; tbs_files( 2).file_name := 'test01.dbf'; tbs_files( 2).directory_object := 'STREAMS$DIROBJ$1'; -- import tablespaces dbms_streams_tablespace_adm.attach_tablespaces( datapump_job_name => dp_job_name, dump_file => dump_file, tablespace_files => tbs_files, converted_files => cvt_files, tablespace_names => ts_names); -- output names of imported tablespaces IF ts_names IS NOT NULL AND ts_names.first IS NOT NULL THEN FOR i IN ts_names.first .. ts_names.last LOOP dbms_output.put_line('imported tablespace '|| ts_names(i)); END LOOP; END IF; END; / -- dropping directory objects DROP DIRECTORY STREAMS$DIROBJ$1; DROP DIRECTORY STREAMS$DIROBJ$DPDIR; -------------------------------------------------------------- -- End of sample PL/SQL script -------------------------------------------------------------- Removing automatic instance shutting down automatic instance Oracle instance shut down Automatic instance removed auxiliary instance file /u02/transport/cntrl_tspitr_TEST_flqb.f deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_system_bk7z8fsc_.dbf deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_undotbs1_bk7z8ft1_.dbf deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_sysaux_bk7z8fsp_.dbf deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/datafile/o1_mf_temp_bk7zcm9b_.tmp deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/onlinelog/o1_mf_1_bk7zc5pm_.log deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/onlinelog/o1_mf_2_bk7zc8bl_.log deleted auxiliary instance file /u02/transport/TSPITR_TEST_FLQB/onlinelog/o1_mf_3_bk7zcbvb_.log deleted;
执行成功后在/u02/transport目录中生成了以下文件及临时目录,要被传输的表空间的数据文件使用了其原始文件名,传输表空间集的Data Pump导出文件是dmpfile.dmp,导出日志文件是explog.log,示例导入脚本是impscrpt.sql,而所有辅助文件被删除了。
[oracle@oracle11g transport]$ ls -lrt total 112888 drwxr-x--- 4 oracle oinstall 4096 Mar 26 20:35 TSPITR_TEST_FLQB -rw-r----- 1 oracle oinstall 104865792 Mar 26 20:37 tspitr01.dbf -rw-r----- 1 oracle oinstall 10493952 Mar 26 20:37 test01.dbf -rw-r--r-- 1 oracle oinstall 1255 Mar 26 20:38 explog.log -rw-r----- 1 oracle oinstall 98304 Mar 26 20:38 dmpfile.dmp -rw-r--r-- 1 oracle oinstall 2179 Mar 26 20:38 impscrpt.sql
示例导入脚本impscrpt.sql的内容如下所示:
[oracle@oracle11g transport]$ cat impscrpt.sql /* The following command may be used to import the tablespaces. Substitute values for and . impdp directory= dumpfile= 'dmpfile.dmp' transport_datafiles= /u02/transport/tspitr01.dbf, /u02/transport/test01.dbf */ -------------------------------------------------------------- -- Start of sample PL/SQL script for importing the tablespaces -------------------------------------------------------------- -- creating directory objects CREATE DIRECTORY STREAMS$DIROBJ$1 AS '/u02/transport/'; CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS '/u02/transport'; /* PL/SQL Script to import the exported tablespaces */ DECLARE -- the datafiles tbs_files dbms_streams_tablespace_adm.file_set; cvt_files dbms_streams_tablespace_adm.file_set; -- the dumpfile to import dump_file dbms_streams_tablespace_adm.file; dp_job_name VARCHAR2(30) := NULL; -- names of tablespaces that were imported ts_names dbms_streams_tablespace_adm.tablespace_set; BEGIN -- dump file name and location dump_file.file_name := 'dmpfile.dmp'; dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR'; -- forming list of datafiles for import tbs_files( 1).file_name := 'tspitr01.dbf'; tbs_files( 1).directory_object := 'STREAMS$DIROBJ$1'; tbs_files( 2).file_name := 'test01.dbf'; tbs_files( 2).directory_object := 'STREAMS$DIROBJ$1'; -- import tablespaces dbms_streams_tablespace_adm.attach_tablespaces( datapump_job_name => dp_job_name, dump_file => dump_file, tablespace_files => tbs_files, converted_files => cvt_files, tablespace_names => ts_names); -- output names of imported tablespaces IF ts_names IS NOT NULL AND ts_names.first IS NOT NULL THEN FOR i IN ts_names.first .. ts_names.last LOOP dbms_output.put_line('imported tablespace '|| ts_names(i)); END LOOP; END IF; END; / -- dropping directory objects DROP DIRECTORY STREAMS$DIROBJ$1; DROP DIRECTORY STREAMS$DIROBJ$DPDIR; -------------------------------------------------------------- -- End of sample PL/SQL script --------------------------------------------------------------
5.将步骤4生成的传输表空间的数据文件tspitr01.dbf,test01.dbf和Data Pump导出文件dmpfile拷贝到目标主机上的/u02目录中
[root@jingyong1 u02]# scp -r oracle@192.168.56.2:/u02/transport/tspitr01.dbf /u02 oracle@192.168.56.2's password: tspitr01.dbf 100% 100MB 9.1MB/s 00:11 [root@jingyong1 u02]# scp -r oracle@192.168.56.2:/u02/transport/test01.dbf /u02 oracle@192.168.56.2's password: test01.dbf [root@jingyong1 u02]# scp -r oracle@192.168.56.2:/u02/transport/dmpfile.dmp /u02 oracle@192.168.56.2's password: dmpfile.dmp 100% 96KB 96.0KB/s 00:00 100% 10MB 10.0MB/s 00:01 [root@jingyong1 u02]# ls -lrt total 112776 -rw-r----- 1 root root 104865792 Mar 26 20:51 tspitr01.dbf -rw-r----- 1 root root 10493952 Mar 26 20:51 test01.dbf -rw-r----- 1 root root 98304 Mar 26 21:06 dmpfile.dmp [root@jingyong1 u02]# chown -R oracle:oinstall * [root@jingyong1 u02]# chmod -R 777 * [root@jingyong1 u02]# ls -lrt total 112876 -rwxrwxrwx 1 oracle oinstall 104865792 Mar 26 20:51 tspitr01.dbf -rwxrwxrwx 1 oracle oinstall 10493952 Mar 26 20:51 test01.dbf -rwxrwxrwx 1 oracle oinstall 98304 Mar 26 21:06 dmpfile.dmp
6.在目录主机上创建相关用户及Data Pump目录并将表空间附加到目标数据库中
SQL> create user tspitr identified by "tspitr"; User created. SQL> grant dba,connect,resource to tspitr; Grant succeeded. SQL> create user test identified by "test"; User created. SQL> grant dba,connect,resource to test; Grant succeeded. SQL> create directory mytest as '/u02'; Directory created. SQL> grant read,write on directory mytest to public; Grant succeeded.
最后就可以执行导入过程了
[oracle@jingyong1 dbs]$ export ORACLE_SID=jy [oracle@jingyong1 dbs]$ export NLS_DATE_FORMATE='yyyy-mm-dd hh24:mi:ss' [oracle@jingyong1 dbs]$ impdp test/test directory=mytest dumpfile=dmpfile.dmp logfile=testtransport.log transport_datafiles= /u02/tspitr01.dbf, /u02/test01.dbf Import: Release 10.2.0.5.0 - Production on Thursday, 26 March, 2015 21:14:59 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Master table "TEST"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded Starting "TEST"."SYS_IMPORT_TRANSPORTABLE_01": test/******** directory=mytest dumpfile=dmpfile.dmp logfile=testtransport.log transport_datafiles= /u02/tspitr01.dbf, /u02/test01.dbf Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK Job "TEST"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 21:15:28
进入数据库中检查一下
SQL> conn tspitr/tspitr Connected. SQL> select count(*) from tspitr; COUNT(*) ---------- 50641 SQL> conn test/test Connected. SQL> select count(*) from test; COUNT(*) ---------- 50680