一次Oracle行級鎖導致的問題

來源:互聯網
上載者:User

一次Oracle行級鎖導致的問題

發現問題:今天開發同事讓給修改一行資料的某幾個欄位,非常之簡單的操作,確因為對Oracle鎖機制的理解不到位導致問題。

我同時用plsql/developer 和CRT兩種工具都串連上了資料庫,然後打算在plsql/developer上update一個欄位,在CRT上update一個欄位(我也不知道當時是怎麼想的,哈哈)然後就莫名其妙的夯住了。。。。。由於自己經驗和學識不足,還傻傻的等待中,還以為是資料量太大呢,原來是鎖的原因,

分析問題:我在plsql/developer是用的system使用者串連的資料庫,而在crt用  sqlplus / as  sysdba 串連資料庫,是sys使用者。現在在plsql/developer中update了一個欄位,沒有commit,就直接在CRT上update了另一個欄位,導致後者等待,應為已經有了行級鎖,
解決問題:
.1、 用dba許可權的使用者查看資料庫都有哪些鎖

select a.username,a.sid,a.serial#,a.logon_time
 from v$locked_object b,v$session a
 where b.session_id=a.sid order by a.logon_time;
 
.2、根據sid查看具體的sql語句,如果sql不重要,可以kill

select sql_text from v$session a,v$sqltext_with_newlines b
  where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value
  and a.sid=&sid order by piece;
3、kill該事務
alter system kill session '339,13545';
然後再次執行update,最好用同一個使用者執行,非常快的執行了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.