oracle被鎖住怎么辦,oracle用戶(hù)被鎖住怎么解鎖

oracle數(shù)據(jù)庫(kù)死鎖怎么解決

Oracle數(shù)據(jù)庫(kù)出現(xiàn)死鎖的時(shí)候可以按照以下處理步驟加以解決:

成都創(chuàng)新互聯(lián)是專(zhuān)業(yè)的福田網(wǎng)站建設(shè)公司,福田接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行福田網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

第一步:嘗試在sqlplus中通過(guò)sql命令進(jìn)行刪除,如果能夠刪除成功,則萬(wàn)事大吉!但通常情況下,出現(xiàn)死鎖時(shí),想通過(guò)命令行或者通過(guò)Oracle的管理工具刪除有死鎖的session,oracle只會(huì)將該session標(biāo)記為killed,但無(wú)法清除掉,往往需要通過(guò)第二步在操作系統(tǒng)層級(jí)進(jìn)行刪除!

Connected?to?Oracle9i?Enterprise?Edition?Release?9.2.0.1.0?

Connected?as?quik

SQL?select?xidusn,?object_id,?session_id,?locked_mode?from?v$locked_object;?--查死鎖的對(duì)象,獲取其SESSION_ID

XIDUSN?OBJECT_ID?SESSION_ID?LOCKED_MODE

----------?----------?----------?-----------

10?30724?29?3

10?30649?29?3

SQL?select?username,sid,serial#?from?v$session?where?sid=29;?--根據(jù)上步獲取到的sid查看其serial#號(hào)

USERNAME?SID?SERIAL#

------------------------------?----------?----------

QUIK?29?57107

SQL?alter?system?kill?session?'29,57107';?--刪除進(jìn)程,如已經(jīng)刪除過(guò),則會(huì)報(bào)ora-00031的錯(cuò)誤;否則oracle會(huì)將該session標(biāo)記為killed狀態(tài),等待一段時(shí)間看能否會(huì)自動(dòng)消失,如長(zhǎng)時(shí)間消失不掉,則需要做后續(xù)步驟

alter?system?kill?session?'29,57107'

ORA-00031:?session?marked?for?kill

SQL?select?pro.spid?from?v$session?ses,v$process?pro?where?ses.sid=29?and?ses.paddr=pro.addr;?--查看spid號(hào),以便在操作系統(tǒng)中根據(jù)該進(jìn)程號(hào)刪除進(jìn)程

SPID

------------

2273286

第二步:進(jìn)入操作系統(tǒng)進(jìn)行刪除進(jìn)程,本示例的操作系統(tǒng)是IBM aix。

login:?root?--錄入用戶(hù)名

root's?Password:?--錄入密碼

*******************************************************************************

*?*

*?*

*?Welcome?to?AIX?Version?5.3!?*

*?*

*?*

*?Please?see?the?README?file?in?/usr/lpp/bos?for?information?pertinent?to?*

*?this?release?of?the?AIX?Operating?System.?*

*?*

*?*

*******************************************************************************

Last?unsuccessful?login:?Fri?Apr?23?14:42:57?BEIDT?2010?on?/dev/pts/1?from?10.73

.52.254

Last?login:?Fri?Apr?23?15:27:50?BEIDT?2010?on?/dev/pts/2?from?10.73.52.254

#?ps?-ef|grep?2273286?--查看進(jìn)程詳情

root?2289864?2494636?0?17:07:15?pts/1?0:00?grep?2273286

oracle?2273286?1?0?14:38:24?-?0:21?oracleQUIK?(LOCAL=NO)

#?kill?-9?2273286?--刪除進(jìn)程,小心操作,別寫(xiě)錯(cuò)進(jìn)程號(hào),如果oracle的關(guān)鍵進(jìn)程被刪,數(shù)據(jù)庫(kù)會(huì)崩潰的!

#?ps?-ef|grep?2273286?--再次查看

