折雨的天空
oracle导出数据库出现部分表丢失的情况
2014-6-3 我好笨


导出时没有报错,导入也没有报错,程序运行时发现表或视图不存在。







仔细查看导出日志,发现导出日志中根本就没有导出该表,而数据库管理工具又是存在的,经过反复尝试,该表始终不在导出日志里出现。







经查询得知,网络原文地址:http://blog.sina.com.cn/s/blog_6925c03c0101d9aw.html








11G中有个新特性,当表无数据时,不分配segment,以节省空间。



解决方法:设置deferred_segment_creation 参数,具体步骤如下。



步骤一:执行命令 alter system set deferred_segment_creation=false;



步骤二:执行命令 select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0



步骤三:把步骤二查询的结果导出,执行导出的语句。



 



说明:   



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



需注意的是deferred_segment_creation值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,就需要执行步骤二、三。


发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容