`

Oracle连接数太多报错-ORA-12516错误

阅读更多

系统上线,一下子有几百人用,数据库出现异常

 

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

 

一开始以为数据库出了问题呢。

 

使用sqlplus连接以后,查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近

 

SQL> select count(*) from v$session; 
COUNT(*)---------- 88 
SQL> show parameter processes
NAME TYPE VALUE 
db_writer_processes integer 1 
gcs_server_processes integer 0
job_queue_processes integer 10 
log_archive_max_processes integer 2 
processes integer 100 
SQL> show parameter sessions 
NAME TYPE VALUE 
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0 
license_sessions_warning integer 0 
logmnr_max_persistent_sessions integer 1 
sessions integer 110 
shared_server_sessions integer

 

 

 


 

2、修改processes和sessions值

SQL> alter system set processes=300 scope=spfile; 系统已更改。
SQL> alter system set sessions=335 scope=spfile; 系统已更改。

 


 

3、查看processes和sessions参数,但更改并未生效

SQL> show parameter processes NAME TYPE VALUE db_writer_processes integer 1 gcs_server_processes integer 0 job_queue_processes integer 10 log_archive_max_processes integer 2 processes integer 100 SQL> show parameter sessions NAME TYPE VALUE license_max_sessions integer 0 license_sessions_warning integer 0 logmnr_max_persistent_sessions integer 1 sessions integer 110 shared_server_sessions integer

 


 

4、重启数据库,使更改生效 SQL> shutdown SQL> startup SQL> show parameter processes NAME TYPE VALUE db_writer_processes integer 1 gcs_server_processes integer 0 job_queue_processes integer 10 log_archive_max_processes integer 2 processes integer 300 SQL> show parameter sessions NAME TYPE VALUE java_soft_sessionspace_limit integer 0 license_max_sessions integer 0 license_sessions_warning integer 0 logmnr_max_persistent_sessions integer 1 sessions integer 335 shared_server_sessions integer

 

 

 其他

   
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:

   sessions=(1.1*process+5)

     但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/proc/kernel 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200——2000不等。
     上面说的是unix,在RHEL5中, 就修改/etc/sysctl.conf里面的信号量:
kernel.sem   =   2000   32000   100   128     //传说中参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数);SEMMNI(系统信号量级数最大数).  
所以要修改的是第二个参数

 

 


   semmns的计算公式为:  SEMMNS>processes+instance_processes+system
 
   processes=数据库参数processes的值  

   instance_processes=5(smon,pmon,dbwr,lgwr,arch)

   system=系统所占用信号量。系统所占用信号量可用下列命令查出:
   #ipcs -s 
   其中列NSEMS显示系统已占用信号量。

  

其它一些跟连接有关的参数,如 licence_max_sessions, licence_sessions_warning 等默认设置都为零,也就是没有限制。我们可以放心大胆地使用数据库了。


 

 

分享到:
评论

相关推荐

    kettle连接oracle12C--报错ORA-28040 没有匹配的验证协议.rar

    当尝试使用Kettle连接Oracle 12c时,可能会遇到错误"ORA-28040:没有匹配的验证协议"。这个错误通常意味着客户端和服务器之间的安全认证不兼容。 **ORA-28040错误的解释:** 此错误通常出现在Oracle数据库服务器...

    解决 navicat连接oracle报错:ORA-12737InstantClientLight

    通过了解和应用这些知识,你应该能够解决Navicat连接Oracle报错“ORA-12737 InstantClientLight”的问题。理解Oracle InstantClient的工作原理和配置方法,对于管理和维护Oracle数据库的IT专业人员来说是非常重要的...

    Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)

    用oracle数据库新建连接时遇到ora-12505,此问题解决后又出现ora-12519错误,郁闷的半天,经过一番折腾问题解决,下面小编把我的两种解决方案分享给大家,仅供参考。  解决方案一: 今天工作时在新建连接的时候遇到...

    oracle重启报错ORA-00702解决办法

    然而,在日常运维过程中,我们可能会遇到各种错误,比如“ORA-00702”就是其中之一。这个错误通常在尝试重启Oracle数据库服务时出现,意味着数据库实例在启动过程中遇到了问题。本文将详细介绍如何在Windows和Linux...

    Oracle报错ORA-12516

    1. **连接数超出限制**:当数据库连接的数量超过了配置的最大值时,新的连接请求将被拒绝,从而导致ORA-12516错误。 2. **配置不一致**:客户端使用的协议与服务器端支持的协议不一致。 3. **资源不足**:服务器上的...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...

    Oracle12cRAC数据库 出现ora-12520, ora-12516

    在使用Oracle12cRAC(Real Application Clusters)数据库的过程中,可能会遇到客户端连接时出现ora-12520或ora-12516错误的问题。这两种错误代码分别表示“无法为服务找到可用实例”和“TNS:没有监听器”,通常与...

    Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法.pdf

    Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...

    关于创建oracle 连接时报以下错误,ORA-01017 ORA-02063

    在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...

    oracle断电导致控制文件不一致报错ORA-00214处理

    ### Oracle 断电导致控制文件不一致报错 ORA-00214 处理方法 #### 问题概述 在Oracle数据库管理过程中,遇到控制文件版本不一致的问题时,通常会收到ORA-00214错误提示。此错误表示数据库中的一个或多个控制文件与...

    如何处理错误ORA-29275:部分多字节字符

    当尝试查询这些被截断的多字节字符时,Oracle数据库将报错ORA-29275。 2. **字符集设置不当**:如果数据库服务器的字符集设置与客户端的应用程序或操作系统使用的字符集不匹配,也可能引发此错误。 3. **数据...

    oracle报错ora-12541:TNS无监听程序

    oracle报错ora-12541:TNS无监听程序

    oracle数据库中ora-报错原因及处理

    首先,"ORA-"报错是Oracle数据库特有的错误代码系统,每一个"ORA-"后跟随的三位数字代表不同的错误类型。例如,"ORA-00001"表示唯一性约束违反,"ORA-01422"意味着查询返回过多的行,而"ORA-29913"通常涉及到执行...

    ERwin连接oracle报ORA-01041内部错误,hostdef扩展名不存在.docx

    ### ERwin连接Oracle报ORA-01041内部错误,hostdef扩展名不存在的知识点解析 #### 一、问题背景及概述 在使用ERwin数据建模工具连接Oracle数据库时,可能会遇到ORA-01041内部错误提示:“hostdef扩展名不存在”。...

    启动oracle数据库报错:ORA-00600

    在Oracle数据库管理中,"ORA-00600"是一个内部错误代码,通常表示数据库遇到了一个未知或未处理的内部错误。这个错误是由于多种原因引起的,包括数据文件损坏、控制文件问题、实例恢复不完整或者软件bug等。在描述中...

    Oracle数据库报错ORA-00904 标识符无效问题解决办法.txt

    Oracle数据库报错ORA-00904: 标识符无效问题解决办法,有可能是字段名或者表名写错了,也有可能是

    oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64.tar.gz

    1. **安装与配置**:下载`oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64.tar.gz`压缩包,解压后设置环境变量和配置文件,包括数据库连接参数、暴露的端口和需要监控的指标。 2. **启动服务**:运行`oracledb_...

    ORA-01654处理表空间不足问题.pdf

    ORA-01654处理表空间不足问题 Oracle 数据库中,表空间不足是非常常见的问题,主要体现在两个方面:一是原表空间大小不够,二是表空间自动扩展功能未开启。今天我们就来详细讨论如何解决ORA-01654处理表空间不足...

    oracle报错--把我给整屁啦

    标题中的“oracle报错--把我给整屁啦”暗示了一个Oracle数据库用户遇到的困扰,可能是遇到了难以理解或解决的错误。在Oracle数据库中,错误可能会由于多种原因出现,如SQL语法错误、表或索引的问题、权限问题、系统...

Global site tag (gtag.js) - Google Analytics