免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 15844 | 回复: 4
打印 上一主题 下一主题

经常出现ORA-12520错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-23 11:06 |只看该作者 |倒序浏览
有一台oracle10g的服务器db1,3台应用服务器app,每台app上安装有sqlb,跑PHP程序通过sqlb连接到db1的oracle。

最近2周每2,3天就出现app客户端连接不上db1的情况,在db1上运行sqlplus,出现ORA-12520错误:

[oracle@db1 ~]$ sqlplus test@orcl

SQL*Plus: Release 10.1.0.3.0 - Production on Sat Mar 22 22:37:51 2008

Copyright (c) 1982, 2004, Oracle.  All rights reserved.

Enter password:
ERROR:
ORA-12520: TNS:listener could not find available handler for requested type of
server

Enter user-name: test
Enter password:
ERROR:
ORA-00018: maximum number of sessions exceeded


listener.log中也显示从客户端来的连接也是这个错误:

22-MAR-2008 22:26:45 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=)(HOST=app1)(USER=test)
)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.160)(PORT=6298)) * establish * orcl * 12520
TNS-12520: TNS:listener could not find available handler for requested type of server


重启listener无济于事,需要shutdown 数据库再startup才行。

检查发现lsnrctl service输出中显示的一个established:数值一直增长:

[oracle@db1 ~]$ lsnrctl service

LSNRCTL for Linux: Version 10.1.0.3.0 - Production on 22-MAR-2008 23:54:24

Copyright (c) 1991, 2004, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:1729 refused:0 state:ready        ######### established:数值一直增长
         LOCAL SERVER
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: db1.localdomain, pid: 12023>
         (ADDRESS=(PROTOCOL=tcp)(HOST=db1.localdomain)(PORT=47536))
The command completed successfully
[oracle@db1 ~]$


从今天凌晨1点到今天上午11点,已经增长到 established:24780 ,是否跟这个有关?增长到65536(ulimit -n)时就挂了?

请问大家该如何解决?

[ 本帖最后由 sealinger 于 2008-3-23 11:09 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-03-23 13:08 |只看该作者
嗯。ulimit -n, 还有processes,ulimit -u ?
还有 processes  参数(show parameter processes )
看着几个方面吧

论坛徽章:
0
3 [报告]
发表于 2008-03-24 22:15 |只看该作者
好像不是 ulimit -n 的限制,那个“established:” 24小时就超过 65536 (ulimit -n)了,现在是
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:127798 refused:0 state:ready    #########这么多了,还没出现问题
         LOCAL SERVER


我的ulimit:

[oracle@db1 log]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 16384
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[oracle@db1 log]$


show parameters process:

SQL> show parameters process

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
job_queue_processes                  integer     0
log_archive_max_processes            integer     2
processes                            integer     250
SQL>


请问大侠,情况怎样?我是新手,不懂Oracle。

论坛徽章:
0
4 [报告]
发表于 2008-03-25 08:51 |只看该作者
ORA-00018: maximum number of sessions exceeded
表示你的session过多了。
你有多少个client 连过来?
如果这个数很大,接近或超过250 ,那么,你应该增大 processes 和sessions参数的值
如果这个数并不大,明显小于250 ,那么,就要考虑是不是client有重复连接的问题了。
select count(*),program,machine,osuser
from v$session
group by program,machine,osuser
having count(*) > 5
看看有没有异常,有的话找应用的问题。

论坛徽章:
0
5 [报告]
发表于 2008-03-25 15:30 |只看该作者
谢谢楼上:

SQL> select count(*),program, machine,osuser from v$session group by program,machine,osuser having count(*) >1;
rows will be truncated


  COUNT(*) PROGRAM                                          MACHINE
---------- ------------------------------------------------ ----------------------------------------
         2 php@app1 (TNS V1-V3)                             app1
        10 sqlbquery@app1 (TNS V1-V3)                       app1
         6 sqlbquery@app2 (TNS V1-V3)                       app2
         8 sqlbquery@mail1 (TNS V1-V3)                      mail1
         8 sqlbquery@mail2 (TNS V1-V3)                      mail2


这样看到的是连进来的客户端数量?应该不多吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP