分类: LINUX
2010-04-25 12:03:24
select p.spid, s.sid, s.serial#, s.program from v$process, v$session s
where p.addr = s.paddr and s.sid = &sid;
其中v$process的spid为操作系统的进程号。
以下语句是从操作系统到数据库:
以root身份登录操作系统,执行topas命令,可以看到相关操作系统任务,如果此时有Oracle服务器进程消耗过多资源,可以找到其进程号,通过进程号把v$process与v$session关联,可以找到此进程在数据库系统中正在执行的sql语句:
SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
SELECT DECODE (sql_hash_value,
0, prev_hash_value,
sql_hash_value
),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '&pid'))
ORDER BY piece ASC