前面提到的传输表空间是手动的,可以看到需要把表空间read only,如果使用rman则不需要,因为rman是利用的备份集。
OS | IP | SID | 存储方式 | 表空间 | 用户 | 表 | |
源数据库 | redhat5.4 | 10.10.10.7 | orcl | ASM | ttb1 | user1 |
test |
目标数据库 | redhat5.4 | 10.10.10.8 | orcl | 文件系统 | —— | user1 | —— |
下面给出创建测试环境的脚本(源数据库上面执行的操作)
- SQL> show user
- USER 为 "SYS"
- SQL> create tablespace ttb1 datafile '+datadg' size 10m;
- 表空间已创建。
- SQL> create user user1 identified by user1 default tablespace ttb1;
- 用户已创建。
- SQL> grant connect,resource to user1;
- 授权成功。
- SQL> create table user1.test as select * from dba_objects where rownum < 100;
- 表已创建。
- SQL> conn user1/user1
- 已连接。
- SQL> select * from tab;
- TNAME TABTYPE CLUSTERID
- ------------------------------ ------- ----------
- TEST TABLE
- SQL> select count(*) from test;
- COUNT(*)
- ----------
- 99
SQL> show user USER 为 "SYS" SQL> create tablespace ttb1 datafile '+datadg' size 10m; 表空间已创建。 SQL> create user user1 identified by user1 default tablespace ttb1; 用户已创建。 SQL> grant connect,resource to user1; 授权成功。 SQL> create table user1.test as select * from dba_objects where rownum < 100; 表已创建。 SQL> conn user1/user1 已连接。 SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- TEST TABLE SQL> select count(*) from test; COUNT(*) ---------- 99
可传输表空间实战
1.确认要传输表空间的平台是否兼容(源数据库和目标数据库上面都一样,因为都是redhat5.4的OS)
- SQL> select tp.* from v$transportable_platform tp,v$database d where tp.PLATFORM_NAME = d.PLATFORM_NAME;
- PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
- ----------- ---------------------------------------- --------------
- 10 Linux IA (32-bit) Little
SQL> select tp.* from v$transportable_platform tp,v$database d where tp.PLATFORM_NAME = d.PLATFORM_NAME; PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT ----------- ---------------------------------------- -------------- 10 Linux IA (32-bit) Little
2.确认传输的表空间是否自包含(源数据库上面执行的操作)
- SQL> exec dbms_tts.transport_set_check('ttb1',true,true);
- PL/SQL 过程已成功完成。
- SQL> select * from transport_set_violations;
- 未选定行
SQL> exec dbms_tts.transport_set_check('ttb1',true,true); PL/SQL 过程已成功完成。 SQL> select * from transport_set_violations; 未选定行
3.备份数据库(源数据库上面执行的操作)
- RMAN> sql "alter system checkpoint";
- sql 语句: alter system checkpoint
- RMAN> sql "alter system archive log current";
- sql 语句: alter system archive log current
- RMAN> sql "alter system switch logfile";
- sql 语句: alter system switch logfile
- RMAN> backup database;
- 启动 backup 于 07-10月-11
- 使用通道 ORA_DISK_1
- 通道 ORA_DISK_1: 启动全部数据文件备份集
- 通道 ORA_DISK_1: 正在指定备份集中的数据文件
- 输入数据文件 fno=00001 name=+DATADG/orcl/datafile/system.260.762322843
- 输入数据文件 fno=00002 name=+DATADG/orcl/datafile/undotbs1.261.762322855
- 输入数据文件 fno=00003 name=+DATADG/orcl/datafile/sysaux.262.762322857
- 输入数据文件 fno=00005 name=+DATADG/orcl/datafile/tb1.267.763910145
- 输入数据文件 fno=00006 name=+DATADG/orcl/datafile/tb2.268.763910201
- 输入数据文件 fno=00007 name=+DATADG/orcl/datafile/ttb1.269.763916007
- 输入数据文件 fno=00004 name=+DATADG/orcl/datafile/users.264.762322865
- 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
- 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
- 段句柄=+FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记=TAG20111007T154253 注释=NONE
- 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
- 通道 ORA_DISK_1: 启动全部数据文件备份集
- 通道 ORA_DISK_1: 正在指定备份集中的数据文件
- 备份集中包括当前控制文件
- 在备份集中包含当前的 SPFILE
- 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
- 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
- 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记=TAG20111007T154253 注释=NONE
- 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
- 完成 backup 于 07-10月-11
- RMAN> backup archivelog all;
- 启动 backup 于 07-10月-11
- 当前日志已存档
- 使用通道 ORA_DISK_1
- 通道 ORA_DISK_1: 正在启动存档日志备份集
- 通道 ORA_DISK_1: 正在指定备份集中的存档日志
- 输入存档日志线程 =1 序列 =29 记录 ID=1 时间戳=762324929
- 输入存档日志线程 =1 序列 =30 记录 ID=2 时间戳=762374199
- 输入存档日志线程 =1 序列 =31 记录 ID=3 时间戳=762886152
- 输入存档日志线程 =1 序列 =32 记录 ID=4 时间戳=763918707
- 输入存档日志线程 =1 序列 =33 记录 ID=5 时间戳=763918939
- 输入存档日志线程 =1 序列 =34 记录 ID=6 时间戳=763918951
- 输入存档日志线程 =1 序列 =35 记录 ID=7 时间戳=763919033
- 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
- 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
- 段句柄=+FLSHDG/orcl/backupset/2011_10_07/annnf0_tag20111007t154353_0.268.763919035 标记=TAG20111007T154353 注释=NONE
- 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
- 完成 backup 于 07-10月-11
- RMAN> backup current controlfile;
- 启动 backup 于 07-10月-11
- 使用通道 ORA_DISK_1
- 通道 ORA_DISK_1: 启动全部数据文件备份集
- 通道 ORA_DISK_1: 正在指定备份集中的数据文件
- 备份集中包括当前控制文件
- 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
- 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
- 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncnnf0_tag20111007t154419_0.269.763919061 标记=TAG20111007T154419 注释=NONE
- 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
- 完成 backup 于 07-10月-11
RMAN> sql "alter system checkpoint"; sql 语句: alter system checkpoint RMAN> sql "alter system archive log current"; sql 语句: alter system archive log current RMAN> sql "alter system switch logfile"; sql 语句: alter system switch logfile RMAN> backup database; 启动 backup 于 07-10月-11 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件 fno=00001 name=+DATADG/orcl/datafile/system.260.762322843 输入数据文件 fno=00002 name=+DATADG/orcl/datafile/undotbs1.261.762322855 输入数据文件 fno=00003 name=+DATADG/orcl/datafile/sysaux.262.762322857 输入数据文件 fno=00005 name=+DATADG/orcl/datafile/tb1.267.763910145 输入数据文件 fno=00006 name=+DATADG/orcl/datafile/tb2.268.763910201 输入数据文件 fno=00007 name=+DATADG/orcl/datafile/ttb1.269.763916007 输入数据文件 fno=00004 name=+DATADG/orcl/datafile/users.264.762322865 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11 段句柄=+FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记=TAG20111007T154253 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 备份集中包括当前控制文件 在备份集中包含当前的 SPFILE 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记=TAG20111007T154253 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03 完成 backup 于 07-10月-11 RMAN> backup archivelog all; 启动 backup 于 07-10月-11 当前日志已存档 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在启动存档日志备份集 通道 ORA_DISK_1: 正在指定备份集中的存档日志 输入存档日志线程 =1 序列 =29 记录 ID=1 时间戳=762324929 输入存档日志线程 =1 序列 =30 记录 ID=2 时间戳=762374199 输入存档日志线程 =1 序列 =31 记录 ID=3 时间戳=762886152 输入存档日志线程 =1 序列 =32 记录 ID=4 时间戳=763918707 输入存档日志线程 =1 序列 =33 记录 ID=5 时间戳=763918939 输入存档日志线程 =1 序列 =34 记录 ID=6 时间戳=763918951 输入存档日志线程 =1 序列 =35 记录 ID=7 时间戳=763919033 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11 段句柄=+FLSHDG/orcl/backupset/2011_10_07/annnf0_tag20111007t154353_0.268.763919035 标记=TAG20111007T154353 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04 完成 backup 于 07-10月-11 RMAN> backup current controlfile; 启动 backup 于 07-10月-11 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 备份集中包括当前控制文件 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncnnf0_tag20111007t154419_0.269.763919061 标记=TAG20111007T154419 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02 完成 backup 于 07-10月-11
说明:这里使用全库备份,因为除了目标表空间的备份以外,RMAN还需要SYSTEM、SYSAUX以及UNDO表空间的备份,如果任意一个表空间的备份不存在,则就会导致“RMAN-06019: 无法转换表空间名称"TTB1"”的错误。
4.生成传输集(源数据库上面执行的操作)
- RMAN> transport tablespace ttb1 tablespace destination '/u01/td' auxiliary destination '/u01/ad';
- RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点
- 表空间列表要求具有 UNDO 段
- 表空间 SYSTEM
- 表空间 UNDOTBS1
- 使用 SID='hiEo' 创建自动实例
- 供自动实例使用的初始化参数:
- db_name=ORCL
- compatible=10.2.0.3.0
- db_block_size=8192
- db_files=200
- db_unique_name=tspitr_ORCL_hiEo
- large_pool_size=1M
- shared_pool_size=110M
- #No auxiliary parameter file used
- db_create_file_dest=/u01/ad
- control_files=/u01/ad/cntrl_tspitr_ORCL_hiEo.f
- 启动自动实例 ORCL
- Oracle 实例已启动
- 系统全局区域总计 201326592 字节
- Fixed Size 1266584 字节
- Variable Size 146803816 字节
- Database Buffers 50331648 字节
- Redo Buffers 2924544 字节
- 自动实例已创建
- 内存脚本的内容:
- {
- # set the until clause
- set until scn 973897;
- # 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;';
- }
- 正在执行内存脚本
- 正在执行命令: SET until clause
- 启动 restore 于 07-10月-11
- 分配的通道: ORA_AUX_DISK_1
- 通道 ORA_AUX_DISK_1: sid=37 devtype=DISK
- 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
- 通道 ORA_AUX_DISK_1: 正在还原控制文件
- 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011
- 通道 ORA_AUX_DISK_1: 已还原备份片段 1
- 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记 = TAG20111007T154253
- 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:18
- 输出文件名=/u01/ad/cntrl_tspitr_ORCL_hiEo.f
- 完成 restore 于 07-10月-11
- sql 语句: alter database mount clone database
- sql 语句: alter system archive log current
- sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
- 释放的通道: ORA_DISK_1
- 释放的通道: ORA_AUX_DISK_1
- 内存脚本的内容:
- {
- # generated tablespace point-in-time recovery script
- # set the until clause
- set until scn 973897;
- # 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 7 to
- "/u01/td/ttb1.269.763916007";
- # rename all tempfiles
- switch clone tempfile all;
- # restore the tablespaces in the recovery set plus the auxilliary tablespaces
- restore clone datafile 1, 2, 3, 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 7 online";
- # make the controlfile point at the restored datafiles, then recover them
- recover clone database tablespace "TTB1", "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 在控制文件中已重命名为 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_%u_.tmp
- 启动 restore 于 07-10月-11
- 分配的通道: ORA_AUX_DISK_1
- 通道 ORA_AUX_DISK_1: sid=39 devtype=DISK
- 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
- 通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
- 正将数据文件00001还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_%u_.dbf
- 正将数据文件00002还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_%u_.dbf
- 正将数据文件00003还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_%u_.dbf
- 正将数据文件00007还原到/u01/td/ttb1.269.763916007
- 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973
- 通道 ORA_AUX_DISK_1: 已还原备份片段 1
- 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记 = TAG20111007T154253
- 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:36
- 完成 restore 于 07-10月-11
- 数据文件 1 已转换成数据文件副本
- 输入数据文件副本 recid=5 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf
- 数据文件 2 已转换成数据文件副本
- 输入数据文件副本 recid=6 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf
- 数据文件 3 已转换成数据文件副本
- 输入数据文件副本 recid=7 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf
- 数据文件 7 已转换成数据文件副本
- 输入数据文件副本 recid=8 stamp=763919178 文件名=/u01/td/ttb1.269.763916007
- sql 语句: alter database datafile 1 online
- sql 语句: alter database datafile 2 online
- sql 语句: alter database datafile 3 online
- sql 语句: alter database datafile 7 online
- 启动 recover 于 07-10月-11
- 使用通道 ORA_AUX_DISK_1
- 正在开始介质的恢复
- 存档日志线程 1 序列 35 已作为文件 +FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 存在于磁盘上
- 存档日志文件名 =+FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 线程 =1 序列 =35
- 介质恢复完成, 用时: 00:00:02
- 完成 recover 于 07-10月-11
- 数据库已打开
- 内存脚本的内容:
- {
- #mark read only the tablespace that will be exported
- sql clone "alter tablespace TTB1 read only";
- # create directory for datapump export
- sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ''
- /u01/td''";
- # export the tablespaces in the recovery set
- host 'expdp userid="/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'ORACLE_SID=hiEo^'))(CONNECT_DATA=(SID=hiEo))) as sysdba" transport_tablespaces=
- TTB1 dumpfile=
- dmpfile.dmp directory=
- STREAMS_DIROBJ_DPDIR logfile=
- explog.log';
- }
- 正在执行内存脚本
- sql 语句: alter tablespace TTB1 read only
- sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''/u01/td''
- Export: Release 10.2.0.4.0 - Production on 星期五, 07 10月, 2011 15:46:44
- Copyright (c) 2003, 2007, Oracle. All rights reserved.
- 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- 启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01": userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))))(ENVS=ORACLE_SID=hiEo))(CONNECT_DATA=(SID=hiEo))) AS SYSDBA" transport_tablespaces= TTB1 dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDIR logfile=explog.log
- 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
- 处理对象类型 TRANSPORTABLE_EXPORT/TABLE
- 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
- 已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"
- ******************************************************************************
- SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
- /u01/td/dmpfile.dmp
- 作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 15:47:14 成功完成
- 主机命令完成
- /*
- The following command may be used to import the tablespaces.
- Substitute values for <logon> and <directory>.
- impdp <logon> directory=<directory> dumpfile= 'dmpfile.dmp' transport_datafiles= /u01/td/ttb1.269.763916007
- */
- --------------------------------------------------------------
- -- Start of sample PL/SQL script for importing the tablespaces
- --------------------------------------------------------------
- -- creating directory objects
- CREATE DIRECTORY STREAMS$DIROBJ$1 AS '/u01/td/';
- CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS '/u01/td';
- /* 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 := 'ttb1.269.763916007';
- 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 实例已关闭
- 自动实例已删除
- 已删除辅助实例文件 /u01/ad/cntrl_tspitr_ORCL_hiEo.f
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_78xclrd5_.tmp
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_1_78xclmkj_.log
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_2_78xclnjl_.log
- 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_3_78xclnxc_.log
RMAN> transport tablespace ttb1 tablespace destination '/u01/td' auxiliary destination '/u01/ad'; RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点 表空间列表要求具有 UNDO 段 表空间 SYSTEM 表空间 UNDOTBS1 使用 SID='hiEo' 创建自动实例 供自动实例使用的初始化参数: db_name=ORCL compatible=10.2.0.3.0 db_block_size=8192 db_files=200 db_unique_name=tspitr_ORCL_hiEo large_pool_size=1M shared_pool_size=110M #No auxiliary parameter file used db_create_file_dest=/u01/ad control_files=/u01/ad/cntrl_tspitr_ORCL_hiEo.f 启动自动实例 ORCL Oracle 实例已启动 系统全局区域总计 201326592 字节 Fixed Size 1266584 字节 Variable Size 146803816 字节 Database Buffers 50331648 字节 Redo Buffers 2924544 字节 自动实例已创建 内存脚本的内容: { # set the until clause set until scn 973897; # 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;'; } 正在执行内存脚本 正在执行命令: SET until clause 启动 restore 于 07-10月-11 分配的通道: ORA_AUX_DISK_1 通道 ORA_AUX_DISK_1: sid=37 devtype=DISK 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在还原控制文件 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 通道 ORA_AUX_DISK_1: 已还原备份片段 1 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记 = TAG20111007T154253 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:18 输出文件名=/u01/ad/cntrl_tspitr_ORCL_hiEo.f 完成 restore 于 07-10月-11 sql 语句: alter database mount clone database sql 语句: alter system archive log current sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end; 释放的通道: ORA_DISK_1 释放的通道: ORA_AUX_DISK_1 内存脚本的内容: { # generated tablespace point-in-time recovery script # set the until clause set until scn 973897; # 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 7 to "/u01/td/ttb1.269.763916007"; # rename all tempfiles switch clone tempfile all; # restore the tablespaces in the recovery set plus the auxilliary tablespaces restore clone datafile 1, 2, 3, 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 7 online"; # make the controlfile point at the restored datafiles, then recover them recover clone database tablespace "TTB1", "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 在控制文件中已重命名为 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_%u_.tmp 启动 restore 于 07-10月-11 分配的通道: ORA_AUX_DISK_1 通道 ORA_AUX_DISK_1: sid=39 devtype=DISK 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件 正将数据文件00001还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_%u_.dbf 正将数据文件00002还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_%u_.dbf 正将数据文件00003还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_%u_.dbf 正将数据文件00007还原到/u01/td/ttb1.269.763916007 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 通道 ORA_AUX_DISK_1: 已还原备份片段 1 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记 = TAG20111007T154253 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:36 完成 restore 于 07-10月-11 数据文件 1 已转换成数据文件副本 输入数据文件副本 recid=5 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf 数据文件 2 已转换成数据文件副本 输入数据文件副本 recid=6 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf 数据文件 3 已转换成数据文件副本 输入数据文件副本 recid=7 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf 数据文件 7 已转换成数据文件副本 输入数据文件副本 recid=8 stamp=763919178 文件名=/u01/td/ttb1.269.763916007 sql 语句: alter database datafile 1 online sql 语句: alter database datafile 2 online sql 语句: alter database datafile 3 online sql 语句: alter database datafile 7 online 启动 recover 于 07-10月-11 使用通道 ORA_AUX_DISK_1 正在开始介质的恢复 存档日志线程 1 序列 35 已作为文件 +FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 存在于磁盘上 存档日志文件名 =+FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 线程 =1 序列 =35 介质恢复完成, 用时: 00:00:02 完成 recover 于 07-10月-11 数据库已打开 内存脚本的内容: { #mark read only the tablespace that will be exported sql clone "alter tablespace TTB1 read only"; # create directory for datapump export sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as '' /u01/td''"; # export the tablespaces in the recovery set host 'expdp userid="/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'ORACLE_SID=hiEo^'))(CONNECT_DATA=(SID=hiEo))) as sysdba" transport_tablespaces= TTB1 dumpfile= dmpfile.dmp directory= STREAMS_DIROBJ_DPDIR logfile= explog.log'; } 正在执行内存脚本 sql 语句: alter tablespace TTB1 read only sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''/u01/td'' Export: Release 10.2.0.4.0 - Production on 星期五, 07 10月, 2011 15:46:44 Copyright (c) 2003, 2007, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01": userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))))(ENVS=ORACLE_SID=hiEo))(CONNECT_DATA=(SID=hiEo))) AS SYSDBA" transport_tablespaces= TTB1 dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDIR logfile=explog.log 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK 处理对象类型 TRANSPORTABLE_EXPORT/TABLE 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK 已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" ****************************************************************************** SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为: /u01/td/dmpfile.dmp 作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 15:47:14 成功完成 主机命令完成 /* The following command may be used to import the tablespaces. Substitute values for <logon> and <directory>. impdp <logon> directory=<directory> dumpfile= 'dmpfile.dmp' transport_datafiles= /u01/td/ttb1.269.763916007 */ -------------------------------------------------------------- -- Start of sample PL/SQL script for importing the tablespaces -------------------------------------------------------------- -- creating directory objects CREATE DIRECTORY STREAMS$DIROBJ$1 AS '/u01/td/'; CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS '/u01/td'; /* 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 := 'ttb1.269.763916007'; 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 实例已关闭 自动实例已删除 已删除辅助实例文件 /u01/ad/cntrl_tspitr_ORCL_hiEo.f 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_78xclrd5_.tmp 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_1_78xclmkj_.log 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_2_78xclnjl_.log 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_3_78xclnxc_.log
说明:可以看见“/u01/ad/”目录下面的东西ramn最后自动删除了的,这个目录只是一个临时目录的作用。查看一下“/u01/td/”目录
- [oracle@linux td]$ pwd
- /u01/td
- [oracle@linux td]$ ll
- 总计 10352
- -rw-r----- 1 oracle oinstall 77824 10-07 15:47 dmpfile.dmp
- -rw-r--r-- 1 oracle oinstall 1110 10-07 15:47 explog.log
- -rw-r--r-- 1 oracle oinstall 2042 10-07 15:47 impscrpt.sql
- -rw-r----- 1 oracle oinstall 10493952 10-07 15:46 ttb1.269.763916007
[oracle@linux td]$ pwd /u01/td [oracle@linux td]$ ll 总计 10352 -rw-r----- 1 oracle oinstall 77824 10-07 15:47 dmpfile.dmp -rw-r--r-- 1 oracle oinstall 1110 10-07 15:47 explog.log -rw-r--r-- 1 oracle oinstall 2042 10-07 15:47 impscrpt.sql -rw-r----- 1 oracle oinstall 10493952 10-07 15:46 ttb1.269.763916007
impscrpt.sql --元数据信息,目标数据库必须存在相应的对象属主,数据文件路径不一致还要修改脚本。
dmpfile.dmp --也是元数据信息,如果使用dump文件导入元数据信息则就没有上面的限制了。
ttb1.269.763916007 --数据文件,可以发现生成的数据文件和原来的数据文件一模一样。
explog.log --导出操作的日志文件。
5.转换字节顺序,如果两个平台的字节顺序不一样,中间需要一个转换过程,可以使用rman。(可选操作,这里并没有执行。)
- RMAN> convert tablespace books to platform 'Microsoft Windows IA (32-bit)' format '/tmp/%N_%F';
- RMAN> convert datafile '/tmp/BOOKS_5' db_file_name_convert '/tmp/BOOKS_5','/tmp/books01.dbf';
RMAN> convert tablespace books to platform 'Microsoft Windows IA (32-bit)' format '/tmp/%N_%F'; RMAN> convert datafile '/tmp/BOOKS_5' db_file_name_convert '/tmp/BOOKS_5','/tmp/books01.dbf';
说明:这就是第一步检查的目的,虽然这里并不需要转换。这里给出的只是转换的方法。