Oracle11g新特性导致空表不能导出问题

    ORACLE 11G在用EXP导出时,发现空表(没有数据或者没有用过的表)不能导出了。

查了一下资料,说是Oracle 11G中有个新特性,当表无数据时,不分配segment,以节省空间,所以这些表也没能导出来。用下面的SQL查询,发现不能导出的表, segment_created 字段值都是 ‘NO‘。

Select segment_created,table_name from user_tables where segment_created = ‘NO‘;

解决的办法:

设置deferred_segment_creation参数。该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。

所以可以通过修改deferred_segment_creation 为false 来禁用这个功能。

修改只对以后创建的表生效,对于已经存在的表不受影响。

alter system set deferred_segment_creation=false;

要想导出之前已经存在的表,可通过下面语句生成SQL执行:

Select ‘alter table ‘ || table_name || ‘ allocate extent;‘  AS SQLSTR

From user_tables where segment_created= ‘NO‘ ;

时间: 2024-08-07 21:00:14

Oracle11g新特性导致空表不能导出问题的相关文章

处理Oracle 11g在用EXP导出时,空表不能导出

一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间 想要给空表也分配segmant,有以下两个办法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME TYPE VALUE ----------------

Oracle 11G在用EXP 导出时,空表不能导出解决[转]

转自:http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME         

Oracle11g新特性之动态变量窥视

1. 11g之前的绑定变量窥视 我们都知道,为了能够让SQL语句共享执行计划,oracle始终都是强调在进行应用系统的设计时,必须使用绑定变量,也就是用一个变量来代替原来出现在SQL语句里的字面值.比如,对于下面三条SQL语句来说: select col1 from t where col2 = 1; select col1 from t where col2 = 2; select col1 from t where col2 = 3; 我们可以看到,这三条SQL语句几乎一样,只有最后wher

解决Oracle 11g在用EXP导出时,空表不能导出

一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间     1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME                                 TYPE        VALU

Oracle 11G在用EXP 导出时,空表不能导出解决

一.问题原因: 11G中有个新特性,当表无数据时,不分配segment,以节省空间 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 SQL> show parameter deferred_segment_creation NAME TYPE VALUE ------------------------------------ ---

Oracle 12.2新特性----在线move表

Oracle12.2版本之前,对表做move操作时会对表加exclusive锁,表上无法执行DML操作.虽然move操作有ONLINE子句,但只适用于IOT表,不适用于堆表.这就意味着在对表做move操作时,无法执行任何DML操作,如果对关键表做move操作时只能停业务来完成.到了Oracle12.2版本,推出了一个新特性----在线move表,对于普通堆表可以在move过程中执行DML操作. 下面以11.2.0.4和12.2.0.1这两个版本为对比,观察这一新特性. 1.11.2.0.4版本的

oracle10g 空表无法导出导致项目报错—— 表或视图不存在

今天下午将远程数据库中数据导出然后导入到本地数据库,部署的项目连接本地数据库后jboss启动后编译报如下错误: 严重: Exception sending context initialized event to listener instance of class com.dicpsi.mis.contextListener.ContextListener org.springframework.dao.InvalidDataAccessResourceUsageException: coul

解决Oracle11g空表无法导出的问题

Oracle11g 新增參数deferred_segment_creation  ,建库的时候默认值为true,意思是延时载入,当表中不存在数据的时候,不为这个表创建空间,当你导出的时候会发现非常多表不存在 使用show parameter deferred deferred_segment_creation; 命令能够查看deferred_segment_creation的值.假设想让空表导出 方法一:像库表中插入值 方法二:1.运行sql改动deferred_segment_creation

【原创】关于oracle11G空表无法导出问题的解决方法

在网上搜索了相关资料后,结合自己的实际情况,总结了一下解决方法,具体如下: 1.先批量分析统计各表总记录数: --批量分析统计表记录总数 begin for obj in (select 'analyze table '||table_name|| ' compute statistics ' sqlstr from user_tables) loop --in里面的select无分号 execute immediate obj.sqlstr; end loop; end; 2.再批量分配ext