用dmp备份文件恢复数据时,在命令行用imp命令可以正常恢复数据,但在plsqldev工具下却不能正常恢复数据。详细情况我在正文中贴出来,麻烦各位大神指点一二。

铁根 2016-08-22 10:48:50
系统:windows7 x64
oracle:Version11.2.0.1.0
plsqldev:配置了instantclient_11_2
问题:在命令行可以用imp命令恢复数据,但用plsqldev无法恢复数据;
操作步骤:在plsqldev工具页面依次点击Tools->Imports Tables 选择了imp.exe路径,也设置了导出的文件路径,点击Import以后,会闪出一个命令行来,命令行会瞬间消失。plsqldev工具显示导出成功,但是数据并没有恢复成功。
点击Import按钮后会有一个log窗口,log窗口的内容如下:
Import started on 2016-08-22 22:36:22
D:\Oracle\product\11.2.0\dbhome_1\BIN\imp.exe log=C:\Users\xx\AppData\Local\Temp\plsimp.log file=C:\Users\xx\Desktop\db\DB_BACKUP.dmp userid=xx/xx@orcl buffer=30720 commit=no full=yes grants=yes ignore=yes indexes=yes rows=yes show=no constraints=yes
Import finished on 2016-08-22 22:36:22


瞬间消失的命令行显示:
invalid format of import utility name
verify that oracle home is properly set
import terminated unsuccessfully


请各位大哥大姐帮忙分析下是什么问题,谢谢大家了!
...全文
272 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁根 2016-08-24
  • 打赏
  • 举报
回复
问题成功解决,是因为我在A电脑上安装了oracle数据库,又在A电脑上安装了plsqldev,我给该plsqldev设置的ORACLE_HOME是instantclient_11_2所在的目录,所以用plsqldev无法恢复数据,将plsqldev的ORACLE_HOME设置为oracle数据库安装的目录便能成功恢复数据了。
铁根 2016-08-23
  • 打赏
  • 举报
回复
引用 3 楼 ghx287524027 的回复:
报此错误有三种可能 1.字符集问题 将dmp文件用二进制工具打开(如uedit32),取2、3字节的内容,如03 54,将其转换为10进制数,为852,使用函数NLS_CHARSET_NAME即可获得该字符集: SQL> select nls_charset_name(852) from dual; NLS_CHARSET_NAME(852) --------------------- ZHS16GBK 然后 SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------ -------------------------------------------------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS . NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN 用dmp的字符集与数据库的NLS_CHARACTERSET做比较,如果不一样则说明有问题。 2.dmp文件中备份的数据库表已经存在,则导入过程会失败,只能先将已经存在的表删除,在进行导入 以上是别人说法,个人认为可以加ignore参数忽略已存在的,如要覆盖则需要先删除了。我这是新库,所以没表,排除。。。 3.检查环境变量是否正确。 不过按你说的,可以在sqlplus中正确import,那么应该不是字符集的问题,检查一下plsql的配置和oracle的配置有什么区别~
1.能确定不是编码的问题,否则imp命令就不能恢复数据; 2.我现在这个数据库本身就是空的; 3.系统目前配置了NLS_LANG环境变量,plsqldev目前的编码方式也是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,开发过程中plsqldev其他功能均正常,还有什么地方的配置是我没有注意到的呢?
ghx287524027 2016-08-23
  • 打赏
  • 举报
回复
报此错误有三种可能 1.字符集问题 将dmp文件用二进制工具打开(如uedit32),取2、3字节的内容,如03 54,将其转换为10进制数,为852,使用函数NLS_CHARSET_NAME即可获得该字符集: SQL> select nls_charset_name(852) from dual; NLS_CHARSET_NAME(852) --------------------- ZHS16GBK 然后 SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------ -------------------------------------------------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS . NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN 用dmp的字符集与数据库的NLS_CHARACTERSET做比较,如果不一样则说明有问题。 2.dmp文件中备份的数据库表已经存在,则导入过程会失败,只能先将已经存在的表删除,在进行导入 以上是别人说法,个人认为可以加ignore参数忽略已存在的,如要覆盖则需要先删除了。我这是新库,所以没表,排除。。。 3.检查环境变量是否正确。 不过按你说的,可以在sqlplus中正确import,那么应该不是字符集的问题,检查一下plsql的配置和oracle的配置有什么区别~
铁根 2016-08-22
  • 打赏
  • 举报
回复
引用 1 楼 ghx287524027 的回复:
你的数据量有多大?
自己测试的,只有4条数据。
ghx287524027 2016-08-22
  • 打赏
  • 举报
回复
你的数据量有多大?

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