您的位置:首页 > 数据库 > Oracle

轻松解决oracle11g 空表不能exp导出的问题

2017-10-11 10:59 513 查看
参考http://colcool.iteye.com/blog/1180985

11gR2默认是使用segment creation deferred建立,新建的无记录表不分配segment,当insert第一条记录时分配段空间,不会因truncate而回收,并且在sys
schema里不支持,exp也不会导出。

解决方法1:

这个主要还是跟deferred_segment_creation参数有关,在11gR2中该参数的值为true,说明当创建对象(如表),初始没有数据,不会立即创建segment。



如果该参数设置为false,表明之后的创建的表,初始没有数据,会立即创建segment。

使用代码:

alter system set  deferred_segment_creation = false

 

弊端是对之后创建的表有效。

解决方法2:

 

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

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;
alter table ENTERPRISE_MAPMARK allocate extent;
alter table ENTERPRISE_NEEDTASK allocate extent;
alter table ENTERPRISE_PICTURE allocate extent;
alter table ENTERPRISE_REPORT allocate extent;
alter table ENTERPRISE_REPORT_TYPE allocate extent;
alter table ENTERPRISE_TEAM allocate extent;
alter table FROMUSER_ADJUNCT_TARGET allocate extent;
alter table FROMUSER_OFFER allocate extent;
alter table NEEDTASK_TYPE allocate extent;
alter table SYS_PRIVILEGE allocate extent;
alter table SYS_RELEVANCE_RESOURCE allocate extent;
alter table SYS_RELEVANCE_TARGET allocate extent;
alter table SYS_RESOURCE_TYPE allocate extent;
alter table TASK_FEEDBACK allocate extent;
alter table TASK_MYTASKTYPE allocate extent;
alter table TOUSER_MESSAGE allocate extent;
alter table ABOUTUSER_POINT allocate extent;
alter table ABOUTUSER_POINT_MARK allocate extent;
alter table ABOUTUSER_QUERYKEY allocate extent;
alter table ABOUTUSER_REPORT_HISTORY allocate extent;
alter table DICT_COMMENT_TYPE allocate extent;
alter table DICT_INDUSTRY_TYPE allocate extent;
alter table DICT_POST allocate extent;
alter table DICT_REGION allocate extent;
alter table ENTERPRISE_COMMENT allocate extent;
alter table ENTERPRISE_COMMENT_C allocate extent;
alter table ENTERPRISE_INFO allocate extent;
alter table ENTERPRISE_INFO_C allocate extent;
alter table ENTERPRISE_INFO_STATE allocate extent;
alter table CALENDAR_CREATETYPE allocate extent;
alter table CALENDAR_MY allocate extent;
alter table CALENDAR_TYPE allocate extent;


ok 执行上面那些sql,之后再exp吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: