我使用oracle 11,并使用exp / imp工具在数据库之间迁移数据。
它非常精细 IF 所有空表和序列都已在目标数据库中创建。
但是如果目标数据库中的表不存在,那么会发生一些不好的事情;
这是我输入导出工具的值的方法;
Users or Tables -> Tables
Export table data -> yes
Compress -> yes
Table or Partition to be exported -> I enter table names here one by one,
但它确实接受没有数据的表名。它说表不存在,所以没有惊喜它们以后不会被导入。
Import Data only > no
Import File > Full path to Dump file.
List contents of import file > no
Ignore create error > no
import grants > yes
import table data > yes
import entire export > yes
答案 0 :(得分:1)
序列不以表格模式导出。 documentation lists the objects exported in each mode,表示序列仅以用户和完整数据库模式导出。
导出不推荐使用11g,因为文档还指出:
从Oracle Database 11g开始,不支持原始导出以供一般使用。 Oracle Database 11g中唯一支持使用原始导出是将XMLType数据向后迁移到Oracle数据库10g第2版(10.2)或更早版本。因此,Oracle建议您使用新的数据泵导出和导入实用程序
如果您创建了延迟段,则不会导出空表。 This AskTom articles refers to it,并且还提到in the documentation:
原始导出实用程序不会导出任何已创建的表 创建延迟段并且没有为其创建段 它
您可以使用dbms_metadata.get_ddl()
来获取所有表的表创建语句,或只使用空表,并从中手动构建它们;或强制分配范围(如文件中所述);或使用支持和当前数据泵导出和导入。根据以前的问题,如果您的客户拒绝处理数据泵文件,您应该只使用exp/imp
,而我真的无法为此辩护。