`
gucci1983
  • 浏览: 3289 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

修改oracle连接数(问题描述:客户端连接数据库报错)

 
阅读更多
问题描述:客户端连接数据库报错

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数据库的过程中,连接数和会话数是影响系统性能的关键因素。下面将详细解析这两个概念,以及它们在Oracle故障排查中的重要性。 1. 连接数和会话数的概念:在Oracle中,连接数指的是同一时间连接到...

    ORACLE 最大连接数的问题

    下面是具体的操作步骤与说明问题描述:客户端连接数据库报错 ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄 解决过程: 1。查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常...

    Oracle报错ORA-12516

    当出现此错误时,表明Oracle数据库监听器在处理来自客户端的连接请求时遇到了问题。具体来说,它找不到能够处理特定协议栈的空闲处理器。这通常发生在以下几种情况: 1. **连接数超出限制**:当数据库连接的数量...

    oracle报错大全(珍藏版)

    ### Oracle报错大全(珍藏版) #### ORA-00001: Unique Constraint Violated 当尝试插入或更新违反唯一约束的数据时触发此错误。例如,在具有唯一索引的列上插入重复数据。 #### ORA-00017: Rollback Segment Full...

    instantclient 11 2 轻量级数据库客户端(解决navicat连接问题)

    Oracle的Instant Client是一款轻量级的数据库访问工具,主要用于在不安装完整Oracle客户端的情况下,提供对Oracle数据库的连接和查询功能。在这个特定的场景中,"instantclient 11 2"指的是Oracle Instant Client的...

    ORACLE启动报错常见问题解决

    Oracle数据库在启动过程中可能会遇到各种报错,这些错误通常是由于配置问题、资源限制或是系统级设置不当导致的。本文将详细解析ORACLE启动报错的常见问题及其解决方案。 首先,针对ORA-12500:“TNS:监听程序无法...

    ORACLE DB数据库常见问题解决及诊断技巧集锦-ORACLE DBA故障修复必备手册

    2. **使用Net Manager工具**:Net Manager是Oracle提供的工具,可用于诊断和解决网络连接问题。 3. **优化网络配置**:例如减少网络延迟、增加带宽等。 #### SQL性能问题 SQL查询的性能问题直接影响数据库的整体...

    BEA_Weblogic_配置Oracle连接池

    配置Oracle连接池是确保Weblogic能够高效、安全地与Oracle数据库交互的关键步骤。下面将详细介绍如何在Weblogic中配置Oracle连接池以及相关参数的含义。 首先,你需要确保已经安装了Oracle数据库和BEA Weblogic ...

    PDPS数据库创建脚本

    7. **数据库参数调优**:根据PDPS的工作负载,脚本可能还包括调整数据库参数的部分,如缓存大小、并发连接数等,以优化性能。 8. **备份与恢复策略**:考虑到数据的重要性,数据库的备份和恢复策略也是脚本的一部分...

    kettle_使用中的一些常见问题

    1. **问题1:从Excel抽取数据到Oracle 9数据库时出现无效数字错误** 错误描述:在尝试插入数据时,Oracle 报告 `ORA-01722: 无效数字` 错误,这通常是因为字段格式不匹配。例如,字段 "field2" 的值 "1,798" 被识别...

    python链接oracle数据库以及数据库的增删改查实例

    - 在Python中输入import cx_Oracle,如果没有报错,则表示cx_Oracle模块安装成功,并且环境配置正确,可以开始数据库操作。 5. 数据库连接操作: - 使用cx_Oracle.connect()方法进行数据库连接。该方法的参数格式...

    与虚拟机Oracle连接出现ora-12154问题的解决方法

    当与虚拟机Oracle连接时遇到ora-12154问题,一个重要的原因可能是TNS配置文件中定义的服务名与监听器配置不一致。监听器配置保存在“listener.ora”文件中,该文件同样位于“network/admin”目录。监听器的主要作用...

    spotlight on oracle性能监控教程

    要在Spotlight on Oracle中连接Oracle数据库,首先需要在本地机器上配置好Oracle客户端。具体连接步骤如下: 1. 打开Spotlight on Oracle应用程序。 2. 在“Connect to Oracle”对话框中输入Oracle服务器的相关信息...

    oracle 实际值超过数据库某个字段指定长度报错解决

    最后,数据库连接问题如`ORA-12505`通常涉及监听器配置或TNS连接字符串的问题,检查`listener.ora`和`tnsnames.ora`文件的设置,确保数据库实例和客户端之间的通信正常。 在处理Oracle数据库中的各种问题时,了解...

    Instant Client for Microsoft Windows (64-bit)

    Oracle的Instant Client是一款轻量级的数据库连接工具,主要用于在客户端进行Oracle数据库的连接和查询。在本场景中,我们关注的是"Instant Client for Microsoft Windows (64-bit)",这表明是专为64位Windows操作...

    基于某某平台的数据源迁移oracle -mysql

    - `maxActive`: 最大活动连接数。 - `minIdle`: 最小空闲连接数。 - `maxWait`: 获取连接的最大等待时间。 #### 六、数据源切换过程中遇到的问题 **1、MySQL 数据库使用 Navicat 插入中文数据显示乱码的问题...

    Oracle巡检脚本.pdf

    - 包括数据库的日志模式、session连接数、字符集、实例状态等。 #### 5.3 数据库产品选项 - 查看数据库的具体产品选项设置。 #### 5.4 数据量大小 - 查看数据库中的数据量大小及表空间使用情况。 #### 5.5 控制...

    DataFactory

    这个错误通常意味着DataFactory在尝试连接数据库时遇到了问题,具体是找不到名为'or84d.dll'的访问库,这通常是Oracle数据库驱动相关的问题。 1. **Oracle驱动缺失**:'or84d.dll'是Oracle数据库的一个组件,可能在...

    kettle-使用中的一些常见问题

    1. **问题1:从Excel抽取数据到Oracle报错(ORA-01722)** 当尝试将包含逗号的数字(如1,798)从Excel导入Oracle数据库时,由于Oracle不接受这种格式的数字,会出现错误。解决办法是在Kettle的Excel输入步骤中,...

Global site tag (gtag.js) - Google Analytics