Oracle错误码ORA-12516解决方案

Posted Magicflowersbloom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle错误码ORA-12516解决方案相关的知识,希望对你有一定的参考价值。

一、 错误码ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序 解决方案


1.错误原因

​由于超过连接最大值导致无法登录,所以用sys as dba也是登录不上的,首先需要先断开占用的procress,即停掉几个tomcat即可释放连接,接下来就可以登录了。
解决方法:​

杀掉oracle进程: kill -9 `ps -ef|grep "oracle" |grep "LOCAL=NO"|awk 'print $2'`

2.以oracle身份登录数据库

(1) 以oracle身份登录数据库,命令:su -oracle

(2) 进入Sqlplus控制台,命令:sqlplus /nolog

(3) 以系统管理员登录,命令:connect / as sysdba

3.查看procress的参数值和占用值

(1)procress参数值:show parameter processes  

(2)procress占用值:select count(*) from v$process;

4.查看session的参数值

(1)session参数值:show parameter sessions

 修改process和session的最大值

(1)process最大值:alter system set processes=500 scope=spfile; 

(2)session最大值:alter system set sessions=776 scope=spfile;


5.重启oracle 使配置生效


​1).关闭​

shutdown immediate

​关闭成功​

​2).启动​

startup

​启动成功​


6.查看procress&session的参数值 查看配置是否生效


​1).查看procress参数值​

show parameter processes


​2).查看session参数值​

show parameter sessions

修改成功

7.如果连接报错需重新挂载数据库

1).报错信息

 2).重新挂载数据库

alter pluggable database ORCLPDB1 open;
alter pluggable database QHD_ZFZLFWPT open;
alter pluggable database QHD_ZFZLFWPT_TEST open;
alter pluggable database QHD_ZFZLFWPT_TEST2 open;

 

连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!

1.出现如下错误:ORA-12541:TNS:no listener,如下图所示:

 技术分享

错误原因是我们没有开启Listener监听器服务,解决方法是在服务中开启这个服务,如下图所示。

技术分享

2.出现如下错误:ORA-12514:TNS:监听程序当前无法识别链接描述符中请求的服务。如下图所示:

技术分享

解决方法是需要打开服务OracleServiceORCL,如下图所示:

技术分享

3.出现错误:ORA-01017:invalid username/password;logon denied。

技术分享

解决方法:原来配置数据库连接的时候用户名和密码都是安装Oracle的时候配置的root和root。但是会出现上面的错误,后来使用用户名:scott,密码:tiger,能够成功登陆。这个scott账户也是在安装数据库的时候配置的。

 技术分享

 

ORA-12514的错误用第2种方法解决不了,用下面这种方法:

解决方法:修改listener.ora
原:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\Val\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Val\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
 )

修改后:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\Val\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Val\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\app\Val\product\11.2.0\dbhome_1)
      (SID_NAME = ORCL)
    ) 
 )
注意连接的时候服务名一定要使用ORCL!!!
这样以后,关掉Service和LISTENER。再启动Service和LISTENER,这样应该就可以了,注意顺序。
加上了面一段东西,意思是把LISTENER服务主动注册到进程监视器(pmon)中去。所以,但你启动了Serivce后,启动LISTENER的时候,会主动去注册到进程监视器(pmon)中去。所以不会有什么问题。但是反过却不行。
如果说没有添加那一段,情况正好相反,是由实例的pmon进程在LISTENER中注册服务,LISTENER为被动注册。所以需要先起LISTENER才可以。
总结一下,如果说你不加那段东西,那么就应该先起LISTENER,如果说你加了那段东西,就应该先起Serivce。
我试了一下,的确是这样。(不过在windows上,有时候会报错,重启一下再试就可以了)

此文章为整理加转载,参考文档:

http://blog.csdn.net/xw13106209/article/details/6584753

http://blog.sina.com.cn/s/blog_7c0e26230100t0ci.html



































以上是关于Oracle错误码ORA-12516解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Oracle报错ORA-12516 TNS:listener could not find available handler with matching protocol stack

Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务ORA-12516 TNS监听程序找(代

ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案

Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务ORA-12516 TNS监听程序找(代

ORA-12516, TNS:listener could not find available handler with matching protocol stack

ORA-12516:TNS:listener could not find available handler with matching protocol stack