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

来源:互联网 发布:docker java web 编辑:程序博客网 时间:2024/05/29 12:07

参考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吧。

阅读全文
0 0
原创粉丝点击