open_cursor数量

一个案例

[@more@]
首先登陆到DB.
cmd sqlplus xx/xx@xxxx
 
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 1月 10 16:25:45 2005
 
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
 

连接到:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
察看应用中一个session可以打开的cursor数量
 
SQL> show parameter open_cursor
 
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
open_cursors                         integer
300
 
 
运行脚本
脚本会以交互形式完成.

SQL> @?/open_cursor.sql
 
       SID   COUNT(*)
---------- ----------
       296        224
       305         73
       294         31
       320         28
       315         21
       314         19
       317         18
       302         14
       303         13
       318         13
       288         12
 
       SID   COUNT(*)
---------- ----------
       312         12
       289         10
       290         10
       311          9
       293          8
       309          8
       295          8
       321          6
       280          5
       281          2
       324          2
 
       SID   COUNT(*)
---------- ----------
       307          2
       306          2
       301          2
       299          2
       291          2
       283          2
       285          2
       298          2
       286          2
       287          1
       325          1
 
       SID   COUNT(*)
---------- ----------
       308          1
       300          1
       297          1
 
已选择36行。
 
这里我发现session ID为296的session已经打开了224个cursor。我觉得有问题。
所以输入session ID 296进行进一步观察
找到这个session最后一次执行的sql语句的hash_value
根据hash_value找到有可能有问题的sql语句.
 
输入 sid 的值:  296
原值    1: select sid,SQL_HASH_VALUE,PREV_HASH_VALUE from v$session where sid=&s
id
新值    1: select sid,SQL_HASH_VALUE,PREV_HASH_VALUE from v$session where sid=29
6
 
       SID SQL_HASH_VALUE PREV_HASH_VALUE
---------- -------------- ---------------
       296     1819321687      1819321687
 
输入 hash_value 的值:  1819321687
原值    1: select sql_text from v$sqltext where hash_value=&hash_value order by
piece
新值    1: select sql_text from v$sqltext where hash_value=1819321687 order by p
iece
 
SQL_TEXT
--------------------------------------------------------------------------------
 
select * from APPINFO where APPID= :1
 
我感觉这应可能有问题.
 
 
系统一级确认:
 ps -ef | grep ora
。。。
oracle   16438     1  0 Jan07 ?        00:15:46 oracleorcl (LOCAL=NO)
oracle   16462     1  0 Jan07 ?        00:04:50 oracleorcl (LOCAL=NO)
oracle   16481     1  0 Jan07 ?        00:06:22 oracleorcl (LOCAL=NO)
oracle   16483     1  0 Jan07 ?        00:01:42 oracleorcl (LOCAL=NO)
。。。
我发现16438这个session执行了00:15:46
SQL> @D:lyprocessgetUserMsgbyPid.sql
输入 spid 的值:  16438
原值    5: select addr from v$process where spid = &spid
新值    5: select addr from v$process where spid = 16438
 
       SID    SERIAL# USERNAME   MACHINE              LOGON      STATUS
---------- ---------- ---------- -------------------- ---------- ----------
       296       6032 MOSP_INIT  mospapp2.lingtu.net  2005-01-07 INACTIVE
                                                       19:53:37
发现SID正好是296.
 
 
that's enough.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/76065/viewspace-786669/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/76065/viewspace-786669/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值