前面提到的传输表空间是手动的,可以看到需要把表空间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

——

下面给出创建测试环境的脚本(源数据库上面执行的操作)



1. SQL> show user  
2. USER 为 "SYS"
3. SQL> create tablespace ttb1 datafile '+datadg' size 10m;
4.
5. 表空间已创建。
6.
7. SQL> create user user1 identified by user1 default tablespace ttb1;
8.
9. 用户已创建。
10.
11. SQL> grant connect,resource to user1;
12.
13. 授权成功。
14.
15. SQL> create table user1.test as select * from dba_objects where rownum < 100;
16.
17. 表已创建。
18.
19. SQL> conn user1/user1
20. 已连接。
21. SQL> select * from tab;
22.
23. TNAME TABTYPE CLUSTERID
24. ------------------------------ ------- ----------
25. TEST TABLE
26.
27. SQL> select count(*) from test;
28.
29. COUNT(*)
30. ----------
31. 99

 

可传输表空间实战

1.确认要传输表空间的平台是否兼容(源数据库和目标数据库上面都一样,因为都是redhat5.4的OS)


1. SQL> select tp.* from v$transportable_platform tp,v$database d where tp.PLATFORM_NAME = d.PLATFORM_NAME;  
2.
3. PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
4. ----------- ---------------------------------------- --------------
5. bit) Little


2.确认传输的表空间是否自包含(源数据库上面执行的操作)


1. SQL> exec dbms_tts.transport_set_check('ttb1',true,true);  
2.
3. PL/SQL 过程已成功完成。
4.
5. SQL> select * from transport_set_violations;
6.
7. 未选定行

 

3.备份数据库(源数据库上面执行的操作)


1. RMAN> sql "alter system checkpoint";  
2.
3. sql 语句: alter system checkpoint
4.
5. RMAN> sql "alter system archive log current";
6.
7. sql 语句: alter system archive log current
8.
9. RMAN> sql "alter system switch logfile";
10.
11. sql 语句: alter system switch logfile
12.
13. RMAN> backup database;
14.
15. 启动 backup 于 07-10月-11
16. 使用通道 ORA_DISK_1
17. 通道 ORA_DISK_1: 启动全部数据文件备份集
18. 通道 ORA_DISK_1: 正在指定备份集中的数据文件
19. 输入数据文件 fno=00001 name=+DATADG/orcl/datafile/system.260.762322843
20. 输入数据文件 fno=00002 name=+DATADG/orcl/datafile/undotbs1.261.762322855
21. 输入数据文件 fno=00003 name=+DATADG/orcl/datafile/sysaux.262.762322857
22. 输入数据文件 fno=00005 name=+DATADG/orcl/datafile/tb1.267.763910145
23. 输入数据文件 fno=00006 name=+DATADG/orcl/datafile/tb2.268.763910201
24. 输入数据文件 fno=00007 name=+DATADG/orcl/datafile/ttb1.269.763916007
25. 输入数据文件 fno=00004 name=+DATADG/orcl/datafile/users.264.762322865
26. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
27. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
28. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记=TAG20111007T154253 注释=NONE
29. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
30. 通道 ORA_DISK_1: 启动全部数据文件备份集
31. 通道 ORA_DISK_1: 正在指定备份集中的数据文件
32. 备份集中包括当前控制文件
33. 在备份集中包含当前的 SPFILE
34. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
35. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
36. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记=TAG20111007T154253 注释=NONE
37. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
38. 完成 backup 于 07-10月-11
39.
40. RMAN> backup archivelog all;
41.
42. 启动 backup 于 07-10月-11
43. 当前日志已存档
44. 使用通道 ORA_DISK_1
45. 通道 ORA_DISK_1: 正在启动存档日志备份集
46. 通道 ORA_DISK_1: 正在指定备份集中的存档日志
47. 输入存档日志线程 =1 序列 =29 记录 ID=1 时间戳=762324929
48. 输入存档日志线程 =1 序列 =30 记录 ID=2 时间戳=762374199
49. 输入存档日志线程 =1 序列 =31 记录 ID=3 时间戳=762886152
50. 输入存档日志线程 =1 序列 =32 记录 ID=4 时间戳=763918707
51. 输入存档日志线程 =1 序列 =33 记录 ID=5 时间戳=763918939
52. 输入存档日志线程 =1 序列 =34 记录 ID=6 时间戳=763918951
53. 输入存档日志线程 =1 序列 =35 记录 ID=7 时间戳=763919033
54. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
55. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
56. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/annnf0_tag20111007t154353_0.268.763919035 标记=TAG20111007T154353 注释=NONE
57. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
58. 完成 backup 于 07-10月-11
59.
60. RMAN> backup current controlfile;
61.
62. 启动 backup 于 07-10月-11
63. 使用通道 ORA_DISK_1
64. 通道 ORA_DISK_1: 启动全部数据文件备份集
65. 通道 ORA_DISK_1: 正在指定备份集中的数据文件
66. 备份集中包括当前控制文件
67. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
68. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
69. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncnnf0_tag20111007t154419_0.269.763919061 标记=TAG20111007T154419 注释=NONE
70. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
71. 完成 backup 于 07-10月-11

