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代码即可。