-- 檢視有哪些表被鎖住
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佇列...