查看oracle中是否有锁表以及如何处理锁表

转载自:https://www.cnblogs.com/alapha/p/8920762.html

一、用dba用户登录,或者将用户赋权为DBA用户

    命令:

    su - oracle

    sqlplus / nolog

   conn sys as sysdba

   sys

   grant connect,resource,dba to TSAMS(用户名);

二、执行sql查看被锁的表、用户、session等信息。参考文章:http://www.cnblogs.com/XQiu/p/5212787.html

--以下几个为相关表

SELECT * FROM v$lock;

SELECT * FROM v$sqlarea;

SELECT * FROM v$session;

SELECT * FROM v$process ;

SELECT * FROM v$locked_object;

SELECT * FROM all_objects;

SELECT * FROM v$session_wait;

--查看被锁的表

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

--查看那个用户那个进程照成死锁

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

--查看连接的进程

SELECT sid, serial#, username, osuser FROM v$session;

--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode

SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,

s.terminal, s.logon_time, l.type

FROM v$session s, v$lock l

WHERE s.sid = l.sid

AND s.username IS NOT NULL

ORDER BY sid;

这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,

任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。

--杀掉进程 sid,serial#

alter system kill session'210,11562';

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 常用语句: sql/plus sqlplus 'amdocs/Amdocs.Jx.China.110#@ysdb1...
    好好学习的蜗牛阅读 3,112评论 0 0
  • --以下几个为相关表 SELECT * FROM v$lock; SELECT * FROM v$sqlarea;...
    星熠长空阅读 249评论 0 0
  • 闭包(Closures) 闭包是自包含的函数代码块,可以在代码中被传递和使用。 Closures are self...
    Ro_bber阅读 573评论 0 2
  • 姐姐刚刚拿到驾照,就迫不及待地开车上路了。虽然速度很慢,但我们还是为她揪着心。姐姐满不在乎地说:“没关系,...
    程紫衣阅读 264评论 0 0
  • 我的小学就在三个地方上的,7岁上学的时候是在三线企业的一个子弟学校,刚上了半年,因为爸爸的工作调动,就搬到了另...
    开心的灵通阅读 324评论 0 0