一、要找出最耗资源的 sql
我们可以首先使用 top 等工具,找到最好资源的进程(记住进程号),例如,操作系统进程号为 2796,然后
根据这个进程号(v$process.spid)在 v$process 中找到进程地址(v$process.addr),然后根据这个地
址在 v$session 中找到相应的 sid(v$session.sid),然后根据这个 sid 找到相应的 hash
alue(v$session. sql_hash_value),然后根据这个 hash alue 在 v$sqltext,
$sql,v$sqlarea 等视图中找到对应的 sql 语句(sql_text)。
select * from v$process where spid='2796';
select sql_hash_value,machine,username,program from v$session where
PAddr='63B7A584';
select * from v$sqltext where hashvalue='833203018';
select * from v$sql where hashvalue='833203018';
select * from v$sqlarea where hashvalue='833203018';
SELECT
a.username,a.machine,a.program,a.sid,a.serial#,a.status,c.piece,c.sql_text FROM
v$session a,v$process b,v$sqltext c WHERE b.spid='2796' AND b.addr=a.paddr AND
a.sql_address=c.address(+) ORDER BY c.piece
============================================
select sql_text
from v$sqltext
where (hash_value,sql_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
where paddr = (select addr from v$process where spid='操作系统进程 id')
)
=================================================
二、oracle 被锁问题集及解决方案
1.错误信息:ORA-28000: the account is locked
原因分析: The user has entered wrong password consequently for maximum number of
times specified by the user's profile parameter FAILED_LOGIN_ATTEMPTS, or the
DBA has locked the account
解决办法: Wait for PASSWORD_LOCK_TIME or contact DBA
2.视图被锁住的问题
解决的办法:
1.找出等待事件的原因
select event,p1,p2,sid from v$session_wait where event not like 'SQL%' and event
not like 'rdbms%';
2.找出锁住的进程
select object_id,session_id,locked_mode from v$locked_object;
评论