搜索
查看: 1285|: 0

Oracle11gR2用exp无法导出空表解决方法

[复制链接]

322

主题

0

回帖

1208

积分

网站编辑

积分
1208
发表于 2014-10-7 10:30:40 | 显示全部楼层 |阅读模式
本帖最后由 MEI 于 2014-10-7 10:31 编辑

Oracle 11gR2 用exp无法导出空表解决方法

在11gR2中有个新特性,当表无数据时,不分配segment以节省空间,Oracle 当然在执行export导出时,空表则无法导出,但是还是有解决办法的:解决方法:
一、insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

二、设置deferred_segment_creation参数

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


1

[size=1em][size=1em]SQL> alter system set deferred_segment_creation=false scope=both;



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

三、用以下SQL语句查找空表
1

SQL>select \'alter table \'||table_name||\' allocate extent;\' from user_tables where num_rows=0;



把查询结果导出,执行导出的语句,强行修改segment值,然后再导出即可导出空表,
注意:数据库插入数据前,修改11g_R2参数可以导出空表

查找空表并生成更新表语句:
1

SQL> select \'alter table \'||table_name||\' allocate extent;\' from user_tables where num_rows=0




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-11-15 20:48 , Processed in 0.057104 second(s), 24 queries .

快速回复 返回顶部 返回列表