博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
阅读量:6521 次
发布时间:2019-06-24

本文共 903 字,大约阅读时间需要 3 分钟。

今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在。  【原文】:

11GR2中有个新特性,当表无数据时,不分配segment,以节省空间,可是在用EXPORT导出时,空表也不能导出,这就导致迁移时候丢失了一些表,存储过程也失效了。本以为EXP能有相应的控制开关,可以切换是否导出空表,看了下帮助,没有太大的改变。有些奇怪,难道11GR2不更新EXP的功能了,还看有的帖子说11GR1作为客户端去卸载11GR2的,都会出现ora-1455d的错误,得换成11GR2的exp才没事了,心中感慨阿,怎么版本间的兼容这么脆弱了!

  解决方法:

一、 insert一行,再rollback就产生segment了。

  该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

二、 设置deferred_segment_creation参数

该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改语句:

alter system set deferred_segment_creation=false scope=both;

  需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。

三、 用以下这句查找空表并分配空间

  select 'alter  '||table_name||' allocate extent;' from user_tables where SEGMENT_CREATED='NO';

  或

  select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

  把SQL查询的结果导出,然后执行导出的语句,强行为表分配空间修改segment值,然后再导出即可导出空表了。

  alter table T_BILL allocate extent;

  alter table T_CARD allocate extent;

转载地址:http://pfybo.baihongyu.com/

你可能感兴趣的文章
汇编基础--标识符、标号、伪指令和指令
查看>>
PowerShell与系统开局(下)
查看>>
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
查看>>
Go 四篇
查看>>
游戏数值策划-经验值计算公式设计(自百度文库)
查看>>
Spring JDBC模板惯用方式
查看>>
将公用文件夹从Exchange2010迁移到 Exchange 2013
查看>>
微信小程序开发需要了解的三个内核技术
查看>>
UML用例图概要
查看>>
动态规划算法
查看>>
WebService学习总结(二)——WebService相关概念介绍
查看>>
泥鳅般的const(一个小Demo彻底搞清楚)
查看>>
Pyqt 打开外部链接的几种方法
查看>>
JavaScript DOM编程艺术学习笔记(一)
查看>>
event.srcElement获得引发事件的控件(表单)
查看>>
ASP.NET MVC铵钮Click后下载文件
查看>>
SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
查看>>
基本数据结构 - 栈和队列
查看>>
Linux软中断、tasklet和工作队列
查看>>
如何解决ORA-28002 the password will expire within 7 days问题(密码快过期)
查看>>