Chinaunix首页 | 论坛 | 博客
  • 博客访问: 278431
  • 博文数量: 27
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 943
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 11:11
文章分类

全部博文(27)

文章存档

2011年(1)

2010年(1)

2009年(1)

2008年(24)

我的朋友

分类: LINUX

2010-04-25 12:03:24

v$process视图学习
通过v$processv$session,可以把操作系统和数据库系统联系起来,以下语句是从数据库到操作系统:

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$processspid为操作系统的进程号。

以下语句是从操作系统到数据库:

以root身份登录操作系统,执行topas命令,可以看到相关操作系统任务,如果此时有Oracle服务器进程消耗过多资源,可以找到其进程号,通过进程号把v$processv$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

阅读(717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~