ORA-12541:TNS-12560:ORA-12518:ORA-28040:ORA-01017

说明

环境(参考):
Oracle 12c
SQL Developer/Navicat Premium(64位)连接数据库
后续出现的错误代码:
  • ORA-12541: no listener
  • TNS-12560:协议适配器错误
  • TNS-00530:协议适配器错误
  • ORA-12518
  • ORA-12514
  • ORA-28040:没有匹配的验证协议
  • ORA-01017:用户名:/口令无效
  • 注册表或服务没有TNS监听器项目

错误

原因

找不到监听器
net 却说有监听器
Windows服务中也找不到TNS服务

于是查阅资料说要找到安装目录下的bin/lsnrctl.exe
输入start,报告协议适配器错误

再次查阅,发现可能是bin/tnslsnr.exe文件不存在或者路径配置问题,首先检查注册表

发现没有TNS的服务
又在bin目录下找到该文件
运行tnslsnr.exe

报告说没有配置OracleHome环境变量,笔者打开环境变量后发现只配了path,所以再次配置环境变量

ORACLE_HOME
D:\app\lenovo\virtual\product\12.2.0\dbhome_1
TNS_ADMIN
D:\app\lenovo\virtual\product\12.2.0\dbhome_1\network\admin

重启! 然而没什么卵用,注册表和服务依然没有TNS
start lsnrctl.exe,依然报错
笔者只好绝望的再去打开tnslsnr.exe,令我茫然的是如下界面:

一片空白!之后突然反应过来,这是不是启动成功了?!
然后我再次运行lsnrctl.exe

监听程序已启动!
笔者又检查了服务和注册表,依然没有变化,但我打算用Navicat Premium连接了
很遗憾,连接失败

百度得知这个错误叫监听器无法分发客户机连接

查询后感觉没问题啊
关闭tnslsnr.exe窗口和,又出现了没有监听器的错误。。。。
启动tnslsnr.exe,连接

启动lsnrctl.exe
又出现无法分发!!
很明显,问题出在tnslsnr.exe上,没有人来启动它,本来应该是注册表启动,但我竟然整个TNS目录都没有,别人都是ImagePath改改就好。
所以我仿照MNS的格式手写了注册表。

重启,发现服务里面有TNS这一项了,但是启动时会报错!说帐号密码错误,笔者也不知道什么东东,直接不要帐号了,改本地登录。

启动后是这样

我先尝试了SQL Deveploper,哈哈,终于登上了!!!

但是!!Navicat依旧不行!!!

继续百度!!
原因是用weblogic去连Oracle12c的数据库,创建连接池的时候报的这个错误。
此错误是用了Oracle11g的驱动连12c的数据库,需要在$ORACLE_HOME\NETWORK\ADMIN\sqlnet.ora中配置:
SQLNET.ALLOWED_LOGON_VERSION=8
注意的是:
1.如果没有这个文件,则需要建立这个文件。
2.如果是RAC,多个节点都需要加。
3.不需要重启数据库。

然而。。。。

新的问题出现,多次连接失败(10次)后,System帐户被锁定!!解锁

SQL Deveploper成功连接,Navicat还是不行,后来有看到大小写的问题,可是当我把我的Oracle 12c 去除大小写之后,连SQL Deveploper都登不上,只好改回去
目前基本上确定 ORA-01017 的问题出在编码上或者大小写,可能是软件转化大小写的原因。
从注册表得知我的编码是GBK,暂时不动他,把system 密码改成123456,哈哈,这样不会有大小写了吧!


哦,对了,我还设置了一样东西,不知道有没有用,菜鸟一个,啥都不懂哈哈, 我勾了兼容。

终于搞定了,不喜欢重装,所以一直折腾,TNS注册表那块是我手写的,有安全隐患,所以像这种建议重装
很感谢您能看到最后,当出现监听器时,我就感觉到这是一场硬战,于是一边调试一边记录,希望能给朋友提供参考意见。前前后后花了我8个小时,也去掉了一些尝试过但没有用的方法,思路不是很清晰,见谅。

猜你喜欢

转载自www.cnblogs.com/lifan1998/p/9178520.html