我正在使用the original imp tool导入Oracle11g数据库。通常我使用参数DATA_ONLY=y来执行此操作,因为我只关心与数据相关的错误。
但是,我现在正在研究一些与索引相关的问题,因此我希望导入索引和数据,但不导入其他元数据。我已经查看了imp help=y和上面链接的文档,但我不知道哪种选项组合或imp调用序列可以实现这一点。
有什么想法吗?(特定于11g答案的参数也适用于10g dmp文件。)
发布于 2013-06-25 22:34:54
从转储文件(从exp;如果使用11g,我不确定为什么不使用数据泵和expdp/impdp,但希望从9i或更高版本移动数据)构建索引的最简单方法是使用INDEXFILE parameter。
使用它来创建一个包含所有索引DDL的.sql文件。(它也有所有的表DDL,但被注释掉了)。然后,如果需要,您可以进行更改。然后从SQL*Plus中像一个普通脚本一样运行它,它将执行DDL并构建所有索引。不存在仅构建索引的imp调用,您需要在这两个步骤中完成。
它不会更新或重新创建你已经拥有的任何索引,所以如果索引定义发生了变化,那么它就会生效--它只会抱怨索引已经存在。如果是这种情况,您可以在运行脚本之前删除现有索引。
通常,您会在DATA_ONLY调用之后将INDEXFILE调用作为一个单独的步骤运行,因为在所有数据都存在的情况下构建索引通常比在索引存在的情况下导入数据更快-因为更新每行数据的索引会产生开销。所以,依次是imp DATA_ONLY=y、imp INDEXFILE=ind.sql和sqlplus user/pass < ind.sql。
https://stackoverflow.com/questions/17298971
复制相似问题