一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間不釋放,有時(shí)實(shí)在沒(méi)辦法,只好重啟數(shù)據(jù)庫(kù)?,F(xiàn)在提供一種方法解決這種問(wèn)題,那就是在ORACLE中殺不掉的,在OS一級(jí)再殺。
創(chuàng)新互聯(lián)基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)電信機(jī)房托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
1.下面的語(yǔ)句用來(lái)查詢哪些對(duì)象被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2.下面的語(yǔ)句用來(lái)殺死一個(gè)進(jìn)程:
alter system kill session '24,111'; (其中24,111分別是上面查詢出的sid,serial#)
【注】以上兩步,可以通過(guò)Oracle的管理控制臺(tái)來(lái)執(zhí)行。
3.如果利用上面的命令殺死一個(gè)進(jìn)程后,進(jìn)程狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么可以在os一級(jí)再殺死相應(yīng)的進(jìn)程(線程),首先執(zhí)行下面的語(yǔ)句獲得進(jìn)程(線程)號(hào):
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)
4.在OS上殺死這個(gè)進(jìn)程(線程):
1)在unix上,用root身份執(zhí)行命令:
#kill -9 12345(即第3步查詢出的spid)
2)在windows(unix也適用)用orakill殺死線程,orakill是oracle提供的一個(gè)可執(zhí)行命令,語(yǔ)法為:
orakill sid thread
其中:
sid:表示要?dú)⑺赖倪M(jìn)程屬于的實(shí)例名
thread:是要?dú)⒌舻木€程號(hào),即第3步查詢出的spid。
例:c:orakill orcl 12345
1、找到并進(jìn)入運(yùn)行窗口:(可以用windows+r快捷鍵哦)輸入sqlplus命令:如圖
2、進(jìn)入新窗口后使用scott/tiger用戶和密碼進(jìn)行登錄會(huì)發(fā)現(xiàn)登錄不成功:如圖
3、這時(shí)我們可以使用system用戶進(jìn)行登錄,應(yīng)為此用戶的權(quán)限排第二,并且密碼我們已經(jīng)在安裝時(shí)輸入了了,所以是可以登錄進(jìn)入的:如圖
4、system登錄成功之后就可以使用命令給用戶進(jìn)行解鎖了:如圖
5、最后再用scott/tiger用戶時(shí),你可以神奇的發(fā)現(xiàn)此時(shí)能連接成功了:如圖
1.啟動(dòng)SQL Plus
2.在其窗口輸入相對(duì)應(yīng)的字段
請(qǐng)輸入用戶名: connect / as sysdba
輸入口令: 直接回車
3.連接成功后執(zhí)行:
SQL? alter user 需要解鎖的用戶名 account unlock; ?--用戶的解鎖
SQL alter user 需要修改口令的用戶名 identified by 新口令; ?--口令的修改
例如要將scott用戶解鎖,則執(zhí)行
SQL? alter user scott? account unlock;
例如要將system用戶的口令修改為Oracle,則執(zhí)行
SQL alter user system identified by Oracle;
用戶被鎖了?
FAILED_LOGIN_ATTEMPTS參數(shù)默認(rèn)是10,即:用戶連續(xù)輸入10次錯(cuò)誤密碼,用戶會(huì)被鎖??;
可以使用其他擁有DBA權(quán)限的用戶進(jìn)行解鎖;
alter user username account unlock;
如果是數(shù)據(jù)庫(kù)內(nèi)部出現(xiàn)死鎖或阻塞會(huì)話,可以先查出阻塞的會(huì)話,
select * from dba_waiters;
在殺掉阻塞的會(huì)話
alter system kill session 'sid,serial#';
測(cè)試環(huán)境,可以直接重啟數(shù)據(jù)庫(kù)!