『壹』 oracle經常死鎖,鎖定資料庫的一些表,導致oracle死鎖的原因一般有那些
一般情況只發生鎖超時,就是一個進程需要訪問資料庫表或者欄位的時候,另外一個程序正在執行帶鎖的訪沒塵問(比如修改數據),那麼這個進程就會等待,當等了很久鎖還沒有解除的話就會鎖超時,報告一個系統錯誤,拒絕執行相應的sql操作。發生死鎖的情況比較少,比如一個段掘進程需要訪問兩個資源(資料庫表或者欄位),當獲取一個資源的時候進程就對它執行鎖定,然後等待下一個資源空閑,這時候如果另外一個進程也需要兩個資源,而已經獲得並鎖定了第二個資源,那麼就會死鎖,因為當前進程鎖定第一個資源等待第二個資源,而另外一個握察核進程鎖定了第二個資源等待第一個資源,兩個進程都永遠得不到滿足。
erp100.com
『貳』 oracle資料庫用戶被鎖 原因
一般Oracle用戶被鎖,有兩種原因:1、管理員設置密碼到期時間,時間到了就鎖了;2、管理員設置密碼容錯次數,比如10次,密碼輸入錯誤超過10次就會被鎖。賬號被鎖也不要驚慌,管理員可以後台手動解鎖的,主要是防止你的密碼被別人暴力破解。
『叄』 oracle資料庫被鎖了怎麼辦
用戶被鎖了?
FAILED_LOGIN_ATTEMPTS參數默認是10,即:用戶連續輸入10次錯誤密碼,用戶會被鎖住;
可以使用其他擁有DBA許可權的用戶進行解鎖;
alter user username account unlock;
如果是資料庫內部出現死鎖或阻塞會話,可以先查出阻塞的會話,
select * from dba_waiters;
在殺掉阻塞的會話
alter system kill session 'sid,serial#';
測試環境,可以直接重啟資料庫!
『肆』 殺死Oracle資料庫死鎖進程的具體方法
殺死 Oracle 死鎖進程的具體步驟
1 查哪個過程被鎖
查V$DB_OBJECT_CACHE視圖:
襪嫌
SELECT * FROM V$DB_OBJECT_CACHE
WHERE OWNER= 過程的所屬用戶 AND CLOCKS!= ;
拍舉
查是哪一個SID 通過SID可知道是哪個SESSION
查V$ACCESS視圖:
SELECT * FROM V$ACCESS WHERE
OWNER= 過程的所屬用戶 AND NAME= 剛才查到的過程名 ;
查出SID和SERIAL#
查V$SESSION視圖:
SELECT SID SERIAL# PADDR FROM
V$SESSION WHERE SID= 剛才查到的SID
查V$PROCESS視圖:
SELECT SPID FROM V$PROCESS
WHERE ADDR= 剛才查到的PADDR ;
殺進程
告賀手
( ) 先殺Oracle進程:
ALTER SYSTEM KILL SESSION 查出的SID 查出的SERIAL# ;
( ) 再殺操作系統進程:
KILL 剛才查出的SPID
或
lishixin/Article/program/Oracle/201311/17026
『伍』 如何查看oracle資料庫死鎖
1、?用SYS登陸TOAD
2、打開菜單臘畝Database-Monitor-SessionBrowser
3、查看棗弊所有會話,是否凳局族存在鎖定資源的情況!
4、?如果有死鎖,可以將此會話Kill掉!
『陸』 oracle資料庫表被鎖了不能操作怎麼辦
首先你要知道表鎖住了是不是正常鎖?因為任何DML語句都會對表加鎖。
你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業務需求,不建議隨便KILL
session,如果這個鎖表是正常業務你把session
kill掉了會影響業務的。
建議先查原因再做決定。
(1)鎖表查詢的代碼有以下的形式:
select
count(*)
from
v$locked_object;
select
*
from
v$locked_object;
(2)查看哪個表被鎖
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;
(3)查看是哪個session引起的
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;
(4)查看是哪個sql引起的
select
b.username,b.sid,b.serial#,c.*
from
v$locked_object
a,v$session
b,v$sql
c
where
a.session_id
=
b.sid
and
b.SQL_ID
=
c.sql_id
and
c.sql_id
=
''
order
by
b.logon_time;
(5)殺掉對應進程
執行命令:alter
system
kill
session'1025,41';
其中1025為sid,41為serial#.
『柒』 oracle資料庫 賬號為什麼被鎖了
oracle資料庫賬號有密碼策略,一般情況下,密碼輸入錯誤超過10次 該賬號就會自動鎖定,需要dba管理員解鎖。該鎖定次數dba管理員也是可以手動更改的,有些重要系統會改成3次以加強系統安全性。還有一種情況是密碼到有效期了,需要強制更改密碼,這個參數一般是設置成3個月更改一次。
『捌』 oracle資料庫死鎖怎麼解決
Oracle資料庫出現死鎖的時候可以按照以下處理步驟加以解決:
第一步:嘗試在sqlplus中通過sql命令進行刪除,如果能夠刪除成功,則萬事大吉!但通常情況下,出現死鎖時,想通過命令行或者通過Oracle的管理工具刪除有死鎖的session,oracle只會將該session標記為killed,但無法清除掉,往往需要通過第二步在操作系統層級進行刪除!
.2.0.1.0
Connectedasquik
SQL>selectxisn,object_id,session_id,locked_modefromv$locked_object;--查死鎖的對象,獲取其SESSION_ID
XIDUSNOBJECT_IDSESSION_IDLOCKED_MODE
-----------------------------------------
1030724293
1030649293
SQL>selectusername,sid,serial#fromv$sessionwheresid=29;--根據上步獲取到的sid查看其serial#號
USERNAMESIDSERIAL#
--------------------------------------------------
QUIK2957107
SQL>altersystemkillsession'29,57107';--刪除進程,如已經刪除過,則會報ora-00031的錯誤;否則oracle會將該session標記為killed狀態,等待一段時間看能否會自動消失,如長時間消失不掉,則需要做後續步驟
altersystemkillsession'29,57107'
ORA-00031:sessionmarkedforkill
SQL>selectpro.spidfromv$sessionses,v$processprowhereses.sid=29andses.paddr=pro.addr;--查看spid號,以便在操作系統中根據該進程號刪除進程
SPID
------------
2273286
第二步:進入操作系統進行刪除進程,本示例的操作系統是IBM aix。
login:root--錄入用戶名
root'sPassword:--錄入密碼
*******************************************************************************
**
**
*WelcometoAIXVersion5.3!*
**
**
*PleaseseetheREADMEfilein/usr/lpp/bosforinformationpertinentto*
*.*
**
**
*******************************************************************************
Lastunsuccessfullogin:FriApr2314:42:57BEIDT2010on/dev/pts/1from10.73
.52.254
Lastlogin:FriApr2315:27:50BEIDT2010on/dev/pts/2from10.73.52.254
#ps-ef|grep2273286--查看進程詳情
root22898642494636017:07:15pts/10:00grep2273286
oracle22732861014:38:24-0:21oracleQUIK(LOCAL=NO)
#kill-92273286--刪除進程,小心操作,別寫錯進程號,如果oracle的關鍵進程被刪,資料庫會崩潰的!
#ps-ef|grep2273286--再次查看
root22898642494636017:07:15pts/10:00grep2273286
ForWindows,attheDOSPrompt:orakillsidspid
ForUNIXatthecommandline>kill–9spid
『玖』 orcal資料庫表被鎖了怎麼解鎖
1、在做Oracle監聽程序測試時,發現帳戶已經被鎖定。
『拾』 oracle表在什麼情況下會被鎖住
在對指定表做append操作,其他再做truncate時候,會產生鎖表,如下驗證步物物指驟罩配,
1、創建測試表,
create table test_lock(id number, value varchar2(200));