设为首页 收藏本站
查看: 802|回复: 0

[经验分享] ORACLE 查询数据库锁相关的语句

[复制链接]
YunVN网友  发表于 2016-8-18 07:42:27 |阅读模式
  
--查询那些用户,操纵了那些表造成了锁机 
SELECT s.username,
       decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
       o.owner,
       o.object_name,
       o.object_type,
       s.sid,
       s.serial#,
       s.terminal,
       s.machine,
       s.program,
       s.osuser
FROM v$session s, v$lock l, all_objects o
WHERE l.sid = s.sid
   AND l.id1 = o.object_id(+)
   AND s.username is NOT Null;

--查出被锁的表,和锁住这个表的会话ID 
select a.session_id, b.*
from v$locked_object a, all_objects b
where a.object_id = b.object_id;

--查出对应的SQL语句 
select vs.SQL_TEXT,
       vsess.sid,
       vsess.SERIAL#,
       vsess.MACHINE,
       vsess.OSUSER,
       vsess.TERMINAL,
       vsess.PROGRAM,
       vs.CPU_TIME,
       vs.DISK_READS
from v$sql vs, v$session vsess
where vs.ADDRESS = vsess.SQL_ADDRESS
   and vsess.sid = (1033);

五、
1.查哪个过程被锁 

查V$DB_OBJECT_CACHE视图: 

SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND LOCKS!='0'; 


2. 查是哪一个SID,通过SID可知道是哪个SESSION. 

查V$ACCESS视图: 

SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名'; 


3. 查出SID和SERIAL# 

查V$SESSION视图: 

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID' 


查V$PROCESS视图: 

SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR'; 


4. 杀进程 

(1).先杀ORACLE进程: 

ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#'; 


(2).再杀操作系统进程: 

KILL -9 刚才查出的SPID 

或 

ORAKILL 刚才查出的SID 刚才查出的SPID

六、查找最耗费系统资源的SQL 
--CPU 
select b.sql_text, 
a.buffer_gets, 
a.executions, 
a.buffer_gets/decode(a.executions , 0 , 1 , a.executions), 
c.username 
from V$sqlarea a, 
v$sqltext_with_newlines b, 
dba_users c 
where a.parsing_user_id = c.user_id 
and a.address = b.address 
order by a.buffer_gets desc , b.piece 


--IO 
select b.sql_text, 
a.disk_reads, 
a.executions, 
a.disk_reads/decode(a.executions , 0 , 1 , a.executions), 
c.username 
from v$sqlarea a, 
v$sqltext_with_newlines b, 
dba_users c 
where a.parsing_user_id = c.user_id 
and a.address = b.address 
order by a.disk_reads desc , b.piece 



select s.sid,s.value "CPU Used" 
from v$sesstat s,v$statname n 
where s.statistic#=n.statistic# and n.name='CPU used by this session' 
and s.value>0 
order by 2 desc;  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-259547-1-1.html 上篇帖子: Oracle导出程序Exp的使用具体过程 下篇帖子: 【转】ORACLE执行计划的一些基本概念
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表