原因之一:在进行数据修改时somehow数据库 lock住了。
解决办法:
SQL> select session_id from v$locked_object;
SESSION_ID
----------
X
SQL> SELECT sid, serial#, username, osuser FROM v$session where sid =X
SID SERIAL# USERNAME OSUSER
---------- ---------- ------------------------------------------------------------
X Y SA fy
SQL> ALTER SYSTEM KILL SESSION 'X,Y';
三行语句搞定。
二、ORA-00060:等待资源的时候检测到死锁的解决办法
当ORACLE出现表锁死的情况,会导致其他人员无法编辑相关资料,严重的造成应用程式崩溃。
如何处理表死锁的问题?
1、查询锁死的表;
SELECT /*+ rule*/ a.sid, b.owner, object_name, object_type FROM v$lock a, all_objects b WHERE TYPE = 'TM' and a.id1 = b.object_id ;
2、根据SID查询SID和SERIAL#;
SELECT sid,serial# FROM v$session WHERE sid = &sid;
3、根据SID和SERIAL#,杀掉被锁死的表,使之可被编辑。
alter system kill session 'SID,SERIAL#';
若是有多个节点,以上SQL语句中,将“v$lock”修改为“gv$lock”,
“v$session ”修改為“gv$session ”,否则会遗漏信息。
三、编译存储过程的时候数据库卡死
select b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b
where a.SID = b.SID
alter system kill session 'SID,SERIAL#' immediate;