日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle查看被锁的行,查找被锁的表到底是哪一行被锁定了

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle查看被锁的行,查找被锁的表到底是哪一行被锁定了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有一個人問,所以總結了一下。

http://www.itpub.net/528153.html

簡單的總結一下。

首先v$session中的這幾個字段的含義分別為

row_wait_row#---被鎖定行的rownum,但是準確的說是對應的于rowid的rownum,并非是單純的rownum。下面再詳細的說。

row_wait_obj#---row_wait_row#對應的rowid所在的表的object id。

row_wait_file#-- row_wait_row#對應的rowid所在的數據文件id

row_wait_block#--row_wait_row#對應的rowid所在的block的id

只有一個session等待另一個session的時候,這幾個列的值才是有效的。

想要知道某一個表具體被鎖定的是哪一行,可以利用上面這幾個值,查找出被鎖定行的rowid。

使用dbms_rowidb包的一個子過程(Subprograms)rowid_create

DBMS_ROWID.ROWID_CREATE (

rowid_type? ? IN NUMBER,

object_number IN NUMBER,

relative_fno??IN NUMBER,

block_number??IN NUMBER,

row_number? ? IN NUMBER)

RETURN ROWID;

其中rowid_type的取值為 0 表示生成一個restricted ROWID(pre-oracle8 format); 取值為1 表示生成一個extended ROWID.

object_number取值是dba_objects視圖中的data_object_id,并不是object_id,也就是說不能用row_wait_obj#.

relative_fno取值是Relative文件號,在dba_data_files里可以查到

block_number取值是數據文件的塊號,也就是v$session中的row_wait_block#的值

row_number通過rowid對應出來的rownum,也就是row_wait_row#的值。

通過使用

select DBMS_ROWID.ROWID_CREATE(1,data_object_id,relative_fno,row_wait_block#,row_wait_row#) from dual;

查找出的rowid即為被鎖定的行。

如果有多行數據被鎖定,row_wait_row#顯示的是靠''前''的行。

總結

以上是生活随笔為你收集整理的oracle查看被锁的行,查找被锁的表到底是哪一行被锁定了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。