传输表空间TABLESPACES、TRANSPORT_TABLESPACE、TTS_FULL_CHECK
使用exp/imp将表空间data_tbs从a库传输到b库?下面是准备工作。
create tablespace data_tbs;
create tablespace idx_tbs;
create table t(x varchar2(10))tablespace data_tbs;
create index idx_t on t(x) tablespaceidx_tbs;
insert into t ;

1)在sys用户下创建的(注:导出是错误的)

C:\Documents and Settings\Administrator>set oracle_sid=orcl
C:\Documents and Settings\Administrator>sqlplus sys/ymh assysdba;
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 6月 24 10:36:38 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
SQL> CREATE TABLESPACE data_tbs
  2  DATAFILE 'data_tbs' SIZE 100M AUTOEXTEND ONNEXT 100M MAXSIZE UNLIMITED LOGGING
  3  EXTENT MANAGEMENT LOCAL SEGMENT SPACEMANAGEMENT AUTO ;
表空间已创建。
SQL> CREATE TABLESPACE idx_tbs
  2  DATAFILE 'idx_tbs' SIZE 10M AUTOEXTEND ONNEXT 10M MAXSIZE UNLIMITED LOGGING
  3  EXTENT MANAGEMENT LOCAL SEGMENT SPACEMANAGEMENT AUTO ;
表空间已创建。
SQL> create table t(x varchar2(10)) tablespace data_tbs;
表已创建。
SQL> create index idx_t on t(x) tablespace idx_tbs;
索引已创建。
SQL> insert into t select object_id from dba_objects;
已创建50407行。
SQL> insert into t select * from t;
已创建50407行。
SQL> commit;
SQL> alter tablespace data_tbs read only;
表空间已更改。
SQL> alter tablespace idx_tbs read only;
表空间已更改。
SQL> Executesys.dbms_tts.transport_set_check('data_tbs',TRUE,TRUE);
PL/SQL 过程已成功完成。
SQL>  SELECT * FROMsys.transport_set_violations;
VIOLATIONS
--------------------------------------------------------------------------------
Index SYS.IDX_T in tablespace IDX_TBS points to table SYS.T intablespace DATA_T
BS
Sys owned object  T intablespace DATA_TBS not allowed in pluggable set
SQL> delete from sys.transport_set_violations;
已删除2行。
SQL> Executesys.dbms_tts.transport_set_check('data_tbs,idx_tbs',TRUE,TRUE);
PL/SQL 过程已成功完成。
SQL> SELECT * FROM sys.transport_set_violations;
VIOLATIONS
-------------------------------------------------------------------------------
Sys owned object  IDX_Tin tablespace IDX_TBS not allowed in pluggable set
Sys owned object  T intablespace DATA_TBS not allowed in pluggable set
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\Administrator>exp \"sys/ymhas sysdba\" file=d:/tbs.dmp tablespaces=(data_tbs,idx_tbs) transport_Tab
Export: Release 10.2.0.1.0 - Production on 星期五 6月 24 11:16:40 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不导出表数据 (行)
即将导出可传输的表空间元数据...
EXP-00008: 遇到 ORACLE 错误 29341
ORA-29341: 可传送集不是自包含的
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1387
ORA-06512: 在 line 1
EXP-00000: 导出终止失败
C:\Documents and Settings\Administrator>
注:sys用户下有问题,具体看后面的总结

2)使用scott 用户操作

C:\Documents and Settings\Administrator>sqlplus sys/ymh assysdba;
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 6月 24 13:24:34 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
SQL> drop table t;
表已删除。
SQL> alter tablespace data_tbs read write;
表空间已更改。
SQL> alter tablespace idx_tbs read write;
表空间已更改。
SQL> conn scott/tiger
已连接。
SQL> create table t2(x varchar2(10)) tablespace data_tbs;
表已创建。
SQL> create index idx_t on t2(x) tablespace idx_tbs;
索引已创建。
SQL> insert into t2 select object_id from all_objects;
已创建46677行。
SQL> insert into t2 select object_id from all_objects;
已创建46677行。
SQL> commit;
提交完成。
SQL> conn sys/ymh as sysdba;
已连接。
SQL>  Executesys.dbms_tts.transport_set_check('data_tbs',TRUE,TRUE);  ===========>单个表空间自包含检查
PL/SQL 过程已成功完成。
SQL> SELECT * FROM sys.transport_set_violations;===========>有一个关联,自包含检查不通过
VIOLATIONS
--------------------------------------------------------------------------------
Index SCOTT.IDX_T in tablespace IDX_TBS points to tableSCOTT.T2 in tablespace DATA_TBS
SQL> delete from sys.transport_set_violations;
已删除 1 行。
SQL> commit;
提交完成。
SQL> Executesys.dbms_tts.transport_set_check('data_tbs,idx_tbs',TRUE,TRUE); ===========>两个有关联的表空间自包含检查
PL/SQL 过程已成功完成。
SQL> SELECT * FROM sys.transport_set_violations;===========>两个一起检查通过
未选定行
SQL> alter tablespace data_tbs read only;
表空间已更改。
SQL> alter tablespace idx_tbs read only;
表空间已更改。
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\Administrator>exp \"sys/ymhas sysdba\" file=d:/tbs.dmp tablespaces=(data_tbs,idx_tbs)transport_tablespace=y
tts_full_check=y
=======================>将两个表空间一起导出,不要数据(tablespaces=(data_tbs,idx_tbs):要导出的表空间;transport_tablespace=y:只导出元数据;tts_full_check=y进行完全自包含检查)
Export: Release 10.2.0.1.0 - Production on 星期五 6月 24 14:21:22 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不导出表数据 (行)
即将导出可传输的表空间元数据...
对于表空间 DATA_TBS...
. 正在导出簇定义
. 正在导出表定义
. . 正在导出表                              T2    ===========è没有数据导出
对于表空间 IDX_TBS...
. 正在导出簇定义
. 正在导出表定义
. 正在导出引用完整性约束条件
. 正在导出触发器
. 结束导出可传输的表空间元数据
成功终止导出, 没有出现警告。

3)复制文件

C:\Documents and Settings\Administrator>sqlplus sys/ymh assysdba;
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 6月 24 13:44:37 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
SQL> select name from v$datafile where name like '%_TBS';
NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\DATA_TBS
D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\IDX_TBS
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\Administrator>copyD:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\IDX_TBSD:\oracle\product\10.2.0\oradata\test
已复制         1 个文件。
C:\Documents and Settings\Administrator>copyD:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\DATA_TBSD:\oracle\product\10.2.0\oradata\test
已复制         1 个文件。
C:\Documents and Settings\Administrator>cd ../..
C:\>d:
D:\>cd D:\oracle\product\10.2.0\oradata\test
D:\oracle\product\10.2.0\oradata\test>dir *_tbs
驱动器 D 中的卷是安装
卷的序列号是3451-8864
D:\oracle\product\10.2.0\oradata\test 的目录
2011-06-24  13:28       104,865,792 DATA_TBS
2011-06-24  13:28        10,493,952 IDX_TBS
               2 个文件    115,359,744 字节
               0 个目录40,376,631,296 可用字节
D:\oracle\product\10.2.0\oradata\test>

4)导入另一个库

C:\Documents and Settings\Administrator>set oracle_sid=test
C:\Documents and Settings\Administrator>echo %oracle_sid%
test
C:\Documents and Settings\Administrator>sqlplus sys/ymh assysdba;
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 6月 24 13:54:59 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
SQL> show parameter service
NAME                                 TYPE        VALUE
------------------------------------ -------------------------------------
service_names                        string      test
C:\Documents and Settings\Administrator>imp sys/ymh@test assysdba' file='d:/tbs.dmp' tablespaces=(data_tbs,idx_tbs) transport_tablespace=y
datafiles='D:\oracle\product\10.2.0\oradata\test\DATA_TBS,D:\oracle\product\10.2.0\oradata\test\IDX_TBS
Import: Release 10.2.0.1.0 - Production on 星期五 6月 24 14:45:00 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
即将导入可传输的表空间元数据...
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SYS 的对象导入到 SYS
. 正在将 SYS 的对象导入到 SYS
. 正在将 SCOTT 的对象导入到 SCOTT
. . 正在导入表                            "T2"
. 正在将 SYS 的对象导入到 SYS
成功终止导入, 没有出现警告。

5)检查数据

C:\Documents and Settings\Administrator>sqlplusscott/tiger@test
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 6月 24 14:46:07 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options
SQL> conn sys/ymh@test as sysdba;
已连接。
SQL> show parameter service
NAME                                 TYPE        VALUE
------------------------------------ -----------------------------------------
service_names                        string      test
SQL> conn scott/tiger
已连接。
SQL> select count(1) from t2;
  COUNT(1)
