在oracle 12C安装完成后,使用低版本的PLSQL工具远程连接oracle时,提示无监听程序。 检查数据库服务端时,发现监听与实例一切正常。把监听重启与新建,都无法连接到数据库中。 远程连接不得行,就把工具拷到服务器上去试一下,应该可以吧。结果在服务器登录连接都不得行,弹出提示ORA-28547:连接服务器失败,可能是OracleNet管理错误。 ORA-28547:连接服务器失败,可能是OracleNet管理错误。 根据ORA-28547的异常提示,通过百度一些帖子发现,12c的这个问题,主要是因为listener.ora文件中的参数设置原因,相比12C以前的版本,12c的监听文件中,多了一个extproc,这是一个扩展的程序调用接口协议, 连接和调用外部的操作系统程序或进程用时会用到。这里把它先注释掉。然后将SID_NAME改成自己的实例名。如附图:
之后重启一下监听程序,再次使用PLSQL工具登录时,不再提示监听连接符之类的问题。ORA-28040: No matching authenticationprotocol
如果在修改listener.ora之后,登录时,提示ORA-28040: No matching authentication protocol 问题原因是Oracle 12c的sqlnet.ora文件里中SQLNET.ALLOWED_LOGON_VERSION_SERVER与SQLNET.ALLOWED_LOGON_VERSION_CLIENT默认等于11,或者都没有这两个参数,当我们使用11g JDBC之前版本的thin驱动连接的时候,就会出现该异常。
解决方法: 1、 编辑sqlnet.ora 文件,在文件当中,添加以下两个参数,并保存 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8 2、 重启一下监听 ORA-01017:invalid username/password; logon denied 如果连接时,提示ORA-01017: invalid username/password; logondenied 这是因为该用户的密码版本,可能低于11G而导致的,可以使用下面这条语句,查一下当时数据库用的用户对应的密码版本。 select username,account_status,default_tablespace,created,password_versions from dba_users; 解决办法: 最简单的办法,在终端,登录sqlplus方式登录数据到,然后修改一下用户的密码就可以了。 ALTER USER username IDENTIFIED BY password; 然后再登录验证。
当然,更好的方法,就是使用新版本的PLSQL工具
|