sqlplus时报错SP2-1503和SP2-0152

这是一个小案例。

在windows上安装完了oracle 8.1.7.0之后,又装了个oracle11.2.0.1.0。2个版本的数据库分别装在不同的ORACLE_HOME下。登录的时候,分别手工输入ORACLE_HOME和ORACLE_SID,对于11g的数据库能顺利登录,但是对于817的那个数据库,sqlplus登录时报错:

这个报错其实不是817的问题,是11g的问题,因为在817的文档上找不到这个报错信息想error message,他其实是oracle11g的一个报错信息(见这里):

也是就11g的sqlplus去找lib库的时候出现了问题。但是我们在这里其实是用8i的sqlplus,为什么反而用到了11g的sqlplus呢?

这时我们就会想到环境变量path的问题。

我们去找path的设置:

我们看到此时oracle11g的path中的关于bin目录的路径是在oracle817之前的,也就是说,默认会去先用11g的bin目录下的sqlplus,再用817下的ORACLE_HOME和ORACLE_SID,所以就造成了上述的报错。

解决方法:
默认用8i,将8i的bin目录路径放在11g的前面。
对于11g的oracle,在使用时分别set:

另外,很有意思的一个事情是,如果我们用11g的ORACLE_HOME,ORACLE_SID,但是path还是8i的,那么用sqlplus的时候,就会用8i下的sqlplus.exe,但是调用的lib却是11g的,于是,就报这样的错了:

要是一开始报的是这个错,我们的troubleshooting就要困难的多,呵呵……

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据