September 2009 Archives

ORA-12537 错误

| No Comments | No TrackBacks

1 开发人员提供的错误信息

"got minus one from a read call",这是一个 Java Exception,java.sql.SQLException: Io exception: 。

数据库环境是 AIX,Oracle 10.2.0.4。应用环境是 maximo 一个连接池,应用 A 两个连接池,还有一个报表程序没使用连接池,都使用同一个数据库用户 max61。

现象是总 session 达到 100 左右,max61 就无法建立新数据库连接了(程序及 PL/SQL 都是)。必须把应用重启,session 都释放了才能连接。

2 在 PL/SQL 中不断建立连接,使问题重现。

PL/SQL 提示错误:

Could not logon as max61
ORA-12537: TNS: 连接已关闭

3 查看 C:\Program Files\PLSQL Developer\sqlnet.log 文件,其中记录错误如下

Fatal NI connect error 12537, connecting to:
 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.108.188)(PORT=1521))(CONNECT_DATA=(SID=hxmis)(SERVER=DEDICATED)(CID=(PROGRAM=C:\Program Files\PLSQL Developer\plsqldev.exe)(HOST=APPSERVER-2)(USER=Administrator))))

  VERSION INFORMATION:
 TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
 Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 9.2.0.1.0 - Production
  Time: 28-9月 -2009 10:25:58
  Tracing not turned on.
  Tns error struct:
    nr err code: 0
    ns main err code: 12537
    TNS-12537: TNS:连接关闭
    ns secondary err code: 12560
    nt main err code: 507
    TNS-00507: 连接已关闭
    nt secondary err code: 0
    nt OS err code: 0

4 查看数据库 listener.ora 文件,其中记录错误如下

28-SEP-2009 11:07:36 * (CONNECT_DATA=(SID=hxmis)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.108.88)(PORT=3763)) * establish * hxmis * 12518
TNS-12518: TNS:listener could not hand off client connection
 TNS-12549: TNS:operating system resource quota exceeded
  TNS-12560: TNS:protocol adapter error
   TNS-00519: Operating system resource quota exceeded
    IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable

5 查看 oralce 文档 TNS-00519

提出的解决方法有两个,一是修改 Oracle 的 PROCESSES 参数,二是解决 sqlnet.log 或 listener.log 中记录的操作系统问题

http://download.oracle.com/docs/cd/B14117_01/network.101/b10775/troublestng.htm#CEGJGAFD,内容如下:

TNS-12549/ORA-12549: TNS:operating system resource quota exceeded and TNS-00519: Operating system resource quota exceeded
Cause: A quota or hard limit imposed by the operating system has been exceeded.
Possible limits include:
* The maximum number of processes allowed for a single user
* The operating system is running low on paging space

Action: Perform the appropriate action:
Increase the number of processes by setting the PROCESSES parameter in the database initialization file to a larger value.

Check the sqlnet.log or listener.log file for detailed error stack information, such as an operating system error code to help identify which quota has been exceeded.

listener.log 中有操作系统错误的文字描述:IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable

6 Google: TNS-00519 Operating system resource quota exceeded aix 连接

找到一篇:http://blog.csdn.net/mosaic/archive/2008/12/29/3639164.aspx,内容如下:

今天一个项目现场反馈程序启动时出现TNS-12537错误。检查了oracle的listener.log,发现客户端应用出错时的输出为:

TNS-12518: TNS:listener could not hand off client connection
 TNS-12549: TNS:operating system resource quota exceeded
  TNS-12560: TNS:protocol adapter error
   TNS-00519: Operating system resource quota exceeded
    IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable

看起来是系统资源不足,oracle无法获取资源。

检查了内存还有好几个G,再检查了ulimit -a,也都设置的比较大,再用df -k检查了文件系统,除了/usr,其他都空的比较多。清除/usr/tmp下面的一些垃圾,还是没有解决。

后来google了一下TNS-00519  IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable,返回结果只有三篇。不过在第一篇文章http://blog.oracle.com.cn/html/77/t-132377.html的一位强人的答复中, 针对Error: 11: Resource temporarily unavailable问题提到了处理方式是Increase the appropriate OS kernal parameters for 'maximum number of processes allowed per user'.
原来该主机是项目现场新搞的一个环境,maxuproc参数是缺省的128,因此一旦oracle用户下进程数达到这个上线之后,客户端就无连接了。

附:用lsattr -E -l sys0|grep maxuproc可以查看maxuproc当前设置,通过root用户执行chdev -l sys0 -a maxuproc=1024 就可以修改为1024.

7 实际操作

以 root 用户分别登录到 51、52 两台机器上
执行:chdev -l sys0 -a maxuproc=1024

将操作系统用户最大进程改为 1024

chdev 命令:http://www.kuqin.com/aixcmds/aixcmds1/chdev.htm

北京洗车行业用水现状

| No Comments | No TrackBacks

    截至目前,北京市汽车保有量已将近 350 万辆。而根据测算,清洗一辆汽车的用水量约为 0.16 吨。若以 350 万辆汽车每周清洗一次计算,全市每年因为洗车耗费的水资源就多达 3000 万吨,这些水相当于一个 120 万人口的城市全年的生活用水量。

    目前洗车业的用水来源有三类:

  • 洗车业水价水,2004 年北京水价调整后,洗车业水价由每吨 21 元调整到 41.5 元;
  • 中水,价格是 1 元钱,但是当前北京市中水管道覆盖率低,中水主要靠车辆运输。一吨中水的运输费用需要 15 元至 20 元;
  • 盗用民用自来水

    按照此前市水务局公布的数据显示,2008 年北京洗车业用水仅仅消耗了 2.3 万吨,而在北京每天 70 万吨中水产量中,中水洗车只占 1%,即全年不超过 300 万吨,两项换比下来,在北京每年洗车消耗的水资源中,大约有 90% 的用水是盗用了民用水。

    2009 年,市政协经济委员会已经将《关于加强立法管理全面禁止商业性清水洗车的提案》列为专委会重点督办提案。2009 年 8 月 11 日,北京市水务局在答复市政协经济委提案时表示,《北京市洗车行业用水管理要求》将在年内公布,届时,使用自来水洗车的企业须保证其八成用水经过循环设施。2009 年还将出台《北京市排水和再生水管理办法》,目前草案已公开征集意见。同时,北京正研究制订《北京市洗车行业用水地方标准》,争取 2010 出台。


[1] 2004-08-01 水价调整
    http://www.bjwater.gov.cn/tabid/110/Default.aspx
   
[2] 北京市水务局:洗车点用自来水八成须循环
    http://news.bjnews.com.cn/2009/0812/40985.shtml

[3] 北京市拟出台洗车用水标准
    http://www.beinet.net.cn/fxyj/topic/qgtzggdt/bjtgdt/200908/t441551.htm

About this Archive

This page is an archive of entries from September 2009 listed from newest to oldest.

July 2009 is the previous archive.

October 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.