Oracle数据的导出和导入

导出:exp [用户名/密码@数据库名] [file=c:\exp.dmp] [log=c:\exp.log]

导入:imp

问题:在oracle11g 中空表不能 exp 导出

原因:oracle11g的新特性,数据条数是0时不分配segment,所以就不能被导出

解决方法:

(1)插入一条数据(或者再删除),或者rollback

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

alter system set deferred_segment_creation=false;

 

     该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

(3)先查询一下哪些表是空的:

    

select table_name from user_tables where NUM_ROWS=0;

 

  通过select 来生成修改语句:

    

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

 

  执行后在结果窗口里面生成类似下面的代码:

alter table E2USER_STATE allocate extent;   
alter table ENTERPRISE_E2USER allocate extent;   
alter table ENTERPRISE_INFO_TYPE allocate extent;

  执行上述SQL代码即可。

posted @ 2012-09-03 21:00  ajeeky  阅读(158)  评论(0编辑  收藏  举报