利用可传输表空间技术实现数据的高效迁移(3)

但是,单独将TBS_SEC_D表空间同时就会报错,因为违反了一下原则:
【索引】表空间TBS_SEC_D上存在索引,但是这个索引的基表在另外一个表空间上(后面的实验将会演示违反这种约束的情况)
ora10g@testdb183 /exp$ exp "'"/ as sysdba"'" file=exp_TBS.dmp log=exp_TBS.log transport_tablespace=y tablespaces=TBS_SEC_D triggers=y constraints=n grants=n

Export: Release 10.2.0.3.0 - Production on Tue Aug 25 19:40:25 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
Export done in AL32UTF8 character set and UTF8 NCHAR character set
Note: table data (rows) will not be exported
Note: grants on tables/views/sequences/roles will not be exported
Note: constraints on tables will not be exported
About to export transportable tablespace metadata...
EXP-00008: ORACLE error 29341 encountered
ORA-29341: The transportable set is not self-contained
ORA-06512: at "SYS.DBMS_PLUGTS", line 1387
ORA-06512: at line 1
EXP-00000: Export terminated unsuccessfully

======================================================================
【注意】不相同的数据库字符集和国家字符集是不能完成表空间迁移的!报错如下,要多加注意。
bomsdb1@testdb183 /imp$ imp "'"/ as sysdba"'" file='/imp/exp_TBS.dmp' transport_tablespace=y datafiles='/imp/tbs_sec_d01.dbf' tablespaces=TBS_SEC_D tts_owners=sec fromuser=sec touser=sec

Import: Release 10.2.0.3.0 - Production on Tue Aug 25 20:18:10 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

Export file created by EXPORT:V10.02.01 via conventional path
About to import transportable tablespace(s) metadata...
import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
import server uses WE8ISO8859P1 character set (possible charset conversion)
export server uses UTF8 NCHAR character set (possible ncharset conversion)
IMP-00017: following statement failed with ORACLE error 29345:
 "BEGIN  sys.dbms_plugts.beginImport ('10.2.0.3.0',873,'871',13,'Linux 64-bi"
 "t for AMD',12006,39801,1,0,0,0); END;"
IMP-00003: ORACLE error 29345 encountered
ORA-29345: cannot plug a tablespace into a database using an incompatible character set
ORA-06512: at "SYS.DBMS_PLUGTS", line 2386
ORA-06512: at "SYS.DBMS_PLUGTS", line 1946
ORA-06512: at line 1
IMP-00000: Import terminated unsuccessfully


【最后小结】
表空间迁移技术可以非常高效的完成数据的迁移任务,所用时间基本等于物理拷贝数据文件的时间。不过有一些具体环境的限制,在真正使用之前,需要进行严格的测试。

将完成表空间迁移过程中需要注意的事项列一下,如果不全,请大家补充。
【注意事项一】:导入之前,目标数据库中用户必须已经存在存在。
【注意事项二】:导入之前,目标数据库中不能存在同名的表空间,如迁移同名的表空间,需要对迁移之前的源数据库或待迁入数据库中的表空间改名。
【注意事项三】:导出前需要将表空间置为“只读状态”
【注意事项四】:需要以SYSDBA权限完成表空间迁移
【注意事项五】:表空间需要“自包含”,不符合“自包含”的情况如下
(1)【索引】表空间TBS_SEC_D上存在索引,但是这个索引的基表在另外一个表空间上(后面的实验将会演示违反这种约束的情况);
(2)【LOB】表存储在表空间TBS_SEC_D上,但是表上的LOB字段存储在其他表空间上;
(3)【约束】表的约束有的在表空间TBS_SEC_D上,但是其他的约束在另外的表空间上;
(4)【分区表】分区表的一些分区在表空间TBS_SEC_D上,但是其他的其他的分区在另外的表空间上;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4748663ffc76edb2efae2161c3fa63ab.html