公司oracle数据库进程占的CPU很高,访问网速慢,根据网上查找的资料说:
出于系统管理的需要,有的时候会发现个别Oracle的进程占用大量的系统资源,导致系统运行速度过慢,这时最好的办法是根据该进程的进程ID即PID查到Oracle所执行的SQL,然后进行优化。登入到oracle的sqlplus,以DBA身份执行:
select sa.* from v$process pr,v$session ss,v$sqlarea sa where pr.addr=ss.paddr and ss.sql_hash_value=sa.hash_value and pr.spid=&spid即可查到引起问题的SQL。
======执行后得到一个结果不是SQL语句,是一个2,不知是什么原因.有高手请教一下
出于系统管理的需要,有的时候会发现个别Oracle的进程占用大量的系统资源,导致系统运行速度过慢,这时最好的办法是根据该进程的进程ID即PID查到Oracle所执行的SQL,然后进行优化。登入到oracle的sqlplus,以DBA身份执行:
select sa.* from v$process pr,v$session ss,v$sqlarea sa where pr.addr=ss.paddr and ss.sql_hash_value=sa.hash_value and pr.spid=&spid即可查到引起问题的SQL。
======执行后得到一个结果不是SQL语句,是一个2,不知是什么原因.有高手请教一下
解决方案 »
- “Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常。
- Oracle 和SQL Server的通讯
- 一个update的语法错误问题,望得到指点。
- 求一个SQL语句
- 急急急急……!请教学过VB、VBA和ORACLE的高手们
- 大家能否帮忙列一下锁表的几种典型原因
- 我复制一个数据库是不是用dmp文件?
- 【急】写oracle数据库中clob字段的错误,错误代码:OraOLEDB (0x80004005)
- 为何Oracle8i中,在sqlplus中shutdown时,总是死掉?
- oracle复制部分列
- 请问,sql语句中的 in匹配问题
- Oracle外表加载记录数多1?
占用资源多的除了SQL ,也有可能是应用程序,有hash 值的才是SQL。
1. 先通过top命令查看产用资源较多的spid号2.查询当前耗时的会话ID,用户名,sqlID等:
select sid,serial#,machine,username,program,sql_hash_value,sql_id,
to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session
where paddr in (select addr from v$process where spid in ('5648612','256523'));
3. 如果上一步sql_id或者 hash_value不为空,则可用v$sqlarea查出当前正在使用的sql
select sql_text
from v$sqltext_with_newlines
where hash_value = &hash_value
order by piece;select * from v$sql where sql_id=''oracle 实时查询最耗CPU资源的SQL语句:
http://blog.csdn.net/tianlesoftware/archive/2009/11/30/4898607.aspx------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977
SELECT 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