當前位置:首頁 » 數據倉庫 » oracle資料庫鎖死
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫鎖死

發布時間: 2023-04-22 07:47:47

『壹』 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));