写在前面:ORA-01017和ORA-12560造成这种问题的可能性非常多。这里主要提供我的问题和解决的过程。
如果需要看我遇到的问题原因和解决方法,直接看最后。
现象:
以system登录sysdba权限,先是提示账户密码错误,重复输入后提示协议适配器错误。
解决过程
查看相关配置文件
防火墙与网络通信
防火墙推荐打开特定接口,因为是虚拟机,我直接关掉了。
配置了trade为本机ip,下面的配置文件都是以"trade"代替了"localhost"
直接ping oracle安装的数据库,接通了
Listener配置
Oracle外部连接需要一个监听程序进行监听,Listener的配置非常重要
一定要使用netca进行配置。配置过程不在本文讨论范围内。
查看listener.ora查看Listener的配置:
需要注意的是,SID_LIST_LISTENER是我为了方便加的静态,你不一定有,没有不一定故障。如图,使用TCP通信,HOST就是本机IP,端口使用了1522。SID使用了trade作为实例名。
使用lsnrctl 启动listener监听
lsnrctl start
注意查看,一定要有instance实例,没有就会出问题。tcp,host,port的如上面listener.ora配置一致。
到这里其实应该可以用sqlplus登录了。但是还是有点儿问题
SqlNet配置
sqlnet的配置,主要是为了解决客户端和Oracle版本不匹配的问题。
比方我说个人在个人PC下安装的是Oracle 11G的客户端,但是在Oracle端安装的是Oracle 19C。直接连接也会出错。如果你的客户端和Oracle版本一致不用管。
解决了配置问题
SQLNET.ALLOWEDLOGON_VERSION_SERVER=8
SQLNET.ALLOWEDLOGON_VERSION_CLIENT=8
柳暗花明
其实到这里完成正常,把人整不会了。
但是,但是我把as sysdba一删掉就成功登录了。直接定位权限问题。
问题和解决
修改了user的密码,导致权限被收回。
解决方法,在SYS下使用grant 命令重新赋予相关用户sysdba权限。