欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记一次 PL/SQL Developer 上 Oracle导入的错误 ORA-01435: 用户不存在

程序员文章站 2022-05-11 13:50:07
...

错误信息

今天,同事跟我说他通过PL/SQL Developer导入*.dmp备份文件报错。

然后发给了我日志:

Import started on 2018/4/4 15:07:13
C:\oracle\product\10.2.0\client_1\BIN\imp.exe log=C:\Users\AppData\Local\Temp\plsimp.log file=C:\Users\Desktop\数据库备份.dmp userid=exam180325/aaa@qq.com buffer=30720 commit=no full=yes grants=yes ignore=yes indexes=yes rows=yes show=no constraints=yes

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


经由常规路径由 EXPORT:V10.02.01 创建的导出文件

警告: 这些对象由 SYS 导出, 而不是当前用户

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SYS 的对象导入到 exam180325
. 正在将 TEST 的对象导入到 TEST
 "ALTER SESSION SET CURRENT_SCHEMA= "TEST""
IMP-00003: 遇到 ORACLE 错误 1435
ORA-01435: 用户不存在
IMP-00000: 未成功终止导入

Import finished on 2018/4/4 15:07:13

错误分析

当时在忙其他事情,所以没有多想。

只是百度了一下‘ORA-01435: 用户不存在’的解决方法。

可能因为搜索关键词不太恰当,折腾了一会儿并没有解决问题。

于是,我决定认真的再读一遍错误日志,终于发现了问题所在:

. 正在将 TEST 的对象导入到 TEST
...
ORA-01435: 用户不存在

已知这个数据库备份.dmp是由TEST用户导出的;现在要将数据库备份.dmp导入到当前库exam180325库中。

日志却显示的从TEST用户导入到TEST对象。

本地库又没有TEST用户。

所以报错。


解决方法

这里提供3中解决方法,任取一种即可。

1.在PL/SQL Developer导入功能中设置用户信息

报错时,导入窗口是这样的:
记一次 PL/SQL Developer 上 Oracle导入的错误 ORA-01435: 用户不存在

可以看出,配置中并没有设置 从用户到用户 的信息。

进行如下修改:
记一次 PL/SQL Developer 上 Oracle导入的错误 ORA-01435: 用户不存在

再次导入,问题解决。

2.通过脚本导出

编写imp.bat脚本进行命令导出:

C:\oracle\product\10.2.0\client_1\BIN\imp.exe log=C:\Users\Desktop\数据库备份imp.log file=C:\Users\Desktop\数据库备份.dmp userid=exam180325/aaa@qq.com full=y ignore=y fromuser=TEST touser=exam180325

注意其中的用户设置:fromuser=TEST touser=exam180325

执行imp.bat,问题解决。

3.本地库添加用户

在本地库中,添加并授权新用户:TEST

再次导入,问题解决。