您的位置:首页 > 数据库 > Oracle

Oracle使用exp无法导出空表的解决方法

2018-06-27 15:32 113 查看
原文链接:http://www.cnblogs.com/yichong/p/9234265.html

Oracle使用exp无法导出空表的解决方法

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

解决方法:设置deferred_segment_creation

1.使用命令  show parameter deferred_segment_creation;   查看deferred_segment_creation当前状态
2.使用命令  alter system set deferred_segment_creation=false;  修改值为false

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

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

如果你想导出之前的空表,请往下看

1.使用命令  select 'analyze table '||table_name||' compute statistics;' from user_tables;  分析一下当前用户下的所有表,然后把输出的结果执行,如果不分析在查询空表的时候可能查不出结果。
2.使用命令  select * from user_tables where num_rows=0;  查询当前用户下的所有空表。
3.使用命令  select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0; 生成语句,然后把输出的结果执行

经过如上三部操作,exp就可以导出空表了。

转载于:https://www.cnblogs.com/yichong/p/9234265.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: