【问题标题】:Problem importing Oracle .dmp file导入 Oracle .dmp 文件时出现问题
【发布时间】:2010-04-19 16:38:46
【问题描述】:

因此,我查看了所有建议的导入 .dmp 文件的方法,但似乎没有一个可以回答这个问题:导入后数据会去哪里?

上下文:我这样创建了一个用户:

SQL> create user IMPORTER identified by "12345";
SQL> grant connect, unlimited tablespace, resource to IMPORTER;

然后我按如下方式运行“imp”命令:

C:\>imp system/password FROMUSER=OVIEDOE TOUSER=IMPORTER file=c:\database1.dmp

现在有 9 个 .dmp 文件,在每个文件之后它都要求我提供下一个文件,然后我收到消息“导入成功终止并出现警告。”

警告是:

Warning: the objects were exported by OVIEDOE, not by you

import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
export client uses WE8ISO8859P1 character set (possible charset conversion)
IMP-00046: using FILESIZE value from export file of 2147483648

现在它说它已成功终止,所以我的假设(我是 oracle 的新手,所以这可能是错误的)是数据已加载。但是,当我使用 SQL developer 连接到数据库并在 IMPORTER 用户下的“表”节点下查看时,那里什么都没有。到底是怎么回事?数据加载了吗?如果有,在哪里可以找到?

【问题讨论】:

  • .LOG 文件中是否还有其他消息?是否有任何 .BAD 文件?您使用的是哪个版本的数据库?
  • 如果 .BAD 文件与日志文件位于同一位置,则没有。上述警告取自日志文件,这是除了最后的“成功”消息之外的唯一内容。数据库版本为:Oracle Database 10g Express Edition Release 10.2.0.1.0
  • 我认为 .bad 文件是由 SQLLoader 生成的,不是吗? Imp *应该为每个加载的表生成一行日志输出。就像是: 。 .导入表“xxxxxx” nnnn 行导入
  • 嗯,有没有我遗漏的步骤?我不知道 SQL*loader 是什么。我只运行了 Imp.exe,没有别的。只生成了一个日志文件(我在上面的命令中省略了这个,但我明确指定了输出日志文件名)。
  • 不,我在评论 APC 的原始评论。 SQL*Loader 是一个完全不同的实用程序,如果有被拒绝的记录,它的一个输出文件是 xxx.bad。

标签: oracle import


【解决方案1】:

您确定该文件实际上包含 OVIEDOE 拥有的对象吗?通常,我希望在处理它们时会列出正在导入的对象列表。

如果我对 USER1 进行了导出,然后尝试使用 FROMUSER=USER_1 进行导入,那么这个结果就是我所期望的(是的,我在这段时间里犯了很多错别字)。

尝试 IMP SHOW=Y 显示转储文件的内容。

【讨论】:

    【解决方案2】:

    在 SQL Developer 中,您是否以 IMPORTER 身份登录?您登录的用户必须拥有 IMPORTER 架构的权限才能查看其对象。

    另外,请确保 SYSTEM 用户具有 IMP_FULL_DATABASE 权限。

    【讨论】:

      【解决方案3】:

      DCookie:原来系统没有 IMP_FULL_DATABASE 权限,我已经授予了。

      所以我尝试运行:

      C:\oraclexe\app\oracle\product\10.2.0\server\BIN>imp.exe system/password file=C:\exp_schema\database1.dmp show=y full=y
      

      结果是:

      Import: Release 10.2.0.1.0 - Production on Mon Apr 19 18:21:11 2010
      
      Copyright (c) 1982, 2005, Oracle.  All rights reserved.
      
      
      Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
      
      Export file created by EXPORT:V09.02.00 via conventional path
      
      Warning: the objects were exported by OVIEDOE, not by you
      
      import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
      export client uses WE8ISO8859P1 character set (possible charset conversion)
      IMP-00046: using FILESIZE value from export file of 2147483648
      . importing OVIEDOE's objects into SYSTEM
      . importing PDQ_CLNR's objects into PDQ_CLNR
      

      在此之后,有一系列交替的块,看起来像是创建表,然后跳过一个表,例如:

         . . skipping table "CHAINED_ROWS"
      

      没有任何迹象表明为什么这些表被跳过并且它们中有很多。然后在最后,它不再请求下一个文件(即 database2.dmp),而是停止并显示:

      Import file: EXPDAT.DMP >
      

      现在我不知道这个转储文件是什么,也不知道为什么会这样。有什么想法吗?

      【讨论】:

      • dmp文件的路径有空格吗?
      • 我不确定这是否是问题的原因,但即使理论上我可以让它工作,实际上 Oracle express 只支持 4Gigs 的数据,而我试图导入 12Gigs .感谢大家的帮助。
      【解决方案4】:

      'imp' 很可能为您创建了 OVIEDOE 架构,那么您需要查看那里(在 SQL Developer 中打开“其他用户”节点)。

      如果这不是您想要的,请尝试 imp 的 fromuser/touser 开关。

      【讨论】:

      • 我认为这就是 OP 所做的。
      • 是的,我确实使用了 FromUser ToUser。我的“其他用户”节点中没有 OVIEDOE 用户。 IMPORTER 用户的“表”节点下没有任何内容。
      • 另外,imp 不会创建用户,除非您正在执行 full=y 导入。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2018-07-02
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多