oracle表空间的传输步骤如下:
1.检验表空间的自包含性:
SQL>exec dbms_tts.transport_set_check('account_data',true);
SQL>select * from transport_set_violations;
--如果未选定行,说明表空间是自包含的。否则不能传输。
2.将表空间置为只读:
SQL>alter tablespace tablespace_name read only;
3.卸出表空间:
$exp transport_tablespace=y tablespaces=tablespace_name file=xxx
4.复制数据文件和卸出文件,并将这些文件复制到另一台服务器。
5.使用IMP装入表空间:
$imp transport_tablespace=y datafiles='xxx.dbf' tablespaces=tablespace_name fil e=xxx.dmp
6.将表空间改为读写状态:
SQL>alter tablespace tablespace_name read write;
表空间传输的一些限制:需要两个平台一致,必须有相同的字符集和多语言字符集。要求两个实例的db block size 大小相等,如不相等则需要兼容9.0以上等。
我在windows平台和solaris平台传输表空间的时候就遇到了以上问题,摘录如下:
$ imp transport_tablespace=y datafiles='/oracle/product/10.2.0/db_1/oradata/ocp 1
0g/INDX01.DBF' tablespaces=indx file=indx.DMP
Import: Release 10.2.0.2.0 - Production on Fri Nov 28 08:59:02 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Username: / as sysdba
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Produ c
tion
With the Partitioning, OLAP and Data Mining options
Export file created by EXPORT:V09.02.00 via conventional path
About to import transportable tablespace(s) metadata...
import done in US7ASCII character set and AL16UTF16 NCHAR character set