----------
     93354
SQL>

总结错误:(1) ORA-29335: 表空间 'DATA_TBS' 不为只读

导出的表空间必须为只读状态,否则出现如下错误
EXP-00008: 遇到 ORACLE 错误 29335
ORA-29335: 表空间 'DATA_TBS' 不为只读
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 507
ORA-06512: 在 line 1
EXP-00000: 导出终止失败

(2) ORA-29341: 可传送集不是自包含的

“可传送集不是自包含的”的两种处理方法:
1、将所有的依赖表空间一起传,比如该题中,一个表空间会出现自检错误,两个表空间同时自检则不会。
SQL> Executesys.dbms_tts.transport_set_check('data_tbs',TRUE,TRUE);
SQL> SELECT * FROM sys.transport_set_violations;
VIOLATIONS
--------------------------------------------------------------------------------
Index SCOTT.IDX_T in tablespace IDX_TBS points to tableSCOTT.T2 in tablespace DATA_TBS
SQL> Executesys.dbms_tts.transport_set_check('data_tbs,idx_tbs',TRUE,TRUE);
SQL> SELECT * FROM sys.transport_set_violations;
未选定行
SQL>
2、讲表空间处理为自包含:比如将索引删除,导到其他数据库后重建索引,或者将索引重建到数据文件的表空间,然后导出一个表空间
注意:当再sys或system用户下创建表时,使用表空间传输也会出现“可传送集不是自包含的”,并且无法两个表空间同时传输,所以最好必要导出sys和system建表使用的表空间,不管是不是自带的system还是新建的表空间。
EXP-00008: 遇到 ORACLE 错误 29341
ORA-29341: 可传送集不是自包含的
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1387
ORA-06512: 在 line 1
EXP-00000: 导出终止失败

(3) IMP-00053: 导入模式与导出转储文件不兼容

1、可能是跨平台时存储格式不同导致(未测试)
2、同一平台下,注意导出的参数和导入的参数,因为导出时忘了加transport_tablespace=y ,把数据也改导出,导入时又加入该参数,导致错误:
IMP-00053: 导入模式与导出转储文件不兼容
IMP-00000: 未成功终止导入

(4) ORA-27041: 无法打开文件 O/S-Error: (OS2) 系统找不到指定的文件。

一个普通的导入错误
IMP-00003: 遇到 ORACLE 错误 1565
ORA-01565: 标识文件'D:\oracle\product\10.2.0\oradata\test\DATA_TBS' 时出错
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1801
ORA-06512: 在 line 1
IMP-00000: 未成功终止导入

(5) ORA-19722: 数据文件D:\oracle\oradata\DATA_TBS版本错误

表空间设置为只读就是为了保证数据的一致性,因此只有讲表空间的数据文件拷贝完成之后才能在源数据库恢复表空间的可读写状态。
否则,在目标数据库导入的时候就会出现下列错误:
IMP-00003: 遇到 ORACLE 错误 19722
ORA-19722: 数据文件D:\oracle\oradata\DATA_TBS版本错误
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 2065
ORA-06512: 在 line 1
IMP-00000: 未成功终止导入

(6) PLS-00201: 必须声明标识符'DBMS_PLUGTS.NEWTABLESPACE'

使用普通用户或system用户导入时如果出现如下错误,可以使用 'sys/ymh as sysdba'来导入,可以加入参数TTS_OWNERS=scott(TTS_OWNERS未详细测试)
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
IMP-00003: 遇到 ORACLE 错误 6550
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'DBMS_PLUGTS.NEWTABLESPACE'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
IMP-00000: 未成功终止导入

(7) OSD-04002: 无法打开文件 O/S-Error: (OS123) 文件名、目录名或卷标语法不正确。

如果有多个数据文件,datafile=XXX,XXX,中间用逗号隔开即可,不要用""号将多个概括,否则出现如下错误
IMP-00003: 遇到 ORACLE 错误 1565
ORA-01565: 标识文件'D:\oracle\oradata\DATA_TBS,D:\oracle\oradata\IDX_TBS' 时出错
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 123) 文件名、目录名或卷标语法不正确。
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1801
ORA-06512: 在 line 1
IMP-00000: 未成功终止导入

转载于:https://blog.51cto.com/xiahouyao123/785694

