今天部署oracle的时候出现了两个问题,
首先tnsping ok 的情况下是输入sqlplus /as sysdba 登陆数据库报错
ERROR - ORA-12560: TNS:protocol adapter error
找了下网上的资料,找到可能是如下原因
1、服务监听没起来
2、没有配置ORACLE_SID
3、没有配置ORACLE_HOME
4、TNS_ADMIN没有指定
5、tnsnames.ora文件内容不对
我逐一排查发现还是不行,这时候发现我在oracle server 和 oracle client 中配置了相同的两个listener ,使用oracle 自带的sqlplus 工具可以用
system 账户登陆,这时候同事怀疑是两个listener的缘故,于是在环境变量Path中将oracle server的路径放在client 的路径前面,果然
sqlplus /as sysdba 可以正常登陆了。
然后在使用新建的用户登陆的时侯sqlplus cms/cms@cmsdb 又报错了 ORA-12518: TNS:listener could not hand off client connection
咨询了下数据库大师,大师说应该是监听冲突了,这时候才恍然大悟,赶紧删了client中的listener,重启下服务(重要),果然好了。
这里有几个经验:
1、环境变量靠前Path的优先被使用
2、sqlplus /as sysdba使用oracle server的listener,cms/cms@cmsdb使用client的listener
3、在同时安装server和client的情况下只需要配置一个listener
对于我这个oracle小菜,还有很多要去探索学习,加油!