`
hansha2
  • 浏览: 35905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

修改Oracle连接数和REDHAT AS4 kernel.sem设置参考

阅读更多

修改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就是要调整的最大连接数的数目,我们只要调整这个参数就可以了,其它的参数可

以保持默认值。

 

 

REDHAT AS4 kernel.sem设置参考

REDHAT AS4 kernel.sem设置参考
在安装oracle 之前通常需要设置kernel.sem这个参数,下面对些作简单介绍
sem其实是semaphores的缩写,查看当前设置
[oracle@ebsse oracle]$ cat /proc/sys/kernel/sem
250 32000 100 128
4个数据分别对应
SEMMSL SEMMNS SEMOPM SEMMNI
如当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置
SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应设置为5010。
SEMMNS参数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。
SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010
更改当前SEMAPHORES参数设置:
[oracle@ebsse oracle]$ su
Password:
[root@ebsse oracle]# echo "5010 641280 5010 128" > /proc/sys/kernel/sem
[root@ebsse oracle]# cat /proc/sys/kernel/sem
5010 641280 5010 128
如需启动时自动应用,可在/etc/sysctl.conf增加:
kernel.sem =5010 641280 5010 128

分享到:
评论

相关推荐

    Oracle 10g 在linux redhat 系统安装图解全过程

    编辑`/etc/security/limits.conf`文件,为Oracle用户设置资源限制,比如最大进程数和打开文件数: ``` oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 ...

    Oracle 11g在linux Redhat 6.5安装详解

    通过修改`/etc/security/limits.conf`文件,可以设置Oracle用户的最大可打开文件数和最大可拥有进程数。具体操作步骤如下: ```bash vi /etc/security/limits.conf ``` 在文件末尾添加以下行: ``` oracle soft ...

    Redhat Linux 4下安装oracle

    在Redhat Linux 4下安装Oracle 10g是一个涉及多步骤的过程,涵盖了系统环境配置、用户和组创建、环境变量设置以及Oracle软件的解压和安装等关键环节。以下是对这一过程的详细解析,旨在为希望在Linux环境下部署...

    redhat5.0_x86上装oracle10g-姜涛.doc

    由于Oracle10g官方不完全支持Redhat5.0_x86,可能需要修改系统版本标识或使用其他解决策略,如调整内核参数、禁用SELinux、修改主机名和IP设置等,以满足Oracle的系统需求。 总之,在Redhat5.0_x86上安装Oracle10g...

    在liunx下安装oracle的一些参数配置

    - 为了保证Oracle用户能够顺利使用系统资源,需要设置Oracle用户的最大进程数和最大文件句柄数: ```plaintext oraclesoft nproc 2047 oracle hard nproc 16384 oraclesoft nofile 1024 oracle hard nofile ...

    Redhat Linux 4.7下Oracle 10g安装配置手册.pdf

    - **编辑`/etc/sysctl.conf`**:增加或修改内核参数以支持Oracle的运行,如`kernel.shmall`, `kernel.shmmax`, `kernel.shmmni`, `kernel.sem`, `fs.file-max`等。这些参数与共享内存、信号量和文件描述符数量有关...

    虚拟机安装redhat6.2平台下安装oracle.doc

    - `kernel.sem` 设置信号量参数。 - `net.ipv4.ip_local_port_range` 设置本地端口范围。 - `net.core.rmem_default` 和 `net.core.wmem_default` 设置网络接收和发送缓冲区的默认大小。 - `net.core.rmem_max` 和 `...

    linux redhat enterprise5.4+oracle10g安装过程以及vnc服务配置

    kernel.sem=250 32000 100 128 # 每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数 fs.file-max=65536 # 系统中所允许的文件句柄最大数目 ...

    Redhat5及Oracle11g详细安装配置及管理.doc

    ### Redhat5及Oracle11g详细安装配置及管理 #### 安装Redhat Enterprise Linux 5.2 **一、准备虚拟机** 对于希望通过虚拟环境来安装Redhat Enterprise Linux 5.2的操作人员,首先需要创建一个新的虚拟机。这里以...

    Linux redhat5.6 安装oracle10g 所需包

    在Linux Red Hat 5.6环境下安装Oracle 10g是一项技术性的工作,涉及到多个步骤和依赖包。本文将详细讲解这一过程中的关键知识点。 首先,Oracle 10g是Oracle公司的一款数据库管理系统,适用于企业级的数据存储和...

    linux as5 下的Oracle10g安装

    在Linux AS5环境下安装Oracle 10g是一项涉及多个步骤的技术任务,主要涵盖以下几个关键知识点: 1. **软件包下载**: Oracle 10g的安装首先需要从Oracle官方网站获取合适的软件包。通常,这些软件包是压缩格式,如...

    Redhat_6下安装ORACLE11g

    在Redhat 6环境下安装Oracle 11g是一项复杂的过程,需要确保系统满足特定的软件和硬件需求。以下是一步步的详细步骤: 1. **检查系统版本和RPM包**: - `uname -r` 命令用于查看当前Redhat的内核版本,这里显示的...

    oracle9iforlinux安装文档.pdf

    此外,你还需要修改/etc/security/limits.conf文件,设置Oracle用户的nofile和nproc限制,以允许更多的文件描述符和进程数,这对于处理大量并发连接的数据库服务至关重要。 在所有这些配置完成后,你就可以开始...

    Red Hat6(x86_x64)安装oracle_11g_r2

    然后,需要修改`/etc/security/limits.conf`文件,为`oracle`用户设置软限制和硬限制,以支持更多进程和打开的文件数。此外,还需要在`/etc/pam.d/login`中添加参数,确保会话时加载资源限制。同时,对于C Shell用户...

    oracle 10g for linux32安装心得

    在`/etc/sysctl.conf`文件中,增加关于共享内存(kernel.shmall和kernel.shmmax)、信号量(kernel.shmmni和kernel.sem)和文件描述符限制(fs.file-max)的设置。 - **应用核心参数**:通过运行`/sbin/sysctl –p`...

    oracle_10g在Linux下的安装步骤(自写的)

    - Oracle 10g可能不直接支持RHEL 5,因此需要修改`/etc/redhat-release`文件中的内容,使其模拟Oracle认可的版本,例如改为RHEL AS 4。 4. **创建用户和组**: - 创建专门的Oracle用户组`oinstall`和`dba`,然后...

    oracle 在linux中的安装步骤

    `kernel.shmall`表示共享内存的总页面数,`kernel.shmmax`定义了单个共享内存段的最大大小,`kernel.shmmni`是共享内存段的最大数量,`kernel.sem`涉及信号量设置,而`fs.file-max`则是系统能打开的最大文件数。...

    Linux环境安装oracle 11g数据库

    4. **限制用户资源**:为Oracle用户(例如,'oracle')设置`/etc/security/limits.conf`文件,以增加进程和文件描述符的数量。这有助于Oracle数据库管理大量并发连接和文件操作。 5. **PAM配置**:在`/etc/pam.d/...

Global site tag (gtag.js) - Google Analytics