oracle无法导出空表问题

oracle11G的新特性,当数据为0时,不分配segment,所以无法导出空表。

segment(段)概念:

段(segment)是一种在数据库中消耗物理存储空间的任何实体(一个段可能存在于多个数据文件中,因为物理的数据文件是组成逻辑表空间的基本物理存储单位)。

更多的通用段是:

表(table),用来保存行列结构的数据。

索引(Index),用来加快访问速递。

回滚(Rollback),在用户事务期间和执行事务恢复期间用来维护读一致性的特殊的段,回滚段会被宰第8章节管理一致和并发继续说明。

分区(partition),为实现性能目标把表分成更小的更加容易管理的片。 

EXTENTS 是有由存储空间连续的块组成,但是每一个扩展只能驻留在单个数据文件中

Database blocks 是orcacle中更小的块,他操作系统块组成。

 

解决方法:

1.查询哪些表是空表;

select table_name from user_tables where num_rows=0;

2.生成sql语句

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

3.执行语句生成的sql语句

alter table AUTO_VOUCHER_DETAIL allocate extent;
alter table SYS_PROGSET allocate extent;
alter table TMP_SQL allocate extent;

执行后就会给相对应表分配segment,之后再用exp导出表就可以了。

 

posted @ 2017-12-26 13:57  苹果冒险  阅读(122)  评论(0)    收藏  举报