oracle11gexp导出空表

2014-11-24 08:46:26 ? 作者: ? 浏览: 2

oracle 11g 默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。默认情况下,deferred_segment_creation 参数为TRUE,将参数

deferred_segment_creation 参数设置为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus 中连接数据库

(1)、查看该参数的值

SQL> show parameter deferred_segment_creation;

\

(2)、修改该参数值为false

SQL> alter system set deferred_segment_creation=false;

注: 该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。(我在修改此参数之前创建一张空表tab1,修改之后又创建一直表tab2,在导出操作时,确实没有导出表tab1 而导出表tab2。)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

deferred_segment_creation=false之前的空表如何才能导出呢???

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

查找空表:

SQL> select table_name from user_tables where num_rows=0 or num_rows is null;

方法1:insert 一行,然后在rollback 就产生segment了。该方法是在空表中插入数据再删除,则产生segment。导出时则可导出空表。

方法2:可以使用手工为空表分配Extent的方式,来解决之前建立的空表的问题。

SQL> alter table tablename allocate extent;

方法3:不用exp ,使用expdp工具可以导出空表。

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: