如何解決ORACLE表死結問題

來源:互聯網
上載者:User

當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 ”,否則會遺漏資訊。

方法二:

以下的文章主要描述的是Oracle死結的解決辦法,你如果對Oracle死結的具體解決辦法有興趣的話你就可以點擊以下的文章進行觀看了。以下就是具體方案的描述,希望在你今後的學習中會有所協助。

  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).能過CMD控制台,再殺作業系統進程:

  ORAKILL 資料庫實現 剛才查出的SPID

  一定要記住,要把之前查出的Oracle死結記下來,然後,一一對其Kill,如果Kill不乾淨的話,還是解決不了問題

  上述的相關內容就是對Oracle死結解決辦法的描述,希望會給你帶來一些協助在此方面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.