oracle 解鎖相關方法

2021-05-22 22:32:47 字數 2616 閱讀 2378

-- 檢視有哪些表被鎖住

select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id;

-- 檢視有哪些表被鎖住

select b.username,b.sid,b.serial#,logon_time

from v$locked_object a,v$session b

where a.session_id = b.sid order by b.logon_time

-- 殺程序中的會話

alter system kill session 'sid,serial#';

alter system kill session '29,5497';

-- 如果有ora-00031錯誤,則在後面加immediate;alter system kill session '29,5497' immediate;

-- 1.查哪個過程被鎖:

-- 查v$db_object_cache檢視

select * from v$db_object_cache

where owner ='ods'

and locks!='0'

and name like '%tict_c_settle_cdr_d%'

;-- 2. 查是哪乙個sid,通過sid可知道是哪個session:

-- 查v$access檢視:

select * from v$access where owner='ods' and object   = 'po_tict_c_settle_cdr_d3';

-- 3. 查出sid和serial#:

select sid,serial#,paddr from v$session where sid= 1450

-- 查v$process檢視:

select spid from v$process where addr='070000045263ab10';

-- 4. 殺程序:

alter system kill session '查出的sid,查出的serial#';

-- 再殺作業系統程序:

kill -9 剛才查出的spid或orakill 剛才查出的sid 剛才查出的spid。

-- oracle的死鎖

select t2.username||'  '||t2.sid||' 

'||t2.serial#||'  '||t2.logon_time||' 

'||t3.sql_text

from v$locked_object t1,v$session t2,v$sqltext t351testing

where t1.session_id=t2.sid

and t2.sql_address= t3.address

order by t2.logon_time;

-- 查詢出來的結果就是有死鎖的session了,下面就是殺掉,拿到上面查詢出來的sid和serial#,填入到下面的語句中:

alter system kill session 'sid,serial#';

一般情況可以解決資料庫存在的死鎖了,或通過session id 查到對應的作業系統程序,在unix中殺掉作業系統的程序。

select a.username,c.spid as os_process_id,c.pid

as oracle_process_id from v$session a,v$process c

0where c.addr=a.paddr and a.sid= and a.serial#=

然後採用kill (unix) 或 orakill(windows )。

在unix中:

ps -ef|grep os_process_id

kill -9 os_process_id

ps -ef|grep os_process_id

經常在oracle的使用過程中碰到這個問題,所以也總結了一點解決方法。51testing軟體測試網$o??-voh/

1)查詢死鎖的程序:

sqlplus "/as sysdba"  (sys/change_on_install)

select s.username,l.object_id,l.session_id,s.serial#,

l.oracle_username,l.os_user_name,l.process

from v$locked_object l,v$session s where l.session_id=s.sid;

2)kill掉這個死鎖的程序:

alter system kill session 『sid,serial#』; (其中sid=l.session_id)

3)如果還不能解決:

select pro.spid from v$session ses,

v$process pro where ses.sid=xx and ses.paddr=pro.addr;

其中sid用死鎖的sid替換:

exit

其中spid是這個程序的程序號,kill掉這個oracle程序。

oracle表解鎖方法

1.獲取出sid,serial 用於解鎖的引數 select s.username,s.osuser,s.sid,s.serial p.spid from v session s,v process p where s.paddr p.addr and s.username is not null ...

Oracle使用者解鎖方法

oracle在安裝後一些user是預設鎖定的,例如常用到的scott user是lucked的,那我們要使用她就必須先設法給她unluck,本文將介紹怎麼手動給scoot user解鎖,當然你也可以在oracle的以系統管理員身份進入enterprise manager console中通過勾選解鎖...

理解鎖和閂(1)與鎖相關的資料結構

在oracle眼裡,鎖不是稀有資源,相反地,只要需要,你就應該長期地持有對資料所加的鎖。行級鎖根本沒有相關開銷,對1千萬行鎖定所需的資源數與對1行鎖定所需的資源數完全相同,這是個常量。佇列資源池 存放所有的佇列資源.鎖就是佇列資源。例如 乙個表上的tm鎖就是乙個佇列資源,有多少個表就有多少個tm佇列...