前言 在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/
10gR2 TTS
162

被折叠的 条评论
为什么被折叠?



