![Permalink](http://blog.itpub.net//templates/toto/post.gif)
![Comments](http://blog.itpub.net//templates/toto/bubble.gif)
![Trackback](http://blog.itpub.net//templates/toto/trackback.gif)
前言 在Oracle 10g前,我们实现TTS,一般的处理步骤是: 1、在源数据库上将需要传输的表空间置为只读(read only)状态; 5、在目标数据库上将该表空间设置读写(read write)状态. 在10g前,Transport TableSpace也同样有很多限制,比如 1)不能跨平台 2)不能跨版本 3)源库的表空间必须设置为read only状态 。。。 特别是对一个OLTP 数据库,这些条件往往是不太可能满足的,因此传输表空间也是不可能的。如果 OLTP数据库是数据仓库的数据源,则可能始终无法使用可传输表空间加载它。
这一系列的问题,在10gR2中得到的解决,比如跨平台表空间传输,利用RMAN从备份中TTS.本文是就10gR2的新特性:通过备份利用RMAN实现TTS。详细的技术背景可以参考官方资料b14191中《Create Transportable Tablespace Sets from Backup with Rman》一章。 |
说明概要
在 Oracle 数据库 10gR2中,可以传输表空间并从另一个数据源(即备份)中插入它。例如,如果要传输表空间 TRANS,则可以发出 RMAN 命令
RMAN> transport tablespace TRANS
TABLESPACE DESTINATION = 'd:oradatatrans_tbs'
auxiliary destination = 'd:oradatatnans_tbs';
该命令在位置d:oradatatrans_tbs下自动创建一个辅助实例,并从其中的备份恢复文件。此辅助实例的SID是随机生成的。创建实例后,该过程将基于目录创建一个目录对象,并恢复表空间 TRANS(正在传输的表空间)的文件 - 所有操作均自动完成,我们不必发出任何命令!
目录 d:oradatatrans_tbs将包含表空间 TRANS 的所有数据文件、表空间元数据的转储文件以及脚本 imp scrpt (最重要的)。该脚本包含将此表空间插入目标表空间所必需的所有命令。该表空间并非由 impdp 命令进行传输,而是通过对 dbms_streams_tablespace_adm.attach_tablespaces 程序包的调用进行传输。可以在该脚本中找到所有必要的命令。
如果中途出现错误,辅助实例将在 $ORACLE_HOME/rdbms/log 中创建警报日志文件,以便可以检查该日志以查明潜在的问题。其次,在提供 RMAN 命令时,可以通过发出 RMAN 命令(该命令将所有输出置于文件 tts.log 中)将命令和输出重定向到日志文件
rman target/ log=tts.log
然后,我们可以检查该文件来查明故障的确切原因。
最后,将把这些文件恢复到 d:oradatatrans_tbs下的 TSPITR__(我在本测试案例中,这个对应的目录是TSPITR_S(略有出入)) 目录中。例如,如果主数据库的 SID 为 STUDY,RMAN 创建的辅助实例的 SID 为 Bjpl,则目录名为 TSPITR_STUDY_BJPL。该目录还包含两个其他子目录:datafile(用于数据文件)和 onlinelog(用于重做日志)。在完成新表空间的创建之前,可以查看该目录以了解恢复了哪些文件。(这些文件在该过程结束时会被删除。)
步骤概要
1、用RMAN连接到源数据库和CATALOG数据库(如果有)
2、RMAN自动创建辅助实例(包含SYSTEM、UNDO和要传输的表空间)
3、RMAN通过辅助实例恢复到point in time
4、RMAN利用expdp工具生成dumpfile,dumpfile内容包含
-要传输的表空间对应的数据文件,
-要传输的表空间的metadata
-一个可以导入要传输的表空间的SQL脚本
5. 然后RMAN自动删除辅助实例。
步骤概要
1、用RMAN连接到源数据库和CATALOG数据库(如果有)
2、RMAN自动创建辅助实例(包含SYSTEM、UNDO和要传输的表空间)
3、RMAN通过辅助实例恢复到point in time
4、RMAN利用expdp工具生成dumpfile,dumpfile内容包含
-要传输的表空间对应的数据文件,
-要传输的表空间的metadata
-一个可以导入要传输的表空间的SQL脚本
5. 然后RMAN自动删除辅助实例。
测试过程
D:>rman target/ catalog rman/rman@px1a 恢复管理器: Release 10.2.0.3.0 - Production on 星期三 11月 28 17:00:15 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到目标数据库: STUDY (DBID=2656671914) 连接到恢复目录数据库 RMAN> run 2> { 3> TRANSPORT TABLESPACE 'TRANS' 4> TABLESPACE DESTINATION 'D:oradatatoms' 5> AUXILIARY DESTINATION 'D:oradatatoms' 6> DUMP FILE 'trans.dmp' 7> EXPORT LOG 'exp_trans.log' 8> IMPORT SCRIPT 'imp_trans.sql'; 9> }
注:这是整个过程中,我们唯一发出的RMAN COMMAND.
下面是这个命令的具体输出信息:
使用 SID='Bjpl' 创建自动实例 供自动实例使用的初始化参数: db_name=STUDY compatible=10.2.0.3.0 db_block_size=8192 db_files=200 db_unique_name=tspitr_STUDY_Bjpl large_pool_size=1M shared_pool_size=110M #No auxiliary parameter file used db_create_file_dest=D:oradatatoms control_files=D:oradatatoms/cntrl_tspitr_STUDY_Bjpl.f 启动自动实例 STUDY Oracle 实例已启动 系统全局区域总计 201326592 字节 Fixed Size 1289700 字节 Variable Size 146801180 字节 Database Buffers 50331648 字节 Redo Buffers 2904064 字节 自动实例已创建 内存脚本的内容: { # set the until clause set until scn 1014548; # 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; } 正在执行内存脚本 正在执行命令: SET until clause 于 28-11月-07 分配的通道: ORA_AUX_DISK_1 通道 ORA_AUX_DISK_1: sid=37 devtype=DISK 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在复原控制文件 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUPC-2656671914-20071128-0E 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUPC-2656671914-20071128-0E 标记 = TAG20071128T163432 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01 输出文件名=D:ORADATATOMSCNTRL_TSPITR_STUDY_BJPL.F 于 28-11月-07 sql 语句: alter database mount clone database sql 语句: alter system archive log current sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end; 正在启动全部恢复目录的 resync 完成全部 resync 释放的通道: ORA_AUX_DISK_1 内存脚本的内容: { # generated tablespace point-in-time recovery script # set the until clause set until scn 1014548; # 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 "D:oradatatomsTRANS.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; 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"; # make the controlfile point at the restored datafiles, then recover them recover clone database tablespace "TRANS", "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"; } 正在执行内存脚本 正在执行命令: SET until clause 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 临时文件 1 在控制文件中已重命名为 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_TEMP_%U_.TMP 于 28-11月-07 分配的通道: ORA_AUX_DISK_1 通道 ORA_AUX_DISK_1: sid=39 devtype=DISK 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00001恢复到D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSTEM_%U_.DBF 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8EJ26N21_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8EJ26N21_1_1 标记 = TAG20071128T163305 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:55 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00003恢复到D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSAUX_%U_.DBF 正将数据文件00006恢复到D:ORADATATOMSTRANS.DBF 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8FJ26N3F_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8FJ26N3F_1_1 标记 = TAG20071128T163305 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:45 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00002恢复到D:ORADATATOMSTSPITR_SDATAFILEO1_MF_UNDOTBS1_%U_.DBF 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8GJ26N48_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8GJ26N48_1_1 标记 = TAG20071128T163305 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:07 于 28-11月-07 数据文件 1 已转换成数据文件副本 输入数据文件副本 recid=37 stamp=639853422
文件名=D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSTEM_3NTCN26T_.DBF 数据文件 2 已转换成数据文件副本 输入数据文件副本 recid=38 stamp=639853422
文件名=D:ORADATATOMSTSPITR_SDATAFILEO1_MF_UNDOTBS1_3NTCQ6Y8_.DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 recid=39 stamp=639853423
文件名=D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSAUX_3NTCOSSD_.DBF 数据文件 6 已转换成数据文件副本 输入数据文件副本 recid=40 stamp=639853423
文件名=D:ORADATATOMSTRANS.DBF sql 语句: alter database datafile 1 online sql 语句: alter database datafile 2 online sql 语句: alter database datafile 3 online sql 语句: alter database datafile 6 online 于 28-11月-07 使用通道 ORA_AUX_DISK_1 正在开始介质的恢复 存档日志线程 1 序列 41 已作为文件 D:ORADATASTUDYARCHARC00041_0639422393.001 存在于磁盘上 存档日志线程 1 序列 42 已作为文件 D:ORADATASTUDYARCHARC00042_0639422393.001 存在于磁盘上 存档日志线程 1 序列 43 已作为文件 D:ORADATASTUDYARCHARC00043_0639422393.001 存在于磁盘上 存档日志线程 1 序列 44 已作为文件 D:ORADATASTUDYARCHARC00044_0639422393.001 存在于磁盘上 存档日志线程 1 序列 45 已作为文件 D:ORADATASTUDYARCHARC00045_0639422393.001 存在于磁盘上 通道 ORA_AUX_DISK_1: 正在启动到默认目标的存档日志恢复 通道 ORA_AUX_DISK_1: 正在恢复存档日志 存档日志线程 =1 序列=40 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8HJ26N4K_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8HJ26N4K_1_1 标记 = TAG20071128T163427 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01 存档日志文件名 =D:ORACLE10RDBMSARC00040_0639422393.001 线程 =1 序列 =40 通道 clone_default: 正在删除存档日志 存档日志文件名 =D:ORACLE10RDBMSARC00040_0639422393.001 记录 ID=174 时间戳 =639853431 存档日志文件名 =D:ORADATASTUDYARCHARC00041_0639422393.001 线程 =1 序列 =41 存档日志文件名 =D:ORADATASTUDYARCHARC00042_0639422393.001 线程 =1 序列 =42 存档日志文件名 =D:ORADATASTUDYARCHARC00043_0639422393.001 线程 =1 序列 =43 存档日志文件名 =D:ORADATASTUDYARCHARC00044_0639422393.001 线程 =1 序列 =44 存档日志文件名 =D:ORADATASTUDYARCHARC00045_0639422393.001 线程 =1 序列 =45 介质恢复完成, 用时: 00:00:05 于 28-11月-07 数据库已打开 内存脚本的内容: { #mark read only the tablespace that will be exported sql clone "alter tablespace TRANS read only"; # create directory for datapump export sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as '' D:oradatatoms''"; # export the tablespaces in the recovery set host 'expdp userid="/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV 0=oracleBjpl)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^ 'ORACLE_SID=Bjpl^'))(CONNECT_DATA=(SID=Bjpl))) as sysdba" transport_tablespaces =TRANS dumpfile=trans.dmp directory=STREAMS_DIROBJ_DPDIR logfile=exp_trans.log'; } 正在执行内存脚本 sql 语句: alter tablespace TRANS read only sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''D:oradatatoms'' Export: Release 10.2.0.3.0 - Production on 星期三, 28 11月, 2007 17:04:37 Copyright (c) 2003, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options 启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01": userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq) (PROGRAM=oracle)(ARGV0=oracleBjpl)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))') (ENVS='ORACLE_SID=Bjpl'))(CONNECT_DATA=(SID=Bjpl))) AS SYSDBA" transport_tablespaces= TRANS dumpfile=trans.dmp directory=STREAMS_DIROBJ_DPDIR logfile=exp_trans.log 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK 处理对象类型 TRANSPORTABLE_EXPORT/TABLE 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK 已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" ****************************************************************************** SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为: D:ORADATATOMSTRANS.DMP 作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 17:05:49 成功完成 主机命令完成 /* The following command may be used to import the tablespaces. Substitute values for and . impdp directory= dumpfile= 'trans.dmp' transport_datafiles= D:oradatatomsTRANS.DBF */ -------------------------------------------------------------- -- Start of sample PL/SQL script for importing the tablespaces -------------------------------------------------------------- -- creating directory objects CREATE DIRECTORY STREAMS$DIROBJ$1 AS 'D:oradatatoms'; CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS 'D:oradatatoms'; /* 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 := 'trans.dmp'; dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR'; -- forming list of datafiles for import tbs_files( 1).file_name := 'TRANS.DBF'; tbs_files( 1).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 -------------------------------------------------------------- 删除自动实例 关闭自动实例 Oracle 实例已关闭 自动实例已删除 已删除辅助实例文件 D:ORADATATOMSCNTRL_TSPITR_STUDY_BJPL.F 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSTEM_3NTCN26T_.DBF 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_UNDOTBS1_3NTCQ6Y8_.DBF 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSAUX_3NTCOSSD_.DBF 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_TEMP_3NTCRD1G_.TMP 已删除辅助实例文件 D:ORADATATOMSTSPITR_SONLINELOGO1_MF_1_3NTCQYC7_.LOG 已删除辅助实例文件 D:ORADATATOMSTSPITR_SONLINELOGO1_MF_2_3NTCR1VT_.LOG 已删除辅助实例文件 D:ORADATATOMSTSPITR_SONLINELOGO1_MF_3_3NTCR5CQ_.LOG RMAN>
步骤概要
1、用RMAN连接到源数据库和CATALOG数据库(如果有)
2、RMAN自动创建辅助实例(包含SYSTEM、UNDO和要传输的表空间)
3、RMAN通过辅助实例恢复到point in time
4、RMAN利用expdp工具生成dumpfile,dumpfile内容包含
-要传输的表空间对应的数据文件,
-要传输的表空间的metadata
-一个可以导入要传输的表空间的SQL脚本
5. 然后RMAN自动删除辅助实例。
测试过程
D:>rman target/ catalog rman/rman@px1a 恢复管理器: Release 10.2.0.3.0 - Production on 星期三 11月 28 17:00:15 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到目标数据库: STUDY (DBID=2656671914) 连接到恢复目录数据库 RMAN> run 2> { 3> TRANSPORT TABLESPACE 'TRANS' 4> TABLESPACE DESTINATION 'D:oradatatoms' 5> AUXILIARY DESTINATION 'D:oradatatoms' 6> DUMP FILE 'trans.dmp' 7> EXPORT LOG 'exp_trans.log' 8> IMPORT SCRIPT 'imp_trans.sql'; 9> }
注:这是整个过程中,我们唯一发出的RMAN COMMAND.
下面是这个命令的具体输出信息:
使用 SID='Bjpl' 创建自动实例 供自动实例使用的初始化参数: db_name=STUDY compatible=10.2.0.3.0 db_block_size=8192 db_files=200 db_unique_name=tspitr_STUDY_Bjpl large_pool_size=1M shared_pool_size=110M #No auxiliary parameter file used db_create_file_dest=D:oradatatoms control_files=D:oradatatoms/cntrl_tspitr_STUDY_Bjpl.f 启动自动实例 STUDY Oracle 实例已启动 系统全局区域总计 201326592 字节 Fixed Size 1289700 字节 Variable Size 146801180 字节 Database Buffers 50331648 字节 Redo Buffers 2904064 字节 自动实例已创建 内存脚本的内容: { # set the until clause set until scn 1014548; # 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; } 正在执行内存脚本 正在执行命令: SET until clause 于 28-11月-07 分配的通道: ORA_AUX_DISK_1 通道 ORA_AUX_DISK_1: sid=37 devtype=DISK 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在复原控制文件 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUPC-2656671914-20071128-0E 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUPC-2656671914-20071128-0E 标记 = TAG20071128T163432 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01 输出文件名=D:ORADATATOMSCNTRL_TSPITR_STUDY_BJPL.F 于 28-11月-07 sql 语句: alter database mount clone database sql 语句: alter system archive log current sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end; 正在启动全部恢复目录的 resync 完成全部 resync 释放的通道: ORA_AUX_DISK_1 内存脚本的内容: { # generated tablespace point-in-time recovery script # set the until clause set until scn 1014548; # 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 "D:oradatatomsTRANS.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; 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"; # make the controlfile point at the restored datafiles, then recover them recover clone database tablespace "TRANS", "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"; } 正在执行内存脚本 正在执行命令: SET until clause 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 临时文件 1 在控制文件中已重命名为 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_TEMP_%U_.TMP 于 28-11月-07 分配的通道: ORA_AUX_DISK_1 通道 ORA_AUX_DISK_1: sid=39 devtype=DISK 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00001恢复到D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSTEM_%U_.DBF 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8EJ26N21_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8EJ26N21_1_1 标记 = TAG20071128T163305 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:55 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00003恢复到D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSAUX_%U_.DBF 正将数据文件00006恢复到D:ORADATATOMSTRANS.DBF 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8FJ26N3F_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8FJ26N3F_1_1 标记 = TAG20071128T163305 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:45 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00002恢复到D:ORADATATOMSTSPITR_SDATAFILEO1_MF_UNDOTBS1_%U_.DBF 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8GJ26N48_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8GJ26N48_1_1 标记 = TAG20071128T163305 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:07 于 28-11月-07 数据文件 1 已转换成数据文件副本 输入数据文件副本 recid=37 stamp=639853422
文件名=D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSTEM_3NTCN26T_.DBF 数据文件 2 已转换成数据文件副本 输入数据文件副本 recid=38 stamp=639853422
文件名=D:ORADATATOMSTSPITR_SDATAFILEO1_MF_UNDOTBS1_3NTCQ6Y8_.DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 recid=39 stamp=639853423
文件名=D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSAUX_3NTCOSSD_.DBF 数据文件 6 已转换成数据文件副本 输入数据文件副本 recid=40 stamp=639853423
文件名=D:ORADATATOMSTRANS.DBF sql 语句: alter database datafile 1 online sql 语句: alter database datafile 2 online sql 语句: alter database datafile 3 online sql 语句: alter database datafile 6 online 于 28-11月-07 使用通道 ORA_AUX_DISK_1 正在开始介质的恢复 存档日志线程 1 序列 41 已作为文件 D:ORADATASTUDYARCHARC00041_0639422393.001 存在于磁盘上 存档日志线程 1 序列 42 已作为文件 D:ORADATASTUDYARCHARC00042_0639422393.001 存在于磁盘上 存档日志线程 1 序列 43 已作为文件 D:ORADATASTUDYARCHARC00043_0639422393.001 存在于磁盘上 存档日志线程 1 序列 44 已作为文件 D:ORADATASTUDYARCHARC00044_0639422393.001 存在于磁盘上 存档日志线程 1 序列 45 已作为文件 D:ORADATASTUDYARCHARC00045_0639422393.001 存在于磁盘上 通道 ORA_AUX_DISK_1: 正在启动到默认目标的存档日志恢复 通道 ORA_AUX_DISK_1: 正在恢复存档日志 存档日志线程 =1 序列=40 通道 ORA_AUX_DISK_1: 正在读取备份段 D:ORADATABACKUP8HJ26N4K_1_1 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = D:ORADATABACKUP8HJ26N4K_1_1 标记 = TAG20071128T163427 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01 存档日志文件名 =D:ORACLE10RDBMSARC00040_0639422393.001 线程 =1 序列 =40 通道 clone_default: 正在删除存档日志 存档日志文件名 =D:ORACLE10RDBMSARC00040_0639422393.001 记录 ID=174 时间戳 =639853431 存档日志文件名 =D:ORADATASTUDYARCHARC00041_0639422393.001 线程 =1 序列 =41 存档日志文件名 =D:ORADATASTUDYARCHARC00042_0639422393.001 线程 =1 序列 =42 存档日志文件名 =D:ORADATASTUDYARCHARC00043_0639422393.001 线程 =1 序列 =43 存档日志文件名 =D:ORADATASTUDYARCHARC00044_0639422393.001 线程 =1 序列 =44 存档日志文件名 =D:ORADATASTUDYARCHARC00045_0639422393.001 线程 =1 序列 =45 介质恢复完成, 用时: 00:00:05 于 28-11月-07 数据库已打开 内存脚本的内容: { #mark read only the tablespace that will be exported sql clone "alter tablespace TRANS read only"; # create directory for datapump export sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as '' D:oradatatoms''"; # export the tablespaces in the recovery set host 'expdp userid="/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV 0=oracleBjpl)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^ 'ORACLE_SID=Bjpl^'))(CONNECT_DATA=(SID=Bjpl))) as sysdba" transport_tablespaces =TRANS dumpfile=trans.dmp directory=STREAMS_DIROBJ_DPDIR logfile=exp_trans.log'; } 正在执行内存脚本 sql 语句: alter tablespace TRANS read only sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''D:oradatatoms'' Export: Release 10.2.0.3.0 - Production on 星期三, 28 11月, 2007 17:04:37 Copyright (c) 2003, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options 启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01": userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq) (PROGRAM=oracle)(ARGV0=oracleBjpl)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))') (ENVS='ORACLE_SID=Bjpl'))(CONNECT_DATA=(SID=Bjpl))) AS SYSDBA" transport_tablespaces= TRANS dumpfile=trans.dmp directory=STREAMS_DIROBJ_DPDIR logfile=exp_trans.log 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK 处理对象类型 TRANSPORTABLE_EXPORT/TABLE 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK 已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" ****************************************************************************** SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为: D:ORADATATOMSTRANS.DMP 作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 17:05:49 成功完成 主机命令完成 /* The following command may be used to import the tablespaces. Substitute values for and . impdp directory= dumpfile= 'trans.dmp' transport_datafiles= D:oradatatomsTRANS.DBF */ -------------------------------------------------------------- -- Start of sample PL/SQL script for importing the tablespaces -------------------------------------------------------------- -- creating directory objects CREATE DIRECTORY STREAMS$DIROBJ$1 AS 'D:oradatatoms'; CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS 'D:oradatatoms'; /* 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 := 'trans.dmp'; dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR'; -- forming list of datafiles for import tbs_files( 1).file_name := 'TRANS.DBF'; tbs_files( 1).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 -------------------------------------------------------------- 删除自动实例 关闭自动实例 Oracle 实例已关闭 自动实例已删除 已删除辅助实例文件 D:ORADATATOMSCNTRL_TSPITR_STUDY_BJPL.F 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSTEM_3NTCN26T_.DBF 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_UNDOTBS1_3NTCQ6Y8_.DBF 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_SYSAUX_3NTCOSSD_.DBF 已删除辅助实例文件 D:ORADATATOMSTSPITR_SDATAFILEO1_MF_TEMP_3NTCRD1G_.TMP 已删除辅助实例文件 D:ORADATATOMSTSPITR_SONLINELOGO1_MF_1_3NTCQYC7_.LOG 已删除辅助实例文件 D:ORADATATOMSTSPITR_SONLINELOGO1_MF_2_3NTCR1VT_.LOG 已删除辅助实例文件 D:ORADATATOMSTSPITR_SONLINELOGO1_MF_3_3NTCR5CQ_.LOG RMAN>
通过备份实现可传输表空间(TTS From Backup with RMAN)(4) |
作者 tomszrp 21:18 | ![]() ![]() ![]() |
到这里,RMAN的工作做完了,转到d:oradatatoms下,可以看到生成了我们需要的相应文件:
2007-11-28 17:05 106,496 TRANS.DMP 2007-11-28 17:01
最后我们打开目标数据库,利用impdp将TRANS表空间导入到目标数据库中: D:oradatatoms>set oracle_sid=test D:oradatatoms>sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 11月 29 11:22:19 2007 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 83886080 bytes Fixed Size 1289028 bytes Variable Size 67110076 bytes Database Buffers 12582912 bytes Redo Buffers 2904064 bytes 数据库装载完毕。 数据库已经打开。 SQL> create or replace directory trans_dir as 'D:oradatatoms'; 目录已创建。 SQL> exit 从 Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options 断开 D:oradatatoms> D:oradatatoms>copy D:oradatatomsTRANS.DBF D:oradatatestTRANS.DBF 已复制 1 个文件。 D:oradatatoms> D:oradatatoms>impdp userid='sys/admin@test as sysdba' directory=trans_dir dumpfile= 'trans.dmp' transport_datafiles= 'D:oradatatestTRANS.DBF' Import: Release 10.2.0.3.0 - Production on 星期四, 29 11月, 2007 11:31:26 Copyright (c) 2003, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options 已成功加载/卸载了主表 "SYS"."SYS_IMPORT_TRANSPORTABLE_02" 启动 "SYS"."SYS_IMPORT_TRANSPORTABLE_02": userid='sys/********@test AS SYSDBA' directory=trans_dir dumpfile= 'trans.dmp' transport_datafiles= 'D:oradatatest TRANS.DBF' 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK 处理对象类型 TRANSPORTABLE_EXPORT/TABLE 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK 作业 "SYS"."SYS_IMPORT_TRANSPORTABLE_02" 已于 11:35:48 成功完成 D:oradatatoms> D:oradatatoms> Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 Connected as SYS SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='TRANS'; TABLESPACE_NAME FILE_NAME ------------------ ---------------------------- SQL> SQL> drop directory trans_dir; Directory dropped SQL> select count(*) from study.test; COUNT(*) ---------- 1569 SQL> 好了,到这里表空间TRANS就被传输到了test这个数据库上了。需要注意的一点是,这个方法是从备份(而不是从联机表空间)中插入传输的表空间。因此,它将不是最新的. |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-1016634/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/82387/viewspace-1016634/