重庆思庄Oracle、Redhat认证学习论坛

标题: 低版本的PLSQL如何连接到Oracle 12C [打印本页]

作者: 王亮    时间: 2019-12-1 21:34
标题: 低版本的PLSQL如何连接到Oracle 12C
在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 12csqlnet.ora文件里中SQLNET.ALLOWED_LOGON_VERSION_SERVERSQLNET.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工具






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2