一个案例
[@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
------------------------------------ ----------------------
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
---------- ----------
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
---------- ----------
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
---------- ----------
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
---------- ----------
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
原值 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
---------- -------------- ---------------
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
原值 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)
。。。
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
输入 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.
---------- ---------- ---------- -------------------- ---------- ----------
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/