我使用the original imp
tool导入Oracle 11g数据库。通常我使用参数DATA_ONLY=y
执行此操作,因为我只关心与数据相关的错误。
但是,我现在正在调查一些与索引相关的问题,所以我想导入索引和数据,但没有其他元数据。我查看了imp help=y
以及上面链接的文档,但我无法弄清楚选项的组合或imp
调用的序列将实现此目的。
有什么想法吗? (11g答案特有的参数也可以,只要它们也适用于10g dmp文件。)
答案 0 :(得分:2)
从转储文件构建索引的最简单方法(来自exp
;不确定为什么你不使用数据泵而{/ 1}} / expdp
如果你&#39 ;重读11g,但希望你从9i或其他东西移动数据)是INDEXFILE
parameter。
使用它来创建包含所有索引DDL的impdp
文件。 (它也包含所有表DDL,但已注释掉)。然后,您可以根据需要进行更改。然后从SQL * Plus中将其作为普通脚本运行,它将执行DDL并构建所有索引。没有.sql
调用仅构建索引,您需要在这两个步骤中执行此操作。
它不会更新或重新创建您已有的任何索引,因此如果索引定义已更改,那么它将生效 - 它只会抱怨索引已经存在。如果是这种情况,您可以在运行脚本之前删除现有索引。
通常,您在imp
调用之后将INDEXFILE
调用作为单独的步骤运行,因为当所有数据都存在时,构建索引的速度通常比它快是为了导入具有索引的数据 - 因为更新每行数据的索引的开销。那么,DATA_ONLY
,然后imp DATA_ONLY=y
,然后是imp INDEXFILE=ind.sql
。