root?2289864?2494636?0?17:07:15?pts/1?0:00?grep?2273286

For?Windows,?at?the?DOS?Prompt:?orakill?sid?spid

For?UNIX?at?the?command?line?kill?–9?spid

oracle表在什么情況下會(huì)被鎖住

在對(duì)指定表做append操作,其他再做truncate時(shí)候,會(huì)產(chǎn)生鎖表,如下驗(yàn)證步驟,

1、創(chuàng)建測(cè)試表,

create table test_lock(id number, value varchar2(200));

2、執(zhí)行append語(yǔ)句;并且不做提交,insert /*+append*/ into test_lock values(1,1);

3、再次執(zhí)行清表語(yǔ)句,truncate table test_lock;報(bào)鎖表錯(cuò)誤,

4、查看鎖表語(yǔ)句,發(fā)現(xiàn)被鎖表,

select b.object_name, t.*

from v$locked_object t, user_objects b

where t.object_id = b.object_id

ORACLE報(bào)錯(cuò) ORA-28000: 帳戶(hù)已被鎖定 解決方法,如何解鎖?

原因:oracle輸入密碼不正確,試了10次后,會(huì)自動(dòng)鎖定用戶(hù)。

解決方法:使用sqlplus命令行解鎖。

步驟:

1、打開(kāi)sqlplus窗口,用sysdba角色登錄

2、請(qǐng)輸入用戶(hù)名: /as sysdba

3、SQLalter user GALTTEST account unlock;

? 用戶(hù)已更改。

解鎖成功啦!

oracle表被鎖了怎么處理?

首先你要知道表鎖住了是不是正常鎖?因?yàn)槿魏蜠ML語(yǔ)句都會(huì)對(duì)表加鎖。

你要先查一下是那個(gè)會(huì)話(huà)那個(gè)sql鎖住了表,有可能這是正常業(yè)務(wù)需求,不建議隨便KILL session,如果這個(gè)鎖表是正常業(yè)務(wù)你把session kill掉了會(huì)影響業(yè)務(wù)的。

建議先查原因再做決定。

(1)鎖表查詢(xún)的代碼有以下的形式:

select count(*) from v$locked_object;

select * from v$locked_object;

(2)查看哪個(gè)表被鎖

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)查看是哪個(gè)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)查看是哪個(gè)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)殺掉對(duì)應(yīng)進(jìn)程

執(zhí)行命令:alter system kill session'1025,41';

其中1025為sid,41為serial#.

Oracle賬號(hào)被鎖定如何解鎖

1、查看環(huán)境變量ORACLE_SID的設(shè)置情況:

windows:

echo

%ORACLE_SID%

linux:

echo

$ORACLE_SID

2、

設(shè)置環(huán)境變量ORACLE_SID的值為你想登錄的oracle實(shí)例的SID:

set

ORACLE_SID=orcl

鍵入命令:sqlplus

/

as

sysdba

就可以以sysdba的身份登錄到oracle了!

linux系統(tǒng)下,如果找不到sqlplus命令的話(huà),請(qǐng)切換到oracle用戶(hù)。

在sqlplus窗口執(zhí)行命令:

alter

user

you_username

identified

by

you_password;

就可以修改你的用戶(hù)的密碼了~

如果此時(shí)用戶(hù)被鎖定,沒(méi)關(guān)系:

既然是被鎖住了,那就通過(guò)解鎖system用戶(hù)。

SQL

alter

user

system

account

unlock;

User

altered.

SQL

select

username,account_status

from

dba_users

where

username='SYSTEM';

USERNAME

ACCOUNT_STATUS

----------

--------------------------------

SYSTEM

OPEN

SQL

網(wǎng)站名稱(chēng):oracle被鎖住怎么辦,oracle用戶(hù)被鎖住怎么解鎖
新聞來(lái)源:http://www.muchs.cn/article40/phjjho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站建設(shè)外貿(mào)建站、網(wǎng)站設(shè)計(jì)品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)