问题描述:客户端连接数据库报错
ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄
解决过程:
1。查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 9 15:50:21 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> select count(*) from v$session;
COUNT(*)
----------
45
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 50
SQL> show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
2。修改processes和sessions值
SQL> alter system set processes=300 scope=spfile;
系统已更改。
SQL> alter system set sessions=300 scope=spfile;
系统已更改。
3。查看processes和sessions参数,但更改并未生效
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 50
SQL> show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
4。重启数据库,使更改生效
SQL> shutdown immediate
SQL> startup
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
aq_tm_processes integer 0
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_max_sessionspace_size integer 0
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
最后测试加大连接数到50,100都没报ORA-12516错误。
有的时候我们需要调整Oracle数据库的最大链接数,而这个链接数的调整是在oacle下的dbs目录下init.ora文件中调整的。
Oracle的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
sessions=(1.1*process+5)
但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是核心参数中的semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或Oracle SGA。范围可从200——2000不等。
但是,Processes的修改不仅应该调整init.ora文件中的参数,而且应该调整OS的内核参数,象AIX,HPUX,Solaris,SCO,UNIXWare都是这样,OS的调整是需要重新启动的,而且这个参数的设置不能简单按照多少个终端要连到这个服务器上而定,最关键是考虑会有多少同时连上的session(在使用一些共享连接的中间件时,一般就不需要太大),当然还要考虑一些Oracle的后台进程,还有一些系统维护工作需要多一些连接等。
我的atmp大前置机器上对Oracle调整的时候,其使用的是unixware操作系统,在做链接数调整的时候,要先对核心参数进行调整。
核心主要相关的参数的调整如下:
SHMMAX 1000000000
SHMMIN 1
SHMMNI 200
SHMSEG 15
SEMMNI 1000
SEMMSL 300
SEMMNS 230
SEMOPM 20
其中semmni,semmns,semmsl要加大,至少要比processes大18 ;
SEMMNI(10,10000;150):指定在核心中信号识别的数量。这是可以在任意给定时间被激活的唯一信号设置数量。缺省值是150。最大值由系统自动调整产生。
SEMMSL(25,300;150):指定每个信号识别中信号量的最大值。缺省值是25。
SEMMNS 除最大db外的所有db 的PROCESSES之和+2*最大db的PROCESSES+10*实例数。如3个实例进程数分别为100、100、200,则=(100+100)+2*200+10*3=630
SEMOPM(10,20;10):指定在每个系统调用semop中能够被执行的信号操作量的最大值。
缺省值是10。
SHMMAX(131072,1073741824;524288):指定了共享内存部分大小的最大值。
等于0.5×物理内存字节数
SHMMNI(10,1000;100):指定了系统范围内共享内存标识的最大值。
SHMSEG(6,15;6):指定了与每个进程相关连的共享内存块(或标识)的数量。缺省值是6。与每个进程相关连的共享内存块的最大值与进程拥有的未使用空间有关。因此,尽管一个进程拥有少于SHMSEG数值的共享内存块,它也有可能因为其有限的空间而不能与其它进程相联系。
init.ora中调整为:
processes = 50 # SMALL
#processes = 100 # MEDIUM
# processes = 200 # LARGE
其中的processes就是要调整的最大连接数的数目,我们只要调整这个参数就可以了,其它的参数可以保持默认值。
分享到:
相关推荐
在使用Oracle数据库的过程中,连接数和会话数是影响系统性能的关键因素。下面将详细解析这两个概念,以及它们在Oracle故障排查中的重要性。 1. 连接数和会话数的概念:在Oracle中,连接数指的是同一时间连接到...
下面是具体的操作步骤与说明问题描述:客户端连接数据库报错 ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄 解决过程: 1。查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常...
当出现此错误时,表明Oracle数据库监听器在处理来自客户端的连接请求时遇到了问题。具体来说,它找不到能够处理特定协议栈的空闲处理器。这通常发生在以下几种情况: 1. **连接数超出限制**:当数据库连接的数量...
### Oracle报错大全(珍藏版) #### ORA-00001: Unique Constraint Violated 当尝试插入或更新违反唯一约束的数据时触发此错误。例如,在具有唯一索引的列上插入重复数据。 #### ORA-00017: Rollback Segment Full...
Oracle的Instant Client是一款轻量级的数据库访问工具,主要用于在不安装完整Oracle客户端的情况下,提供对Oracle数据库的连接和查询功能。在这个特定的场景中,"instantclient 11 2"指的是Oracle Instant Client的...
Oracle数据库在启动过程中可能会遇到各种报错,这些错误通常是由于配置问题、资源限制或是系统级设置不当导致的。本文将详细解析ORACLE启动报错的常见问题及其解决方案。 首先,针对ORA-12500:“TNS:监听程序无法...
2. **使用Net Manager工具**:Net Manager是Oracle提供的工具,可用于诊断和解决网络连接问题。 3. **优化网络配置**:例如减少网络延迟、增加带宽等。 #### SQL性能问题 SQL查询的性能问题直接影响数据库的整体...
配置Oracle连接池是确保Weblogic能够高效、安全地与Oracle数据库交互的关键步骤。下面将详细介绍如何在Weblogic中配置Oracle连接池以及相关参数的含义。 首先,你需要确保已经安装了Oracle数据库和BEA Weblogic ...
7. **数据库参数调优**:根据PDPS的工作负载,脚本可能还包括调整数据库参数的部分,如缓存大小、并发连接数等,以优化性能。 8. **备份与恢复策略**:考虑到数据的重要性,数据库的备份和恢复策略也是脚本的一部分...
1. **问题1:从Excel抽取数据到Oracle 9数据库时出现无效数字错误** 错误描述:在尝试插入数据时,Oracle 报告 `ORA-01722: 无效数字` 错误,这通常是因为字段格式不匹配。例如,字段 "field2" 的值 "1,798" 被识别...
- 在Python中输入import cx_Oracle,如果没有报错,则表示cx_Oracle模块安装成功,并且环境配置正确,可以开始数据库操作。 5. 数据库连接操作: - 使用cx_Oracle.connect()方法进行数据库连接。该方法的参数格式...
当与虚拟机Oracle连接时遇到ora-12154问题,一个重要的原因可能是TNS配置文件中定义的服务名与监听器配置不一致。监听器配置保存在“listener.ora”文件中,该文件同样位于“network/admin”目录。监听器的主要作用...
要在Spotlight on Oracle中连接Oracle数据库,首先需要在本地机器上配置好Oracle客户端。具体连接步骤如下: 1. 打开Spotlight on Oracle应用程序。 2. 在“Connect to Oracle”对话框中输入Oracle服务器的相关信息...
最后,数据库连接问题如`ORA-12505`通常涉及监听器配置或TNS连接字符串的问题,检查`listener.ora`和`tnsnames.ora`文件的设置,确保数据库实例和客户端之间的通信正常。 在处理Oracle数据库中的各种问题时,了解...
Oracle的Instant Client是一款轻量级的数据库连接工具,主要用于在客户端进行Oracle数据库的连接和查询。在本场景中,我们关注的是"Instant Client for Microsoft Windows (64-bit)",这表明是专为64位Windows操作...
- `maxActive`: 最大活动连接数。 - `minIdle`: 最小空闲连接数。 - `maxWait`: 获取连接的最大等待时间。 #### 六、数据源切换过程中遇到的问题 **1、MySQL 数据库使用 Navicat 插入中文数据显示乱码的问题...
- 包括数据库的日志模式、session连接数、字符集、实例状态等。 #### 5.3 数据库产品选项 - 查看数据库的具体产品选项设置。 #### 5.4 数据量大小 - 查看数据库中的数据量大小及表空间使用情况。 #### 5.5 控制...
这个错误通常意味着DataFactory在尝试连接数据库时遇到了问题,具体是找不到名为'or84d.dll'的访问库,这通常是Oracle数据库驱动相关的问题。 1. **Oracle驱动缺失**:'or84d.dll'是Oracle数据库的一个组件,可能在...
1. **问题1:从Excel抽取数据到Oracle报错(ORA-01722)** 当尝试将包含逗号的数字(如1,798)从Excel导入Oracle数据库时,由于Oracle不接受这种格式的数字,会出现错误。解决办法是在Kettle的Excel输入步骤中,...