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导出表就可以了。

浙公网安备 33010602011771号