用以下的sql可以查詢出當(dāng)前session中正在運(yùn)行的sql信息:
創(chuàng)新互聯(lián)建站專注于成縣企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。成縣網(wǎng)站建設(shè)公司,為成縣等地區(qū)提供建站服務(wù)。全流程按需定制設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
select
s.module,
sql_text,
sn.osuser,
sn.machine,
s.executions
from
sys.v_$sql
s,
sys.all_users
u,
v$session
sn
where
s.parsing_user_id
=
u.user_id
and
upper(u.username)
in
('username')
and
(upper(s.module)
=
'app.exe')
and
sn.sql_hash_value
=
s.hash_value
and
sn.sql_address
=
s.address
order
by
s.last_load_time
找出正在執(zhí)行的JOB編號(hào)及其會(huì)話編號(hào) SELECT SID,JOB FROM DBA_JOBS_RUNNING; 停止該JOB的執(zhí)行 SELECT SID,SERIAL# FROM V$SESSION WHERE SID='SID'; ALTER SYSTEM KILL SESSION 'SID,SERIAL'; EXEC DBMS_JOB.BROKEN(JOB,TRUE);實(shí)例分析:1,查詢正在運(yùn)行的Job,通過查詢有兩個(gè),和進(jìn)程占用較多的是兩個(gè)ORACLE進(jìn)程符合。SQL SELECT SID,JOB FROM DBA_JOBS_RUNNING; SID JOB\x0d\x0a---------- ----------12 11616 1172,查詢正在運(yùn)行的job的信息SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12'; SID SERIAL#\x0d\x0a---------- ----------\x0d\x0a12 4SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16'; SID SERIAL#\x0d\x0a---------- ----------\x0d\x0a16 13,利用查詢出來的job信息將job結(jié)束掉SQL ALTER SYSTEM KILL SESSION '12,4';System altered.SQL ALTER SYSTEM KILL SESSION '16,1';System altered.\x0d\x0a4,如果不希望運(yùn)行上述job的話,可以將job設(shè)置為broken.EXEC DBMS_JOB.BROKEN(116,TRUE);EXEC DBMS_JOB.BROKEN(117,TRUE);
1. 在V$ACCESS視圖中找到要停止進(jìn)程的SID:
SELECT SID FROM V$ACCESS WHERE NAME='存儲(chǔ)過程名稱';
2. 在V$SESSION視圖中查找到查出SID和SERIAL#
SELECT SID,SERIAL#,FROM V$SESSION WHERE SID='剛才查到的SID'。
3.殺掉查找出來的進(jìn)程
alter system kill session 'SID,SERIAL#' immediate;
解釋:進(jìn)程都有唯一的進(jìn)程id(SID)和序列號(hào)(SERIAL#),之后通過kill命令即可強(qiáng)制停止進(jìn)程。
如果想正常關(guān)閉,那么最好是:先手動(dòng)斷開所有數(shù)據(jù)庫(kù)連接(外部鏈接,比如訪問等),關(guān)閉監(jiān)聽(防止再次產(chǎn)生外部鏈接),然后殺掉所有正在執(zhí)行的數(shù)據(jù)庫(kù)進(jìn)程(數(shù)據(jù)庫(kù)內(nèi)部的一些,比如正在執(zhí)行的執(zhí)行計(jì)劃等,主進(jìn)程別殺啊),然后關(guān)閉外圍服務(wù),最后再用immediate關(guān)閉數(shù)據(jù)庫(kù)。這樣能快一些,而且相對(duì)而言數(shù)據(jù)庫(kù)會(huì)正常,不會(huì)因?yàn)閿嚅_外部鏈接,等待進(jìn)程結(jié)束等問題等待時(shí)間超長(zhǎng)。,當(dāng)然也只是快一些而已,如果數(shù)據(jù)庫(kù)很大,那么還是會(huì)很慢。
其他的shutdown abort,也是一個(gè)關(guān)閉數(shù)據(jù)庫(kù)的方法,不過oracle本身也不推薦,因?yàn)槊看蝍bort后數(shù)據(jù)庫(kù)可能會(huì)有這樣那樣的問題。
再baoli一些的,就是直接關(guān)機(jī)器,關(guān)電源了。
退出循環(huán):EXIT/RETURN
RETURN表示退出整個(gè)過程,也就是過程執(zhí)行到此處結(jié)束執(zhí)行,程序退出;
EXIT表示退出當(dāng)前循環(huán),繼續(xù)向下執(zhí)行,如果是有兩層循環(huán)的話,EXIT則是退出內(nèi)層循環(huán),外層循環(huán)繼續(xù)執(zhí)行。
GOTO用法:
1,先設(shè)置標(biāo)簽 《wait_goto》
2,goto wait_goto;程序返回至wait_goto處繼續(xù)執(zhí)行。
啟動(dòng)oracle數(shù)據(jù)庫(kù)步驟:首先使用oracle用戶登錄Linux,然后在shell命令行中執(zhí)行下面的命令:第一步:打開Oracle監(jiān)聽$ lsnrctl start第二步:進(jìn)入sqlplus$ sqlplus /nologSQL第三步:使用sysdab角色登錄sqlplusSQL conn /as sysdba第四步:?jiǎn)?dòng)數(shù)據(jù)庫(kù)SQL startup經(jīng)過上面的四個(gè)步驟,oracle數(shù)據(jù)庫(kù)就可以啟動(dòng)了。關(guān)閉數(shù)據(jù)庫(kù)用 shutdown 是要等待事物結(jié)束才關(guān)閉,強(qiáng)制關(guān)閉用 shutdown abort。