之前再做项目的时候下载了一个开源的程序,数据库在移植的时候通过exp/imp导入导出,结果程序在启动时报错,对比过后发现两个数据库表相差了十几个,再排查问题,发现少掉的十几个表全部是空表,查了一下oracle11g的特性,发现当数据条数是0时不分配segment,所以就不能被导出!我勒个擦!坑爹有木有!

但是总不能每个表插入一条数据再导出吧,作为一个程序猿总不能上手工课吧,于是继续查,找到了一个解决办法,特此记录,以儆效尤!

第一种解决办法:

在创建数据库之前,先将数据库segment属性进行修改,SQL语句如下:

alter system set  deferred_segment_creation=false;

含义如下:deferred_segment_creation,含义是段延迟创建,默认是true。如果这个参数设置为true,你新建了一个表T1,并且没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。需要注意的是,该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用,在修改后需要重新启动数据库参数才能生效

第二种解决办法:

先查一下哪些表是空的,然后使用ALLOCATE EXTENT为数据库对象分配Extent,SQL如下:

查询空表:select table_name from user_tables where NUM_ROWS=0;

生成修改语句:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 ;

执行生成修改语句的SQL后会生成一堆的ALTER的SQL语句,将生成的语句执行后,再进行exp数据导出,就可以导出所有数据了!

最新文章

  1. 一位资深程序员大牛给予Java初学者的学习路线建议
  2. Manacher's Algorithm 马拉车算法
  3. 【web前端面试题整理03】来看一点CSS相关的吧
  4. UVALive 5903 Piece it together(二分图匹配)
  5. Python 集合方法总结
  6. Python开源框架Scrapy安装及使用
  7. Titanium vs PhoneGap
  8. 【C#】 装箱 (boxing) 和拆箱 (unboxing)
  9. 游戏BI,起步了。
  10. svn文件提交时强制写注释
  11. onmouseover和onmouseout的烦恼
  12. 使用python爬虫抓站的一些技巧总结:进阶篇
  13. 由Spring框架中的单例模式想到的
  14. JAVA程序员成长历程(二)
  15. TCP与UDP区别总结
  16. centos docker 安装
  17. Spark学习之JavaRdd
  18. nginx “403 Forbidden” 错误的原因及解决办法
  19. js数组push方法使用注意
  20. Nginx 解析PHP

热门文章

  1. SQL取行最大值
  2. 搭建Tomcat6源代码阅读环境
  3. 【Python】实现5!+4!+3!+2!+1!
  4. C++ using namespace std(转载)
  5. Android Priority Job Queue (Job Manager):多重不同Job并发执行并在前台获得返回结果(四)
  6. error CS0103: 当前上下文中不存在名称“ViewBag”
  7. iOS-Git 所有资料
  8. Qt线程(2) QThread中使用WorkObject
  9. Linux为什么卡住了?
  10. @SuppressWarnings有什么用处?