说明:这里使用全库备份,因为除了目标表空间的备份以外,RMAN还需要SYSTEM、SYSAUX以及UNDO表空间的备份,如果任意一个表空间的备份不存在,则就会导致“RMAN-06019: 无法转换表空间名称"TTB1"”的错误。

4.生成传输集(源数据库上面执行的操作)


1. RMAN> transport tablespace ttb1 tablespace destination '/u01/td' auxiliary destination '/u01/ad';  
2.
3. RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点
4.
5. 表空间列表要求具有 UNDO 段
6. 表空间 SYSTEM
7. 表空间 UNDOTBS1
8.
9. 使用 SID='hiEo' 创建自动实例
10.
11. 供自动实例使用的初始化参数:
12. db_name=ORCL
13. compatible=10.2.0.3.0
14. db_block_size=8192
15. db_files=200
16. db_unique_name=tspitr_ORCL_hiEo
17. large_pool_size=1M
18. shared_pool_size=110M
19. #No auxiliary parameter file used
20. db_create_file_dest=/u01/ad
21. control_files=/u01/ad/cntrl_tspitr_ORCL_hiEo.f
22.
23.
24. 启动自动实例 ORCL
25.
26. Oracle 实例已启动
27.
28. 系统全局区域总计 201326592 字节
29.
30. Fixed Size 1266584 字节
31. Variable Size 146803816 字节
32. Database Buffers 50331648 字节
33. Redo Buffers 2924544 字节
34. 自动实例已创建
35.
36. 内存脚本的内容:
37. {
38. # set the until clause
39. set until scn 973897;
40. # restore the controlfile
41. restore clone controlfile;
42. # mount the controlfile
43. sql clone 'alter database mount clone database';
44. # archive current online log for tspitr to a resent until time
45. sql 'alter system archive log current';
46. # avoid unnecessary autobackups for structural changes during TSPITR
47. sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
48. }
49. 正在执行内存脚本
50.
51. 正在执行命令: SET until clause
52.
53. 启动 restore 于 07-10月-11
54. 分配的通道: ORA_AUX_DISK_1
55. 通道 ORA_AUX_DISK_1: sid=37 devtype=DISK
56.
57. 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
58. 通道 ORA_AUX_DISK_1: 正在还原控制文件
59. 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011
60. 通道 ORA_AUX_DISK_1: 已还原备份片段 1
61. 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记 = TAG20111007T154253
62. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:18
63. 输出文件名=/u01/ad/cntrl_tspitr_ORCL_hiEo.f
64. 完成 restore 于 07-10月-11
65.
66. sql 语句: alter database mount clone database
67.
68. sql 语句: alter system archive log current
69.
70. sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
71. 释放的通道: ORA_DISK_1
72. 释放的通道: ORA_AUX_DISK_1
73.
74. 内存脚本的内容:
75. {
76. # generated tablespace point-in-time recovery script
77. # set the until clause
78. set until scn 973897;
79. # set an omf destination filename for restore
80. set newname for clone datafile 1 to new;
81. # set an omf destination filename for restore
82. set newname for clone datafile 2 to new;
83. # set an omf destination filename for restore
84. set newname for clone datafile 3 to new;
85. # set an omf destination tempfile
86. set newname for clone tempfile 1 to new;
87. # set a destination filename for restore
88. set newname for datafile 7 to
89. "/u01/td/ttb1.269.763916007";
90. # rename all tempfiles
91. switch clone tempfile all;
92. # restore the tablespaces in the recovery set plus the auxilliary tablespaces
93. restore clone datafile 1, 2, 3, 7;
94. switch clone datafile all;
95. #online the datafiles restored or flipped
96. sql clone "alter database datafile 1 online";
97. #online the datafiles restored or flipped
98. sql clone "alter database datafile 2 online";
99. #online the datafiles restored or flipped
100. sql clone "alter database datafile 3 online";
101. #online the datafiles restored or flipped
102. sql clone "alter database datafile 7 online";
103. # make the controlfile point at the restored datafiles, then recover them
104. recover clone database tablespace "TTB1", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;
105. alter clone database open resetlogs;
106. # PLUG HERE the creation of a temporary tablespace if export fails due to lack
107. # of temporary space.
108. # For example in Unix these two lines would do that:
109. #sql clone "create tablespace aux_tspitr_tmp
110. # datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
111. }
112. 正在执行内存脚本
113.
114. 正在执行命令: SET until clause
115.
116. 正在执行命令: SET NEWNAME
117.
118. 正在执行命令: SET NEWNAME
119.
120. 正在执行命令: SET NEWNAME
121.
122. 正在执行命令: SET NEWNAME
123.
124. 正在执行命令: SET NEWNAME
125.
126. 临时文件 1 在控制文件中已重命名为 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_%u_.tmp
127.
128. 启动 restore 于 07-10月-11
129. 分配的通道: ORA_AUX_DISK_1
130. 通道 ORA_AUX_DISK_1: sid=39 devtype=DISK
131.
132. 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
133. 通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
134. 正将数据文件00001还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_%u_.dbf
135. 正将数据文件00002还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_%u_.dbf
136. 正将数据文件00003还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_%u_.dbf
137. 正将数据文件00007还原到/u01/td/ttb1.269.763916007
138. 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973
139. 通道 ORA_AUX_DISK_1: 已还原备份片段 1
140. 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记 = TAG20111007T154253
141. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:36
142. 完成 restore 于 07-10月-11
143.
144. 数据文件 1 已转换成数据文件副本
145. 输入数据文件副本 recid=5 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf
146. 数据文件 2 已转换成数据文件副本
147. 输入数据文件副本 recid=6 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf
148. 数据文件 3 已转换成数据文件副本
149. 输入数据文件副本 recid=7 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf
150. 数据文件 7 已转换成数据文件副本
151. 输入数据文件副本 recid=8 stamp=763919178 文件名=/u01/td/ttb1.269.763916007
152.
153. sql 语句: alter database datafile 1 online
154.
155. sql 语句: alter database datafile 2 online
156.
157. sql 语句: alter database datafile 3 online
158.
159. sql 语句: alter database datafile 7 online
160.
161. 启动 recover 于 07-10月-11
162. 使用通道 ORA_AUX_DISK_1
163.
164. 正在开始介质的恢复
165.
166. 存档日志线程 1 序列 35 已作为文件 +FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 存在于磁盘上
167. 存档日志文件名 =+FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 线程 =1 序列 =35
168. 介质恢复完成, 用时: 00:00:02
169. 完成 recover 于 07-10月-11
170.
171. 数据库已打开
172.
173. 内存脚本的内容:
174. {
175. #mark read only the tablespace that will be exported
176. sql clone "alter tablespace TTB1 read only";
177. # create directory for datapump export
178. sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ''
179. /u01/td''";
180. # export the tablespaces in the recovery set
181. host 'expdp userid=\"/@DESCRIPTION=\(ADDRESS=\(PROTOCOL=beq
DESCRIPTION=\(ADDRESS=\(PROTOCOL=beqPROGRAM=/u01/app/oracle/product/10.2.0/db1/bin/oracle
PROGRAM=/u01/app/oracle/product/10.2.0/db1/bin/oracleARGV0=oraclehiEo
ARGV0=oraclehiEo\(ARGS=^'\(DESCRIPTION=\(LOCAL=YES\)ADDRESS=\(PROTOCOL=beq
ADDRESS=\(PROTOCOL=beq\)\)^'\)\(ENVS=^'ORACLE_SID=hiEo^'\)\)CONNECTDATA=\(SID=hiEo
CONNECTDATA=\(SID=hiEo\)\) as sysdba\" transport_tablespaces=
182. TTB1 dumpfile=
183. dmpfile.dmp directory=
184. STREAMS_DIROBJ_DPDIR logfile=
185. explog.log';
186. }
187. 正在执行内存脚本
188.
189. sql 语句: alter tablespace TTB1 read only
190.
191. sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''/u01/td''
192.
193.
194. Export: Release 10.2.0.4.0 - Production on 星期五, 07 10月, 2011 15:46:44
195.
196. Copyright (c) 2003, 2007, Oracle. All rights reserved.
197.
198. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
199. With the Partitioning, OLAP, Data Mining and Real Application Testing options
200. 启动 "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
DESCRIPTION=\(LOCAL=YESADDRESS=\(PROTOCOL=beq
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
201. 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
202. 处理对象类型 TRANSPORTABLE_EXPORT/TABLE
203. 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
204. 已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"
205. ******************************************************************************
206. SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
207. /u01/td/dmpfile.dmp
208. 作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 15:47:14 成功完成
209.
210. 主机命令完成
211. /*
212. to import the tablespaces.
213. values for <logon> and <directory>.
214. 'dmpfile.dmp' transport_datafiles= /u01/td/ttb1.269.763916007
215. */
216. --------------------------------------------------------------
217. -- Start of sample PL/SQL script for importing the tablespaces
218. --------------------------------------------------------------
219. -- creating directory objects
220. CREATE DIRECTORY STREAMS$DIROBJ$1 AS '/u01/td/';
221. CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS '/u01/td';
222. /* PL/SQL Script to import the exported tablespaces */
223. DECLARE
224. -- the datafiles
225. tbs_files dbms_streams_tablespace_adm.file_set;
226. cvt_files dbms_streams_tablespace_adm.file_set;
227. -- the dumpfile to import
228. dump_file dbms_streams_tablespace_adm.file;
229. NULL;
230. -- names of tablespaces that were imported
231. ts_names dbms_streams_tablespace_adm.tablespace_set;
232. BEGIN
233. -- dump file name and location
234. 'dmpfile.dmp';
235. 'STREAMS$DIROBJ$DPDIR';
236. -- forming list of datafiles for import
237. 'ttb1.269.763916007';
238. 'STREAMS$DIROBJ$1';
239. -- import tablespaces
240. dbms_streams_tablespace_adm.attach_tablespaces(
241. datapump_job_name => dp_job_name,
242. dump_file => dump_file,
243. tablespace_files => tbs_files,
244. converted_files => cvt_files,
245. tablespace_names => ts_names);
246. -- output names of imported tablespaces
247. IS NOT NULL AND ts_names.first IS NOT NULL THEN
248. FOR i IN ts_names.first .. ts_names.last LOOP
249. 'imported tablespace '|| ts_names(i));
250. END LOOP;
251. END IF;
252. END;
253. /
254. -- dropping directory objects
255. DROP DIRECTORY STREAMS$DIROBJ$1;
256. DROP DIRECTORY STREAMS$DIROBJ$DPDIR;
257. --------------------------------------------------------------
258. -- End of sample PL/SQL script
259. --------------------------------------------------------------
260.
261. 删除自动实例
262. 关闭自动实例
263. Oracle 实例已关闭
264. 自动实例已删除
265. 已删除辅助实例文件 /u01/ad/cntrl_tspitr_ORCL_hiEo.f
266. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf
267. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf
268. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf
269. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_78xclrd5_.tmp
270. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_1_78xclmkj_.log
271. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_2_78xclnjl_.log
272. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_3_78xclnxc_.log

说明:可以看见“/u01/ad/”目录下面的东西ramn最后自动删除了的,这个目录只是一个临时目录的作用。查看一下“/u01/td/”目录



1. [oracle@linux td]$ pwd  
2. /u01/td
3. [oracle@linux td]$ ll
4. 总计 10352
5. -rw-r----- 1 oracle oinstall 77824 10-07 15:47 dmpfile.dmp
6. -rw-r--r-- 1 oracle oinstall 1110 10-07 15:47 explog.log
7. -rw-r--r-- 1 oracle oinstall 2042 10-07 15:47 impscrpt.sql
8. -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。(可选操作,这里并没有执行。)


1. RMAN> convert tablespace books to platform 'Microsoft Windows IA (32-bit)' format '/tmp/%N_%F';    
2. RMAN> convert datafile '/tmp/BOOKS_5' db_file_name_convert '/tmp/BOOKS_5','/tmp/books01.dbf';


说明:这就是第一步检查的目的,虽然这里并不需要转换。这里给出的只是转换的方法。


 

6.复制/u01/td目录和数据文件到目标数据库/u01/td(目标数据库上面执行的操作)


1. [root@linux ~]# cd /u01/  
2. [root@linux u01]# chown -R oracle:oinstall td/
3. [root@linux u01]# cd td/
4. [root@linux td]# ll
5. 总计 10352
6. -rw-r--r-- 1 oracle oinstall 77824 10-06 15:50 dmpfile.dmp
7. -rw-r--r-- 1 oracle oinstall 1110 10-06 15:50 explog.log
8. -rw-r--r-- 1 oracle oinstall 2042 10-06 15:50 impscrpt.sql
9. -rw-r--r-- 1 oracle oinstall 10493952 10-06 15:50 ttb1.269.763916007


 


 


7.检查源表空间和目标数据库的块大小是否一样


源数据库


1. SQL> select block_size from dba_tablespaces where tablespace_name = 'TTB1';    
2.
3. BLOCK_SIZE
4. ----------
5. 8192
6.
7. SQL> show parameter db_block_size
8.
9. NAME TYPE VALUE
10. ------------------------------------ ----------- ------------------------------
11. db_block_size integer 8192

目标数据库



1. SQL> show parameter db_block_size    
2.
3. NAME TYPE VALUE
4. ------------------------------------ ----------- ------------------------------
5. db_block_size integer 8192



8.导入元数据(目标数据库上面执行的操作)


 a.使用asm存储体系,使用dump导入
   convert datafile '/opt/tts/td/tts.288.755520393' format '+datagroup';
   如果是使用的asm则需要把os上面的文件放到asm里面,上面这条命令可以在os和asm之间转换数据文件。
   impdp  ​​system/oracle@orcl​​ directory=dp dumpfile=dmpfile.dmp nologfile=y transport_datafiles='+DATAGROUP/ORCL/DATAFILE/TTS.290.755528197';
 b.使用文件系统,使用dump导入。
   impdp  ​​system/oracle@orcl​​ directory=dp dumpfile=dmpfile.dmp nologfile=y transport_datafiles='/opt/oradata/tts.288.755520393';
  c.@/opt/tts/td/impsctpt.sql
a、b、c选择一个执行就可以拉,这里我选择c


首先创建用户



1. SQL> show user  
2. USER 为 "SYS"
3. SQL> create user user1 identified by user1;
4.
5. 用户已创建。
6.
7. SQL> grant connect,resource to user1;
8.
9. 授权成功。



1. SQL> @/u01/td/impscrpt.sql  
2.
3. 目录已创建。
4.
5.
6. 目录已创建。
7.
8.
9. PL/SQL 过程已成功完成。
10.
11.
12. 目录已删除。
13.
14.
15. 目录已删除。



1. SQL> show user  
2. USER 为 "SYS"
3. SQL> alter user user1 default tablespace ttb1;
4.
5. 用户已更改。

 

9.刚导入的表空间默认是read-only 状态,将表空间更改为read write(目标数据库执行)


1. SQL> show user  
2. USER 为 "SYS"
3. SQL> select tablespace_name,status from dba_tablespaces where tablespace_name = 'TTB1';
4.
5. TABLESPACE_NAME STATUS
6. ------------------------------ ---------
7. TTB1 READ ONLY
8.
9. SQL> alter tablespace ttb1 read write;
10.
11. 表空间已更改。
12.
13. SQL> select tablespace_name,status from dba_tablespaces where tablespace_name = 'TTB1';
14.
15. TABLESPACE_NAME STATUS
16. ------------------------------ ---------
17. TTB1 ONLINE


1. SQL> conn user1/user1  
2. 已连接。
3. SQL> select * from tab;
4.
5. TNAME TABTYPE CLUSTERID
6. ------------------------------ ------- ----------
7. TEST TABLE
8.
9. SQL> select count(*) from test;
10.
11. COUNT(*)
12. ----------
13. 99


10.规范数据文件名字(目标数据库执行)


可以看见导入的数据文件的存放路径和名字不太规范


1. USER 为 "SYS"  
2. SQL> select file_name from dba_data_files;
3.
4. FILE_NAME
5. -------------------------------------------------------------------
6. /u01/app/oracle/oradata/orcl/system01.dbf
7. /u01/app/oracle/oradata/orcl/undotbs01.dbf
8. /u01/app/oracle/oradata/orcl/sysaux01.dbf
9. /u01/app/oracle/oradata/orcl/users01.dbf
10. /u01/app/oracle/oradata/orcl/test01.dbf
11. /u01/app/oracle/oradata/orcl/perfstat01.dba
12. /u01/app/oracle/oradata/orcl/undo01.dbf
13. /u01/app/oracle/oradata/orcl/tbspart01.dbf
14. /u01/app/oracle/oradata/orcl/tbspart02.dbf
15. /u01/app/oracle/oradata/orcl/tbspart03.dbf
16. /u01/app/oracle/oradata/orcl/tbspart04.dbf
17.
18. FILE_NAME
19. --------------------------------------------------------------------
20. /u01/app/oracle/oradata/orcl/tb1.dbf
21. /u01/app/oracle/oradata/orcl/tb2.dbf
22. /u01/td/ttb1.269.763916007
23.
24. 已选择14行。

使用rman移动数据库文件


1. RMAN> backup as copy datafile '/u01/td/ttb1.269.763916007' format '/u01/app/oracle/oradata/orcl/ttb1.dbf';  
2.
3. 启动 backup 于 06-10月-11
4. 使用目标数据库控制文件替代恢复目录
5. 分配的通道: ORA_DISK_1
6. 通道 ORA_DISK_1: sid=143 devtype=DISK
7. 通道 ORA_DISK_1: 启动数据文件副本
8. 输入数据文件 fno=00014 name=/u01/td/ttb1.269.763916007
9. 输出文件名 = /u01/app/oracle/oradata/orcl/ttb1.dbf 标记 = TAG20111006T161958 recid = 1 时间戳 = 763834799
10. 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
11. 完成 backup 于 06-10月-11
12.
13. RMAN> sql "alter tablespace ttb1 offline";
14.
15. sql 语句: alter tablespace ttb1 offline
16.
17. RMAN> switch datafile '/u01/td/ttb1.269.763916007' to copy;
18.
19. RMAN> sql "alter tablespace ttb1 online";
20.
21. sql 语句: alter tablespace ttb1 online
22. MAN-00571: ===========================================================
23. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
24. RMAN-00571: ===========================================================
25. RMAN-03009: sql 命令 (default 通道上, 在 10/06/2011 16:28:00 上) 失败
26. RMAN-11003: 在分析/执行 SQL 语句期间失败: alter tablespace ttb1 online
27. ORA-01113: 文件 14 需要介质恢复
28. ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'
29.
30. RMAN> recover datafile 14;
31.
32. 启动 recover 于 06-10月-11
33. 使用通道 ORA_DISK_1
34.
35. 正在开始介质的恢复
36. 介质恢复完成, 用时: 00:00:00
37.
38. 完成 recover 于 06-10月-11
39.
40. RMAN> sql "alter tablespace ttb1 online";
41.
42. sql 语句: alter tablespace ttb1 online

再次查看



1. SQL> select file_name,ONLINE_STATUS from dba_data_files;  
2.
3. FILE_NAME ONLINE_
4. ---------------------------------------------------------------------------------------------------- -------
5. /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM
6. /u01/app/oracle/oradata/orcl/undotbs01.dbf ONLINE
7. /u01/app/oracle/oradata/orcl/sysaux01.dbf ONLINE
8. /u01/app/oracle/oradata/orcl/users01.dbf ONLINE
9. /u01/app/oracle/oradata/orcl/test01.dbf ONLINE
10. /u01/app/oracle/oradata/orcl/perfstat01.dba ONLINE
11. /u01/app/oracle/oradata/orcl/undo01.dbf ONLINE
12. /u01/app/oracle/oradata/orcl/tbspart01.dbf ONLINE
13. /u01/app/oracle/oradata/orcl/tbspart02.dbf ONLINE
14. /u01/app/oracle/oradata/orcl/tbspart03.dbf ONLINE
15. /u01/app/oracle/oradata/orcl/tbspart04.dbf ONLINE
16.
17. FILE_NAME ONLINE_
18. ---------------------------------------------------------------------------------------------------- -------
19. /u01/app/oracle/oradata/orcl/tb1.dbf ONLINE
20. /u01/app/oracle/oradata/orcl/tb2.dbf ONLINE
21. /u01/app/oracle/oradata/orcl/ttb1.dbf ONLINE
22.
23. 已选择14行。