二楼[zhuqibs]完美回答了此问题。
曾遇到过这样一种情况:同样的数据库版本,搭建测试机时,利用正式库 exp 导出备份进行 imp 导入测试机中,查询该用户模式下的表数量发现,正式库与测试库表数量不一致(测试库少)。后来发现 是因为原库中有些新创建的表从没有插入过数据 所以就没有分配过空间,这种表在用 exp 命令时不会导出。但如果表曾经插入过数据又删除了,同样是 0 行数据,但是只要插入过数据就会分配过空间,这种表 exp 命令时就会导出。通过命令 select count(1) ,SEGMENT_CREATED from user_tables group b y SEGMENT_CREATED; 就会看出哪些表没有被分配空间。出现这种情况时,只需要在源库对未分配空间的表运行下 alter table _tablename_allocate extent; 操作,然后重新 exp/imp 导出导入即可。