0

我正在使用原始imp工具导入 Oracle 11g 数据库。通常我使用参数执行此操作,DATA_ONLY=y因为我只关心与数据相关的错误。

但是,我现在正在调查一些与索引相关的问题,所以我想导入索引以及数据,但没有其他元数据。我已经查看了imp help=y上面链接的文档,但我无法弄清楚哪种选项组合或哪种imp调用顺序可以实现这一点。

有任何想法吗?(特定于 11g 答案的参数很好,只要它们也适用于 10g dmp 文件。)

4

1 回答 1

2

从转储文件构建索引的最简单方法是exp使用参数.expdpimpdpINDEXFILE

使用它来创建一个.sql包含所有索引 DDL 的文件。(它也有所有的表 DDL,但被注释掉了)。然后,您可以根据需要进行更改。然后从 SQL*Plus 将其作为普通脚本运行,它将执行 DDL 并构建所有索引。没有imp只构建索引的调用,您需要在这两个步骤中进行。

它不会更新或重新创建您已经拥有的任何索引,因此如果索引定义已更改,那么它将生效 - 它只会抱怨索引已经存在。如果是这种情况,您可以在运行脚本之前删除现有索引。

通常,您会在INDEXFILE调用之后作为单独的步骤运行DATA_ONLY调用,因为在所有数据都存在时构建索引通常比在索引到位的情况下导入数据更快 - 因为更新索引的开销对于每一行数据。所以,imp DATA_ONLY=y然后imp INDEXFILE=ind.sql,然后sqlplus user/pass < ind.sql

于 2013-06-25T14:34:54.493 回答