传输表空间有几个限制条件:
1、源和目标数据库必须使用相同的字符集和国家字符集
2、目标数据库中不能已经包含同名的表空间
3、传输表空间不支持:物化视图或复制、基于函数的索引
4、被传输的表空间必须是自包含的
使用传输表空间的步骤:
1、验证是否是自包含的
SQL> exec sys.dbms_tts.transport_set_check(‘TESTDB’,true);
PL/SQL procedure successfully completed
SQL> select * from sys.transport_set_violations;
no rows selected
结果表示testdb表空间是自包含的。
2、将要传输的表空间置为read only
使用sysdba身份exp导出传输表空间的目录结构信息(元数据)。
在导出的时候可以指定是否导出触发器、完整性约束和权限。
E:> exp """/ as sysdba""" file=trans.dmp transport_tablespace=y tablespaces=testdb triggers=n constraints=y grants=y
3、将表空间的数据文件盒导出的元数据文件复制到目标数据库服务器上。
4、目标数据库服务器上需提前建好test用户(在源数据库上test用户的表空间为testdb)
5、将源数据库表空间改为读写
SQL> alter database testdb read write;
6、在目标数据库中执行导入
E:>imp """/ as sysdba""" file=trans.dmp transport_tablespace=y datafiles='D:oracleproduct10.2.0oradataorcltestdb.dbf' tablespaces=testdb tts_owners=test
提示导入成功,导入后可以登录到test用户下查看原来的一些表数据是否正确。
用expdp和impdp命令同样可以执行表空间的传输
导出命令:
C:dtpump>expdp """/ as sysdba""" directory=dpump_dir dumpfile=testdb.dmp transport_tablespaces=testdb
导入命令:
E:Documents and SettingsAdministrator>impdp """/ as sysdba""" directory=DATA_P
UMP_DIR dumpfile=testdb.dmp transport_datafiles='D:oracleproduct10.2.0oradat
aorcltestdb.dbf'
其他步骤可以参照exp和imp的方法。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13444115/viewspace-1057470/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13444115/viewspace-1057470/