前面提到的传输表空间是手动的(http://www.linuxidc.com/Linux/2011-10/44972.htm),可以看到需要把表空间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
可传输表空间实战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
2.确认传输的表空间是否自包含(源数据库上面执行的操作)
- 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还需要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
使用可传输表空间的特性复制数据Oracle笔记:移动数据文件的方法总结相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)