进来进程有人问表空间的迁移问题相关推荐

  1. 跨平台表空间传输(linux 10g表空间跨平台迁移到window 11g)

    最近公司的一个项目里的linux 系统中的oracle 10g数据库,需要把某个表空间里的所有数据都迁移到window 2003的11g里,经过我与dba的交流.测试,决定使用跨平台的表空间传输技术, ...

  2. exp-imp实现oracle不同表空间的迁移

    方法一: --1.修改表空间名称(账号:sys/oracleas SYSDBA 登录) alter tablespace CICHR rename to CICHR_BAK; alter tables ...

  3. oracle表空间可以迁移,Oracle 表空间迁移

    迁移表空间databump 使用databump导入导出,两个库用户必须一致,否则另一个库导入的时候会报错.所以两个库都是用helei用户. 给两个数据库的用户分别授予dba权限,这里只是实验更清晰而 ...

  4. oracle表空间扩容asm,oracle表空间文件系统迁移到ASM

    1.配置测试环境 创建数据表空间 create tablespace test logging datafile '/home/oracle/test.dbf' size 10m autoextend ...

  5. 跨平台表空间传输(摘自eygle《循序渐进Oracle》)

    需要注意的是,在Oracle 10g之前,数据文件是不能够跨平台传输使用的,从Oracle 10g开始,Oracle支持跨平台的表空间传输,这极大地增强了数据迁移的便利性. 1.  字节顺序和平台 数 ...

  6. oracle传输表空间功能测试(含详细过程)

    最近做数据迁移,之前有一篇迁移思路思考的文章,这里继续做具体的测试,主题问表空间传输. 一.源服务器上导出表空间 源服务器:   10.1.122.55 目标服务器:10.1.122.54 0.设置字 ...

  7. Oracle表空间的管理方式(LMT、DMT)--本地和字典管理

    Oracle表空间的管理方式(LMT.DMT)--本地和字典管理 字典管理:oracle 8i(不包括i),只存在一种表空间的管理模式,即字典管理表空间(DMT).DMT是指oracle的空间分配或回 ...

  8. imp 只导入索引_使用imp导入表和索引至不同表空间方法

    在以前我的blog中,曾经记录过使用expdp/impdp方式将表和索引导入至不同表空间的方法,这里再提一下: 导出: expdp test/test directory=dump_dir dumpf ...

  9. Oracle-SYSAUX表空间解读

    SYSAUX概述 官方文档:About the SYSAUX Tablespace SYSAUX表空间在Oracle Database 10g中引入,作为SYSTEM表空间的辅助表空间. 以前一些使用 ...

最新文章

  1. yum是干什么的_什么是yum源,yum的工作原理又是什么
  2. Navicat通过存储过程批量插入mysql数据
  3. datetime插入数据_SQL项目_(一)数据源准备
  4. 网页中启动QQ的 XX 命令
  5. 修改文件中的内容,使用fileinput模块
  6. 吉大20春学期计算机系统结构在线作业一,吉大20春学期《计算机原理及系统结构》在线作业一【奥鹏百分答案】...
  7. hive on tez集成完整采坑指南(含tez-ui及安全环境)
  8. jquery排他思想
  9. [转载] ml-8-1-聚类( ( Clustering) )
  10. thinkPHP 表单自动验证功能
  11. Kotlin的一些特殊运算符
  12. python生成动态链接二维码
  13. 进行网络数据采集时用 CSS——避免蜜罐
  14. Centos 7 配置双网卡
  15. nginx中配置root和alias的区别
  16. android 项目编译略过jni目录,在 flutter 上使用 c 代码 - (二) 无源码的项目
  17. 网络图片加载缓慢问题解决方案
  18. c语言交朋友问题大全,交朋友语言教案
  19. android hook 第三方app_不需要Root即可Hook别人APP的方法
  20. cocos creator 打包原生安卓apk 构建与编译

热门文章

  1. 57-高级路由:分发列表:多协议分发列表实验:DV、LS
  2. HBuilder离线打包启用Chrome Inspect调试
  3. 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...
  4. 4项无线技术对比:谁更适合物联网领域?
  5. 杭州新设大数据资源管理局 推动资源共享、市场规范
  6. 基于SSH框架实际开发时遇到的问题及解决办法
  7. SUN平台,光纤共享存储互斥失败导致的数据灾难恢复
  8. 从前台页面取参数到sql的like中比较时参数的预处理
  9. 总结MYSQL的优化
  10. 线段树/树状数组问题 | 问题集合