解决Oracle备份时,无法备份空表的问题
为什么存在空表无法exp导出:
如果当前用户下的数据库中存在空表时,执行exp备份时由于该表新建时,并没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。但是传统的exp就不能将其导出了。
1、查询当前用户下的所有记录数为空的表:
select TABLE_NAME from user_tables t where t.NUM_ROWS = 0 or t.NUM_ROWS is null;
2:生成修改语句,构建如下样子简单的SQL命令:
select 'alter table '||table_name||' allocate extent;' from user_tables t where t.NUM_ROWS = 0 or t.NUM_ROWS is null;
3、将查询结果全选,右键复制后,粘贴到新的SQL Window执行即可。
仅做交流参考。