总结错误:(1) ORA-29335: 表空间'DATA_TBS' 不为只读,导出的表空间必须为只读状态,否则出现如下错误(2) ORA-29341: 可传送集不是自包含的 “可传送集不是自包含的”的两种处理方法:
1、将所有的依赖表空间一起传,比如该题中,一个表空间会出现自检错误,两个表空间同时自检则不会。
SQL> Execute sys.dbms_tts.transport_set_check('data_tbs',TRUE,TRUE);
SQL> SELECT * FROM sys.transport_set_violations;
2、讲表空间处理为自包含:比如将索引删除,导到其他数据库后重建索引,或者将索引重建到数据文件的表空间,然后导出一个表空间
注意:当再sys或system用户下创建表时,使用表空间传输也会出现“可传送集不是自包含的”,并且无法两个表空间同时传输,所以最好必要导出sys和system建表使用的表空间,不管是不是自带的system还是新建的表空间。EXP-00008: 遇到ORACLE 错误29341,ORA-29341: 可传送集不是自包含的,ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1387
(4) ORA-27041: 无法打开文件O/S-Error: (OS2) 系统找不到指定的文件。 (5) ORA-19722: 数据文件D:\oracle\oradata\DATA_TBS版本错误
表空间设置为只读就是为了保证数据的一致性,因此只有讲表空间的数据文件拷贝完成之后才能在源数据库恢复表空间的可读写状态。否则,在目标数据库导入的时候就会出现下列错误:
(6) PLS-00201: 必须声明标识符'DBMS_PLUGTS.NEWTABLESPACE' 使用普通用户或system用户导入时如果出现如下错误,可以使用'sys/ymh as sysdba'来导入,可以加入参数TTS_OWNERS=scott(TTS_OWNERS未详细测试)(7) OSD-04002: 无法打开文件O/S-Error: (OS123) 文件名、目录名或卷标语法不正确。 如果有多个数据文件,datafile=XXX,XXX,中间用逗号隔开即可,不要用""号将多个概括,否则出现如下错误
本文出自 “技术知识交流” 博客