Oracle 鎖表的原因,及解決方案

2021-09-25 19:04:16 字數 1502 閱讀 6023

oracle中檢視當前系統中鎖表情況

select * from vloc

kedo

bjec

t可以通

過查詢v

locked_object 可以通過查詢 v

locked

o​bj

ect可

以通過查

詢vlocked_object拿到sid和objectid,

然後用sid和vses

sion

鍊錶查詢

是哪裡鎖

的表,用

vsession鍊錶查詢是**鎖的表, 用v

sessio

n鍊錶查

詢是**

鎖的表,

用vsession中的objectid欄位和dba_objects的id欄位關聯,

查詢詳細的鎖表情況。

查詢sql如下:

select sess.sid,

sess.serial#,

lo.oracle_username,

lo.os_user_name,

ao.object_name,

lo.locked_mode

from vloc

kedo

bjec

tlo,

dbao

bjec

tsao

,v

locked_object lo, dba_objects ao, v

locked

o​bj

ectl

o,db

ao​b

ject

sao,

vsession sess, v$process p

where ao.object_id = lo.object_id and lo.session_id = sess.sid;

查詢是什麼sql引起了鎖表的原因,sql如下:

select l.session_id sid,

s.serial#,

l.locked_mode,

l.oracle_username,

s.user#,

l.os_user_name,

s.machine,

s.terminal,

a.sql_text,

a.action

from vsql

area

a,

vsqlarea a, v

sqlare

aa,v

session s, v$locked_object l

where l.session_id = s.sid and s.prev_sql_addr = a.address

order by sid, s.serial#;

oracle解鎖的方法

alter system kill session 『sid,serial#』;

spid 鎖住的程序號

serial# v$session 這個檢視中取出來的

Oracle鎖表的原因及解鎖方法

產生的原因最大的可能就是更改資料沒有提交事務,資料庫就將表鎖住!所以在更新時不要用select from a for update這樣的語句很容易鎖表,可能用select t.rowid from t 這樣的語句代替,這個也是資料庫推薦使用的語句。解鎖的方法 1 檢視鎖表程序 sql select ...

Oracle使用者被鎖的原因及解決辦法

oracle使用者被鎖的原因及解決辦法 在登陸時被告知test使用者被鎖 1 用dba角色的使用者登陸,進行解鎖,先設定具體時間格式,以便檢視具體時間 sql alter session set nls date format yyyy mm dd hh24 mi ss session altere...

資料庫鎖表原因及解決思路

1 鎖表發生在insert update delete 中 2 鎖表的原理是 資料庫使用獨佔式封鎖機制,當執行上面的語句時,對錶進行鎖住,直到發生commite 或者 回滾 或者退出資料庫使用者 3 鎖表的原因 第一 a程式執行了對 tablea 的 insert 並還未 commite時,b程式也...