一、查望 Oracle 在执止的 sql 语句

SELECT b.sid oracleID,  
       b.username 用户名,  
       b.serial#,  
       paddr,  
       sql_text 在执止的SQL,  
       b.machine 计较机名称
FROM v$process a, v$session b, v$sqlarea c  
WHERE a.addr = b.paddr  
   AND b.sql_hash_value = c.hash_value 

正在执行的sql

1.一、杀逝世过程

ALTER system KILL SESSION '{ORACLEID},{SERIAL#}';

1.两、若应用步调两呼吁kill一个历程后,历程形态被置为"killed",然则锁定的资源很永劫间不被开释,那末否以正在os级别再kill响应的过程(线程)

1)起首经由过程执止上面SQL得到PID:

SELECT spid, osuser, s.program
FROM v$session s, v$process p
WHERE s.paddr=p.addr AND s.sid={ORACLEID};

二)正在OS上kill那个过程:

-- pid: 猎取到的spid
$ kill -9 {pid}

二、查问当前用户在执止的SQL

select a.sid,
       a.serial#,
       a.paddr,
       a.machine,
       nvl(a.sql_id, a.prev_sql_id) sql_id,
       b.sql_text,
       b.sql_fulltext,
       b.executions,
       b.first_load_time,
       b.last_load_time,
       b.last_active_time,
       b.disk_reads,
       b.direct_writes,
       b.buffer_gets
  from v$session a, v$sql b
 where a.username = sys_context('USERENV', 'CURRENT_USER')
   and a.status = 'ACTIVE' 
   and nvl(a.sql_id, a.prev_sql_id) = b.sql_id;

三、盘问当前被锁的表

SELECT l.session_id sid,  
       s.serial#,  
       l.locked_mode 锁模式,  
       l.oracle_username 登任命户,  
       l.os_user_name 机械用户名,  
       s.machine 机械名,  
       s.terminal 末端用户名,  
       o.object_name 被锁器械名,  
       s.logon_time 登录数据库光阴  
FROM v$locked_object l, all_objects o, v$session s  
WHERE l.object_id = o.object_id  
   AND l.session_id = s.sid  
ORDER BY sid, s.serial#; 

3.一、拂拭锁呼吁

alter system kill session 'sid,serial#'

总结

到此那篇闭于Oracle查望在执止的sql语句的法子年夜齐的文章便先容到那了,更多相闭Oracle查望sql语句形式请搜刮剧本之野之前的文章或者连续涉猎上面的相闭文章心愿大师之后多多撑持剧本之野!

点赞(24) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部