Oracle v$session 中sql_id 为 null 说明

先看SQL 查询结果:

select sql_id,count(1) from v$active_session_history

where sample_time>to_timestamp('2012-10-25 09:00:00','yyyy-mm-ddhh24:mi:ss')

and sample_time<to_timestamp('2012-10-25 09:22:00','yyyy-mm-ddhh24:mi:ss')

and event='latch: library cache'

group by sql_id;

SQL_ID COUNT(1)

------------- ----------

1547 --注意这里有1547个SQL_ID 为null 的session信息

3dbdh26zbshcb 17

4cqx327x2p1av 17

9wbjxzbsvbn0g 17

08a4nkjhhu0ff 17

2g8g37mp0304q 17

1sqtxcuf8tctq 17

1kza9ykw04rhv 17

4tbtmv2aq6gba 17

a8q344u5s79n6 17

fqdndxrnd0fjm 17

2asgk01xtb6p0 9

4gd6b1r53yt88 17

3jnz9j02us7px 17

5p9r2w0f7rs03 17

7qx7wfncsqar3 17

59mm6v008wuac 17

9pnxbcs78g9v6 17

8rmkkwdygf2yn 17

8f40rh0ykpkp6 17

dhbbr2byp32sw 17

220yg2acnxq94 17

4hn96ptb7q6mh 17

6gvch1xu9ca3g 17

7cwugf152r2s3 17

cqqtc133jjuuq 17

26 rows selected.

继续查:

SQL> set lin 200

SQL> col sid for a10

SQL> col machine for a20

SQL> col program for a30

SQL> col event for a15

SQL> col sql_id for a10

SQL> col type for a15

SQL> set pagesize 500

SQL> col STATUS for a10

SQL> col PREV_SQL_ID for a15

SQL>select sid,sql_id,SQL_hash_value,prev_hash_value,prev_sql_id,event from v$session;

SID STATUS PROGRAM TYPE SQL_ID PREV_SQL_ID EVENT

---------- ---------- ------------------------------------------ ---------- -------------------------------------------------------

277 ACTIVE oracle@H64AORA1(J000) USER jobq slavewait

281 INACTIVE plsqldev.exe USER a2b6nvx99pgrn SQL*Net message from client

284 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

293 INACTIVE oracle@H64AORA1(TNS V1-V3) USER a7s2g79u9fjpb SQL*Net message from client

297 INACTIVE JDBC ThinClient USER dkwkp258ky77j SQL*Net message from client

298 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

299 INACTIVE JDBC ThinClient USER SQL*Net messagefrom client

302 INACTIVE JDBC ThinClient USER 3rq4s8tpx168s SQL*Net message from client

308 INACTIVE sqlplus@H64AORA1(TNS V1-V3) USER dyk4dprp70d74 SQL*Net message from client

312 INACTIVE JDBC ThinClient USER SQL*Netmessage from client

313 ACTIVE oracle@H64AORA1(q001) BACKGROUND Streams AQ: qmnslave idle wait

317 ACTIVE oracle@H64AORA1 (QMNC) BACKGROUND Streams AQ: qmncoordinator idle wait

322 ACTIVE oracle@H64AORA1(MMNL) BACKGROUND rdbms ipc message

324 ACTIVE oracle@H64AORA1(CJQ0) BACKGROUND rdbms ipc message

325 ACTIVE oracle@H64AORA1(RECO) BACKGROUND rdbms ipc message

326 ACTIVE oracle@H64AORA1(SMON) BACKGROUND smon timer

327 ACTIVE oracle@H64AORA1(CKPT) BACKGROUND rdbms ipc message

328 ACTIVE oracle@H64AORA1(LGWR) BACKGROUND rdbms ipc message

329 ACTIVE oracle@H64AORA1(DBW1) BACKGROUND rdbms ipc message

330 ACTIVE oracle@H64AORA1(DBW0) BACKGROUND rdbms ipc message

331 ACTIVE oracle@H64AORA1(MMAN) BACKGROUND rdbms ipc message

332 ACTIVE oracle@H64AORA1(PSP0) BACKGROUND rdbms ipc message

333 ACTIVE oracle@H64AORA1(PMON) BACKGROUND pmon timer

647 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

650 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

653 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

656 INACTIVE JDBC ThinClient USER 5zr4cbj9m140b SQL*Net message from client

657 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

664 INACTIVE JDBC ThinClient USER 520mkxqpf15q8 SQL*Net message from client

29 rows selected.

真相浮出水面:根据查询结果:sql_id为null 的session 有2种,一种是后台进程,还有就是inactive的session。

对于SQL_ID 为null 的session,我们可以查看v$session中的 prev_sql_id 找到之前v$session 的SQL语句,当然这里也可能为空。

如:

$ ora sqltext a2b6nvx99pgrn

Session altered.

SQL_TEXT

--------------------------------------------------------------------------------

select null from dba_synonyms where 1=0

$ ora sqltext 520mkxqpf15q8

Session altered.

SQL_TEXT

--------------------------------------------------------------------------------

select 1 from dual

---------------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Skype: tianlesoftware

QQ: tianlesoftware@gmail.com

Email: tianlesoftware@gmail.com

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Twitter: http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware