熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle中被鎖定的解決辦法

2013-11-13 16:15:19  來源: Oracle 

  一些性能方面的告警信息通過dba_outstanding_alerts表都能查到被鎖定的表如果長期得不到釋放在這裡也能查到相關session的sid和serial#

  

  select * from dba_outstanding_alerts

  v$locked_object視圖可以看到當前被鎖定的對象只有那些一直存在的session才有可能是被鎖定的因此不能簡單匆忙的下結論尤其是在RAC環境中必須查看各個節點以發現相關的session在哪裡

  

  select * from v$locked_object

  有時候也可以根據對象名來查看鎖的信息

  

  select sididtype from v$lock where id=

  (select object_id from dba_objects where object_name=upper(mytablename));

  找到了引起鎖定的session就可以找到對應的sid和serial#

  

  select saddrsidserial#paddrusernamestatus from v$session where sid=

  從而可以殺死這個session

  

  SQL> alter system kill session ;

  System altered

  可以查詢Oracle數據庫的進程和操作系統進程之間的關聯

  

  select spid osuser sprogram from v$session sv$process p
where spaddr=paddr and ssid=

  有時候一些進程要在操作系統殺死這時可以用kill pid的命令

  

  [root@erpdevdb ~]# ps ef|grep sqlplus
oracle : pts/ :: sqlplus S @/oracle/home/droptablesql
root : pts/ :: grep sqlplus
[root@erpdevdb ~]# kill

  數據庫對象鎖定引起的阻塞是比較麻煩的事情處理的時候一定要小心謹慎


From:http://tw.wingwit.com/Article/program/Oracle/201311/18034.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.