select * from v$access a where object like '存儲(chǔ)過(guò)程名%' --存儲(chǔ)過(guò)程名為大寫(xiě)字母
創(chuàng)新互聯(lián)專(zhuān)注于全州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。全州網(wǎng)站建設(shè)公司,為全州等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
select * from v$session where sid=74 --74為上一個(gè)查詢(xún)得到的SID值,可能是多個(gè),這里找到他們對(duì)應(yīng)的serial#值
alter system kill session '74,118' --參數(shù)為'sid,serial#',用于停止這個(gè)回話,同時(shí)也終止了存儲(chǔ)過(guò)程
你說(shuō)的影響是指什么?如果僅僅是查詢(xún),對(duì)數(shù)據(jù)庫(kù)沒(méi)什么壞影響。好的影響要看你是怎么終止的。
如果僅僅是在窗口終止查詢(xún),那么會(huì)釋放一部分cpu和磁盤(pán)io通道。如果是殺掉了查詢(xún)進(jìn)程,或者關(guān)掉了查詢(xún)連接,那么除了上面的以外,還會(huì)釋放一部分內(nèi)存。
問(wèn)題場(chǎng)景:在操作大數(shù)據(jù)量的時(shí)候,會(huì)出現(xiàn)種種問(wèn)題導(dǎo)致數(shù)據(jù)不正確導(dǎo)致需要重新處理數(shù)據(jù),如果這個(gè)時(shí)候刪除表數(shù)據(jù)會(huì)無(wú)法刪除成功,然后手動(dòng)終止會(huì)話可能會(huì)提示“標(biāo)記要終止的會(huì)話”,這是因?yàn)槭謩?dòng)終止會(huì)話后,進(jìn)程的狀態(tài)被設(shè)置為“killed”,但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么可以在OS級(jí)再殺死相應(yīng)的進(jìn)程(線程),詳細(xì)操作如下:
1,查詢(xún)臨時(shí)會(huì)話的session:
--查找sql執(zhí)行的會(huì)話session id, 用session id 這一欄的數(shù)據(jù)進(jìn)行kill掉會(huì)話
SELECT B.SID,
? B.OBJECT,
? A.SQL_ID,
? A.LOGON_TIME,
? A.SQL_EXEC_START,
? A.MODULE,
? C.SQL_TEXT,
? C.SQL_FULLTEXT,
? A.OSUSER,
? A.EVENT#,
? A.EVENT,
? A.INST_ID,
? A.ACTION,
? A.PROCESS,
? A.STATUS,
? 'alter system kill session ''' || a.sid || ', ' || a.serial# ||
? ', @' || a.inst_id || ''' IMMEDIATE;' kill_session,
? A.*
FROM GV$SESSION A, GV$ACCESS B,GV$SQL C
WHERE A.SID = B.SID
AND A.INST_ID = B.INST_ID
AND A.SQL_ID = C.SQL_ID(+)
AND A.INST_ID = C.INST_ID(+)
--AND A.TYPE 'BACKGROUND'
--AND A.STATUS = 'ACTIVE'
AND B.OWNER = 'BI_DM'
--AND A.INST_ID =1
--AND A.ACTION IN ('ORA$AT_SA_SPC_SY_4630','ORA$AT_OS_OPT_SY_4629')
AND B.OBJECT = 'TMP_T_JOBNAME'
--AND A.USERNAME LIKE 'DEV%'
--AND A.MACHINE IN (/*'infor',*/'winitdb')
ORDER BY A.SQL_EXEC_START;
2,執(zhí)行session id 里面是語(yǔ)句
alter system kill session '2761, 65372, @2' IMMEDIATE;
在kill session的時(shí)候,當(dāng)提示RA-00031:標(biāo)記要終止的會(huì)話 時(shí)
按如下操作:
1,select a.spid,b.sid,b.serial#,b.username?from v$process a,v$session b?where a.addr=b.paddr?and b.status='KILLED';
2,如果利用上面的命令殺死一個(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 b.spid,a.osuser,b.program?from v$session a,v$process b?where a.paddr=b.addr??and a.sid=9065? ? ?--9065就是上面的sid
.在OS上殺死這個(gè)進(jìn)程(線程)
1)、在unix上,用root身份執(zhí)行命令:#kill -9 9065(即第2步查詢(xún)出的spid)?
2)、在windows(unix也適用)用orakill殺死線程,orakill是oracle提供的一個(gè)可執(zhí)行命令,語(yǔ)法為:orakill sid thread?
其中:
sid:表示要?dú)⑺赖倪M(jìn)程屬于的實(shí)例名 。可以用select?name?from?v$database;查詢(xún)
thread:是要?dú)⒌舻木€程號(hào),即第2步查詢(xún)出的spid。?
? ? 例:c:orakill system 9065
注意:這里要注意的是kill OS進(jìn)程是在服務(wù)端操作,而不是你程序所在客戶(hù)機(jī)
文章題目:怎么終止oracle查詢(xún) oracle退出sql命令
文章源于:http://aaarwkj.com/article28/hhpccp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、企業(yè)建站、商城網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站改版、Google
聲明:本網(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)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容