今天在进行oracle数据imp/exp时突然发现在cmd下执行exp输入scott/tiger后时提示:EXP-00056: 遇到 ORACLE 错误 12560
ORA-12560解决方法
今天在进行Oracle数据imp/exp时突然发现在cmd下执行exp输入scott/tiger后时提示:
EXP-00056: 遇到 ORACLE 错误 12560
ORA-12560: TNS: 协议适配器错误
EXP-00000: 导出终止失败
开始以为自己输错用户名了,毕竟在oracle这里我不太熟悉。再次输入用户名和密码,依旧报错。
静下来想想----监听器和数据库实例都已经启动了而且还是用自己做的批处理脚本。在Linxu下我也是可以imp/exp的,Linxu下没有注册表这种概念,而存在环境变量这种理念。排除注册表后不同点就在这里了。
于是我谷歌之......
结果和我料想的一样,注册表中HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb10g_home1下ORACLE_SID的键值和我的数据库实例名相同都是orc。现在可以排除注册表了。然后设置系统环境变量ORACLE_SID=orc然后再到cmd下重新exp没有提示任何错误可以导出了。
再做实验验证是环境变量的原因,我set ORACLE_SID=orcs后,,再exp又出现上面的的ORA-12560错误了,再set 回来ORACLE_SID=orc,问题就又解决了。
以前在Eygle的一本书上曾看到过在Linxu下环境变量和oracle的关系。在windows下个人认为和注册表的关联会多些,对于我这个更习惯用命令行的人来说在windows下和环境变量也有一定的联系。