一、问题原因: 
    11G中有个新特性,当表无数据时,不分配segment,以节省空间

想要给空表也分配segmant,有以下两个办法:

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

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

2、设置deferred_segment_creation 参数

  1. show parameter deferred_segment_creation
  2.  
  3. NAME TYPE VALUE
  4.  
  5. ------------------------------------ ----------- ----------
  6.  
  7. deferred_segment_creation boolean TRUE
  8.  
  9. SQL> alter system set deferred_segment_creation=false;
  10.  
  11. 系统已更改。
  12.  
  13. SQL> show parameter deferred_segment_creation
  14.  
  15. NAME TYPE VALUE
  16.  
  17. ------------------------------------ ----------- ----------
  18.  
  19. deferred_segment_creation boolean FALSE
  20.  
  21. 该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment
  22.  
  23. 需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。

二、解决方法:

1、先查询一下当前用户下的所有空表

  1. select table_name from user_tables where NUM_ROWS=0;

2、用以下这句查找空表

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

把查询结果导出,执行导出的语句

  1. ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
  2.  
  3. -----------------------------------------------------------
  4.  
  5. alter table AQ$_AQ$_MEM_MC_H allocate extent;
  6.  
  7. alter table AQ$_AQ$_MEM_MC_G allocate extent;
  8.  
  9. alter table AQ$_AQ$_MEM_MC_I allocate extent;
  10.  
  11. alter table AQ$_AQ_PROP_TABLE_T allocate extent;
  12.  
  13. alter table AQ$_AQ_PROP_TABLE_H allocate extent;
  14.  
  15. alter table AQ$_AQ_PROP_TABLE_G allocate extent;
  16.  
  17. alter table AQ$_AQ_PROP_TABLE_I allocate extent;
  18.  
  19. alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent;
  20.  
  21. alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent;
  22.  
  23. alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent;
  24.  
  25. alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;

3、然后再执行

exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log   成功!

当然了也可以用以下方法:expdp和impdp

  1. create directory expdp_dir as '/data/db';
  2. grant read,write on directory expdp_dir to DRGN_OWNER;
  3.  
  4. expdp DRGN_OWNER/DRGN_OWNER DIRECTORY=expdp_dir DUMPFILE=dbfile.dmp SCHEMAS=DRGN_OWNER logfile=DRGN_OWNERexpdp.log
  5.  
  6. create directory impdp_dir as '/data/db';
  7. grant read,write on directory impdp_dir to DRGN_OWNER;
  8.  
  9. impdp DRGN_OWNER/DRGN_OWNER DIRECTORY=impdp_dir DUMPFILE=dbfile.dmp logfile=DRGN_OWNER.dmpimpdp.log

然已经导入了

对于DBA新建数据库,建议建立了空的数据库后,马上执行

  1. alter system set deferred_segment_creation=flase sscope=spfile;
  2. shutdowm immediate
  3. startup

【小结】

1、自己没有好好学习11g的新特性,导致了这个问题花费了2个小时的 
2、建议客户使用稳定的10.2.0.4,客户拒绝,现在11g已经是主流了,并不是每一个客户都很保守使用稳定版本,而非最新版本 
3、某美 和 某ELL 的项目以后少接触,4年前IBM P570双机Oracle10g的实施问题就折腾的无语。 
4、再次论证了很多甲方和厂商基本都是:事前猪一样,事后诸葛亮。和目前国内流行的砖家叫兽有异曲同工之妙。 
5、做技术果然是一条不归之路

处理Oracle 11g在用EXP导出时,空表不能导出的更多相关文章

  1. Oracle 11g 导库导不出空表问题

    Oracle11g 会遇到这样的问题,用exp整库导出的时候,会遇到这样的问题,库里的空表没办法导出 select * from all_all_tables aa where aa.owner='U ...

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

    Oracle 11G在用EXP 导出时,空表不能导出解决 (转)(.http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分 ...

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

    实践结论可行,看"2.解决办法" 一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间     1.insert一行,再rollback就产生 ...

  4. 【转】解决Oracle 11g在用EXP导出时,空表不能导出

    一.问题原因: 11G中有个新特性,当表无数据时,不分配segment,以节省空间 .insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segme ...

  5. Oracle 11g 在备份导出时缺少表的问题

    ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产 ...

  6. oracle 11g 空表也导出

    查询空表 并导出修改空表语句 select 'alter table '||table_name||' allocate extent;' from user_tables where num_row ...

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

        ORACLE 11G在用EXP导出时,发现空表(没有数据或者没有用过的表)不能导出了.     查了一下资料,说是Oracle 11G中有个新特性,当表无数据时,不分配segment,以节省空 ...

  8. Oracle 11G在用EXP 导入、导出时,若有空表对导入导出中遇到的问题的解决

    11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...

  9. Oracle 11G R2在用EXP 导出时,空表不能导出解决办法

    11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...

随机推荐

  1. 正式版的Linux Kernel 5.1来了,非LTS

    大神Linus Torvalds于今天发布了Linux Kernel 5.1内核正式版,在对现有功能进行改进的同时还带来了很多重要的改进.本次版本更新历时一个半月,不过值得注意的是它并非是长期支持版本 ...

  2. 最全mysql的复制和读写分离

    mysql的复制和mysql的读写分离从来就不是一个简单的话题,今天笔者就详细来记录一下我学习的mysql.   mysql日至类型有:二进制日志,事务日志,错误日志,一般查询日志,中继日志,慢查询日 ...

  3. Java String.replaceAll()方法

    声明  以下是java.lang.String.replaceAll()方法的声明 public String replaceAll(String regex, String replacement) ...

  4. Android提高UI性能技巧

    提高UI性能的方法事实上有非常多在实际的开发中都已经用到了,在此做一下总结. 1.降低主线程的堵塞时间 若一个操作的耗时较长(超过5秒),我们应该将其放入后台线程中运行.仅仅在须要改动UI界面时通知主 ...

  5. 【React Native开发】React Native控件之ProgressBarAndroid进度条解说(12)

    ),React Native技术交流4群(458982758).请不要反复加群! 欢迎各位大牛,React Native技术爱好者增加交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

  6. WebView简介(加速加载篇)

    从Android 3.0开始,Android的2D渲染管线可以更好的支持硬件加速.硬件加速使用GPU进行View上的绘制操作. 硬件加速可以在一下四个级别开启或关闭: Application Acti ...

  7. (五)api网关服务 zuul-路由

    路由是微服务架构中必须的一部分,比如,“/” 可能映射到你的WEB程序上,”/api/users “可能映射到你的用户服务上,“/api/shop”可能映射到你的商品服务商.(注解:我理解这里的这几个 ...

  8. WPF学习(四) - 附加属性

    冷静了一晚,我就当这次学习的过程是在看狗血剧情的武打小说吧:没有垃圾的武术,只有垃圾的武者…… 还有个话儿怎么说来着:你们是用户,不是客户,也就有个使用的权力.搞清楚身份,别叽叽歪歪的! 没办法,全世 ...

  9. Ajax :六个全局事件

    加载请求: .ajaxStart() 和 .ajaxstop() $(document).ajaxStart(function(){ $('.loading').show(); }).ajaxStop ...

  10. 【算法】prim算法(最小生成树)(与Dijkstra算法的比较)

    最小生成树: 生成树的定义:给定一个无向图,如果它的某个子图中任意两个顶点都互相连通并且是一棵树,那么这棵树就叫做生成树.(Spanning Tree) 最小生成树的定义:在生成树的基础上,如果边上有 ...