oracle 表鎖死的解決方法

2021-09-30 11:39:23 字數 3109 閱讀 3314

我們在運算元據庫

的 時候,有時候會由於操作不當引起資料庫表被鎖定,這麼我們經常不知所措,不知怎麼給這些表解鎖,在pl/sql developer工具的的選單「tools」裡面的「sessions」可以查詢現在存在的會話,但是我們很難找到那個會話被鎖定了,想找到所以被鎖的 會話就更難了,下面這叫查詢語句可以查詢出所以被鎖的會話。如下:1、

檢視被鎖的表:

select

p.spid,

c.object_name,

b.session_id,

a.serial#,

b.oracle_username,

b.os_user_name

from

v$process p, v$session a, v$locked_object b, all_objects c

where

p.addr = a.paddr

anda.process = b.process

andc.object_id = b.object_id;

解鎖:alter system kill session

'b.session_id,a.serial#';或

在系統層面終止程序:

[windows] ntsd -c q -p

p.spid

[linux]  

ps -ef|grep

p.spid2、

查詢當前表鎖的方法:

select

all_objects.object_name,

s.sid,

s.serial#,

s.osuser,

s.program,

s.machine,

s.client_info

from

v$lock k, v$session s, all_objects

where

k.sid = s.sid

andk.typein(

'tx'

,'tm')

andk.id1 = all_objects.object_id;

v$locked_object

:用以詳細的描述了當前鎖定物件的詳細資訊,

object_id

為物件id

,session_id

為當前登入使用者

session

號,oracle_username

為oracle

的使用者名稱,

os_user_name

為作業系統使用者名稱等

v$lock

:該檢視說明當前鎖定的所有物件,鎖定

sid號,鎖定型別等資訊; 3

、查詢鎖 --

存在鎖請求,即被阻塞

select

sn.username,

m.sid,

sn.serial#,

m.type,

decode(m.lmode, 0

, 'none',

1,'null',

2,'row share',

3,'row excl.',

4,'share',

5,'s/row excl.',

6,'exclusive'

, lmode,

ltrim(to_char(lmode,

'990'

))) lmode,

decode(m.request, 0

, 'none',

1,'null',

2,'row share',

3,'row excl.',

4,'share',

5,'s/row excl.',

6,'exclusive'

, request,

ltrim(to_char(m.request,

'990'

))) request,

m.id1,

m.id2

from

v$session sn, v$lock m

where

sn.sid = m.sid

andm.request !=0

order

byid1, id2, m.request

--不存在鎖請求,但是鎖定的物件被其他會話請求鎖定

select

sn.username,

m.sid,

sn.serial#,

m.type,

decode(m.lmode, 0

, 'none',

1,'null',

2,'row share',

3,'row excl.',

4,'share',

5,'s/row excl.',

6,'exclusive'

, lmode,

ltrim(to_char(lmode,

'990'

))) lmode,

decode(m.request, 0

, 'none',

1,'null',

2,'row share',

3,'row excl.',

4,'share',

5,'s/row excl.',

6,'exclusive'

, request,

ltrim(to_char(m.request,

'990'

))) request,

m.id1,

m.id2

from

v$session sn, v$lock m

where

sn.sid = m.sid

andm.request =0

andm.lmode !=4

and(id1, id2)in(

select

s.id1, s.id2

from

v$lock s

where

request !=0

ands.id1 = m.id1

ands.id2 = m.id2)

order

byid1, id2, m.request

解決oracle表鎖死

oracle中檢視表是否被鎖 select rule a.sid,b.owner,object name,b.object type from v lock a,all objects b where a.type tm and a.id1 b.object id 查到的都是被鎖的表 這樣可以把它殺...

Oracle表被鎖解決方法

最近在工作中遇到了oracle資料庫表被鎖的情況,導致無法對錶進行修改,再這裡給大家分享一下解決方法,避免大家從踩坑 1 查詢鎖的session id mysql select session id from v locked object 例 3334 2 根據session id查詢鎖的會話資訊...

oracle之鎖表的解決方法

首先,查處鎖定表的session 的sid,serial os user name,machine name,terminal 和執行的語句 select l.session id sid,s.serial l.locked mode,l.oracle username,s.user l.os us...