文章詳情頁
如何快速的殺掉Oracle的Session
瀏覽:74日期:2023-11-18 16:34:29
一、問題的提出很多的時候我們迅速的殺掉Oralcle的一些session,理由大體如下: 1、; 一些時候,由于我們的數(shù)據(jù)量很大,相應(yīng)的事務(wù)大并且多,在做shutdown immediate的時候會花費好多的時間,而我們卻想用shutdown immediate的方式,而又要把數(shù)據(jù)庫迅速的shutdown下來。2、; 我們的應(yīng)用可能使用了會話控制,即在應(yīng)用的層面控制了一些用戶的連接的數(shù)量。但有時可能網(wǎng)絡(luò)發(fā)生的瞬斷,從而就產(chǎn)生了一些死進程,他們的狀態(tài)為Inactive的狀態(tài)。當(dāng)我們用alter system kill session ‘sid,serial#’進行清除時,這些session的狀態(tài)又變成了killed,這些就由Pmon進程來慢慢進行清除了,而你恰恰又是個急脾氣。3、; 系統(tǒng)忽然慢了現(xiàn)來,你發(fā)現(xiàn)是某個session在做怪,想迅速把它迅速結(jié)束掉。二、處理方法其實處理方法很簡單,是被一些人稱為“謀殺”的一種方法。因為一個session會對應(yīng)著操作系統(tǒng)中相應(yīng)的一個進程(process),我們不使用Alter system kill session這種方式了,取而代之則是kill的方式,當(dāng)session的后臺進程被殺掉了,便會促使懶散的Pmon進程迅速進行清理工作。1、; 以一個session做以示例,a、; 找到你要殺掉的那個session, 并記下paddr b、; 找到這個session所對應(yīng)的spidc、; 殺掉spid所標(biāo)識的那個進程♀假如你的Oracle是在Unix平臺上的,可以用kill。 $kill 13824♀假如你的Oracle是在windown平臺上的,有一些的不同,因為windown是以thead來代替process的,需要用到sid和spid兩個值,所用的命令也由kill替換為Orakill,格式為:orakill sid spid C:>orakill 941 13824d、; 再查一下v$session,看會話在不在了。2、; 如何謀殺掉所有的Oracle的用戶的進程呢?a、; windows的環(huán)境,執(zhí)行如下圖中的SQL,并把結(jié)果存成.bat的文件,比如kill.bat, 執(zhí)行一下kill.bat就可以了。b、; Unix的環(huán)境相對來說就簡單多了,執(zhí)行如下的命令就可以了$ ps -efgrep $ORACLE_SIDgrep -v ora_grep LOCAL=NOawk '{print $2}'xargs kill然后你再shutdown immediate就很快的了。
標(biāo)簽:
Oracle
數(shù)據(jù)庫
上一條:Oracle筆記下一條:ORACLE中的物化視圖
排行榜
