好长时间不用oracle,现在越来越生疏了。今天在将exp导出的数据imp导入时就遇到了错误。错误内容为:

IMP-00034: 警告: 在导出文件中未找到 FromUser “”
成功终止导入, 但出现警告。

下面解决过程记录下,以便什么时候忘记时,再学习下。顺带着也再重温下建库、建表空间和建用户、授权的步骤。建库分简单,有Database Configuration Assistant工具,图形化的操作,下一步下一步的傻瓜操作,没有什么好重温的了,只不过在linux下安装时,会涉及到编码选择的问题。

接下来建一个表空间名为mtop3的自增型大小无限制的表空间:

1CREATE TABLESPACE MTOP3 DATAFILE 'E:ORACLEPRODUCT10.2.0ORADATAMTOPMTOP3.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

建完库和表空间后,不可能以system或sys用户进行操作。需要为数据库新建用户:

 1CREATE USER "TDDS"  PROFILE "DEFAULT"
 2    IDENTIFIED BY "123@test" DEFAULT TABLESPACE "MTOP3"
 3    QUOTA UNLIMITED
 4    ON "MTOP3"
 5    ACCOUNT UNLOCK;
 6GRANT CREATE ANY SYNONYM TO "TDDS";
 7GRANT CREATE ANY INDEX TO "TDDS";
 8GRANT CREATE PROCEDURE TO "TDDS";
 9GRANT CREATE SEQUENCE TO "TDDS";
10GRANT CREATE TABLE TO "TDDS";
11GRANT CREATE TRIGGER TO "TDDS";
12GRANT CREATE VIEW TO "TDDS";
13GRANT SELECT ANY SEQUENCE TO "TDDS";
14GRANT SELECT ANY TABLE TO "TDDS";
15GRANT "CONNECT" TO "TDDS";

上面我们创建了一个用户名为tdds,密码是123@test的用户。并对该用户进行一些权限赋予。完成后我们接着imp导入数据:

 1C:\Documents and Settings\Administrator>set oracle_sid=test2
 2C:\Documents and Settings\Administrator>imp
 3Import: Release 10.2.0.1.0 - Production on 星期二 9 25 15:15:16 2012
 4Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 5用户名: tdds
 6口令:
 7连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
 8With the Partitioning, OLAP and Data Mining options
 9导入文件: EXPDAT.DMP> e:/bak.DMP
10输入插入缓冲区大小 (最小为 8192) 30720>
11经由常规路径由 EXPORT:V10.02.01 创建的导出文件
12警告: 这些对象由 CORNU 导出, 而不是当前用户
13已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
14只列出导入文件的内容 (yes/no): no >

最后就出现了刚刚开始的错误:IMP-00034: 警告: 在导出文件中未找到 FromUser,成功终止导入, 但出现警告。解决方法也十分简单,在导入的时间有项可以指定原库的导出用户名的地方。在此处输入正确的原导入用户名就可以正常导入了:

imp-error

如上图所示,我导出原库时使用的用户名为cornu,导入时使用的用户名为tdds,则在则入整个文件时,有用户名的输入项。在此处输入原导入用户名后,回车。正常导入的界面就出现了。