oracle 11g exp导出空表

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工具可以导出空表。


发布了55 篇原创文章 · 获赞 5 · 访问量 22万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章