Oracle导出工具不会创建一些表和序列

时间:2014-04-04 08:14:11

标签: oracle data-migration

我使用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

1 个答案:

答案 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,而我真的无法为此辩护。