天气: 晴朗
心情: 高兴
最近,客户经常反映oracle 很占cpu, 我去support。
1:先用topas 看了一下,确实很大。
2:用管理员 id 登陆,su - oracle
3: sqlplus /nolog
4: conn / as sysdba;
5: 根据 topas 看到的大进程的pid number : (假设是1171652)
SQL> select sid,serial# from v$session b where b.paddr = (select addr from v$process c where c.spid = 1171652);
SID SERIAL#
---------- ----------
632 4963
6 可以根据需要把它kill 掉:
altersystemkillsession'sid,serial#'immediate
当然可以先看一下这个sql 代码:SELECT/*+ ORDERED */
sql_text
FROMv$sqltext a
WHERE(a.hash_value, a.address)IN(
SELECTDECODE (sql_hash_value,
0, prev_hash_value,
sql_hash_value
),
DECODE (sql_hash_value,0, prev_sql_addr, sql_address)
FROMv$session b
WHEREb.paddr = (SELECTaddr
FROMv$process c
WHEREc.spid = XXXXX))
ORDERBYpieceASC
这样cpu 利用就没有那么大啦。