数据库 mysql oracle

解决Oracle数据库表被锁死情况下的两个技巧

oracle HTML我帮您 1年前  9277次浏览
第一种方法:
用系统账户如sys as SYSDBA 登录进去
1、查看数据库锁,诊断锁的来源及类型:

  select object_id,session_id,locked_mode from v$locked_object;
或者用以下命令:

select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id
2、找出数据库的serial#,以备杀死:

   select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;
3、杀死该session

  alter system kill session 'sid,serial#'
第二种方法:
慢慢等待,据说oracle也会把该进程杀死

select p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.process and c.object_id=b.object_id
查看连接的进程
SELECT sid, serial#, username, osuser FROM v$session;
杀掉进程
alter system kill session 'sid,serial#';


发表评论