如何找出被鎖定的行
oracle鎖的最小單元是行,oracle在鎖定記錄的時候直接在對應的行做一個標識,但我們並不能透過檢視查詢出被鎖的行。(想想道理也很簡單,如果每一個被鎖的行對應一條記錄,那麼在大資料量更新的資料庫是不可接受的)。
但是,我們可以透過其他方式查詢出被鎖的行。
v$sesion中有ROW_WAIT_OBJ#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#,ROW_WAIT_FILE#,可以幫助我們來確定被鎖的行。
其中:
ROW_WAIT_OBJ#:對應dba_objects的data_object_id
ROW_WAIT_BLOCK#:被鎖住行所在block id
ROW_WAIT_ROW#:被鎖住行的行號
ROW_WAIT_FILE#:對應v$datafile的rfile#
下面透過一個例子來說明如何找出被鎖住的行。
SQL> select id,rowid from f;
ID ROWID
---------- ------------------
2 AAADQHAAUAAAxDfAAA
12 AAADQHAAUAAAxDfAAB
會話一、
SQL> update f set id=2 where id=2;
1 row updated
會話二、
SQL> @show_sid
SID
----------
22
SQL> update f set id=2 where id=2;
此時會話二被阻塞。用下面的SQL找出被阻塞的行。
SQL> select dbms_rowid.rowid_create(1,data_object_id,rfile#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#) "rowid"
2 from v$session,dba_objects,v$datafile
3 where sid=22 and ROW_WAIT_OBJ#=object_id and file#=ROW_WAIT_FILE#
4 ;
rowid
------------------
AAADQHAAUAAAxDfAAA
可以看出,找出的rowid就是被更新的rowid。
這裡注意幾點:
1、ROW_WAIT_OBJ#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#,ROW_WAIT_FILE#的數值只在被阻塞的會話是有效的
2、如果更新多行,則ROW_WAIT_OBJ#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#,ROW_WAIT_FILE#對應的是第一個被阻塞的行的資訊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63786/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [ Linux ] Jellyfin 賬戶被鎖定如何解鎖Linux
- 如何在其他Session跳過被鎖定的記錄Session
- win10賬號被鎖定怎麼辦_win10管理員賬戶被鎖定了如何解決Win10
- 如何根據MLOG$表的CHANGE_VECTOR$$找出被更新的列
- win10 自定義縮放比例被鎖定怎麼辦_win10 自定義縮放比例被鎖定如何解決Win10
- 如何快速鎖定 Mac,Macbook快速鎖定的幾種方法Mac
- 萬彩動畫大師教程 | 如何選中編輯被鎖定的文字?動畫
- 蘋果Apple ID被鎖定了怎麼辦?蘋果手機ID被鎖怎麼解鎖?蘋果APP
- Win10系統下管理員帳戶被鎖定如何解決Win10
- 如何找出兩個文字檔案中有相同欄位的行
- excel鎖定公式$怎麼輸入 表格中如何鎖定公式Excel公式
- oracle檢視被鎖的表和解鎖Oracle
- Java Main 如何是如何被執行的?JavaAI
- Java 如何找出兩個文字檔案中有相同欄位的行Java
- 零售行業新渠道 如何鎖定目標客戶?行業
- win10系統鎖定桌面桌布防止被修改的方法Win10
- 檢視oracle被鎖的表是誰鎖的Oracle
- win10桌面桌布被鎖定無法修改怎麼辦_win10桌面桌布被鎖定無法更改的解決方法Win10
- win10指紋鎖如何設定_win10設定指紋解鎖的方法Win10
- 如何找出引起ORA-1652的SQL?SQL
- 如何鎖定excel表頭兩行 excel每頁固定表頭列印Excel
- win10解析度被鎖定了怎麼辦Win10
- 如何鎖定Mac電腦螢幕?Mac
- 卑鄙者的墓誌銘:REvil勒索軟體罪魁首次被鎖定
- win10如何設定自動鎖定螢幕_win10設定自動鎖屏的步驟Win10
- 如何凍結和鎖定你的 Linux 系統Linux
- QZ面試被問select......for update會鎖表還是鎖行lor面試
- 如何在Linux中鎖定和解鎖多個使用者Linux
- Cisdem AppCrypt如何進行部分鎖定/解鎖應用程式?APP
- Oracle報錯>記錄被另外一個使用者鎖定Oracle
- 使用JDK自帶的工具jstack找出造成執行程式死鎖的原因JDKJS行程
- PPT如何鎖定一些元素(使用母版的策略)
- JVM找出佔用CPU最高的執行緒JVM執行緒
- windows10鎖屏桌布如何設定_win10鎖屏桌布設定步驟WindowsWin10
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL
- win10自動鎖定如何設定_win10系統怎麼設定自動鎖屏Win10
- 【STAT】Oracle 表統計資訊被鎖,如何建立索引Oracle索引
- Flutter 鎖定行列的 FlexGridFlutterFlex