怎麼殺掉特定的資料庫會話
Alter system kill session 'sid,serial#'; 或者 alter system disconnect session 'sid,serial#' immediate; 在win上,還可以採用oracle提供的orakill殺掉一個執行緒(其實就是一個Oracle程式) 在Linux/Unix上,可以直接利用kill殺掉資料庫程式對應的OS程式 一、問題的提出 很多的時候我們迅速的殺掉Oralcle的一些session,理由大體如下: 1、 一些時候,由於我們的資料量很大,相應的事務大並且多,在做shutdown immediate的時候會花費好多的時間,而我們卻想用shutdown immediate的方式,而又要把資料庫迅速的shutdown下來。 2、 我們的應用可能使用了會話控制,即在應用的層面控制了一些使用者的連線的數量。但有時可能網路發生的瞬斷,從而就產生了一些死程式,他們的狀態為Inactive的狀態。當我們用alter system kill session ‘sid,serial#’進行清除時,這些session的狀態又變成了killed,這些就由Pmon程式來慢慢進行清除了,而你恰恰又是個急脾氣。 3、 系統忽然慢了現來,你發現是某個session在做怪,想迅速把它迅速結束掉。 二、處理方法 其實處理方法很簡單,是被一些人稱為“謀殺”的一種方法。因為一個session會對應著作業系統中相應的一個程式(process),我們不使用Alter system kill session這種方式了,取而代之則是kill的方式,當session的後臺程式被殺掉了,便會促使懶散的Pmon程式迅速進行清理工作。 1、 以一個session做以示例, a、 找到你要殺掉的那個session, 並記下paddr select sid, username, paddr, status from v$session where username = '使用者名稱' and status = 'INACTIVE'; b、 找到這個session所對應的spid select * from v$process where addr = '上面查尋的paddr'; c、 殺掉spid所標識的那個程式 如果你的Oracle是在Unix平臺上的,可以用kill。 $kill spid 如果你的Oracle是在windown平臺上的,有一些的不同,因為windown是以thead來代替process的,需要用到sid和spid兩個值,所用的命令也由kill替換為Orakill,格式為rakill sid spid C:>orakill sid spid d、 再查一下v$session,看會話在不在了。 2、 如何謀殺掉所有的Oracle的使用者的程式呢? a、windows的環境,執行如下圖中的SQL,並把結果存成.bat的檔案,比如kill.bat, 執行一下kill.bat就可以了。 select 'orakill '||sid||' '||spid as thread from sys.v_$process p, sys.v_$session s where sid > 6 and p.addr = s.paddr ; b、 Unix的環境相對來說就簡單多了,執行如下的命令就可以了 $ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill 然後你再shutdown immediate就很快的了。 有一些死鎖程式,異常退出後用 alter system kill session 'sid, serial#';無法釋放會話 可從作業系統直接處理。 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/503782/viewspace-983105/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL:Innodb如何快速殺掉堵塞會話的思考MySql會話
- RAC可以殺掉其他例項上的會話會話
- 11gRAC可以殺掉其他例項上的會話會話
- 【技巧】如何讓普通使用者可以殺掉自己使用者的會話會話
- securecrt保持會話不會斷掉Securecrt會話
- uWSGI 使用基於資料庫的方式會話資料庫會話
- 資料庫會話數量過多,定期清理inactive會話資料庫會話
- 換國產資料庫是不是殺會下金蛋的鴨資料庫
- ORACLE快速徹底Kill掉的會話Oracle會話
- 關於oracle資料庫內部殺掉程式及session檢視的測試Oracle資料庫Session
- 怎麼確保終端使用者在Oracle資料庫中只有一個會話Oracle資料庫會話
- 自動殺掉堵塞別人超過2小時且自身是不活動的會話會話
- SQLAlchemy - 資料庫的連線、建立會話與模型SQL資料庫會話模型
- 限制特定IP訪問資料庫資料庫
- linux批量殺掉程式linux批量殺掉程式Linux
- 批量kill殺死某些會話session的plsql會話SessionSQL
- 快速殺掉Oracle的SessionOracleSession
- 殺掉鎖死的程式
- App被殺掉APP
- 教你如何迅速秒殺掉:99%的海量資料處理面試題面試題
- mysql 的資料庫同步怎麼配置?MySql資料庫
- 面試官:資料庫自增ID用完了會怎麼樣?面試資料庫
- 資料庫映象會話期間的自動頁修復資料庫會話
- 資料庫中會話休眠一段時間資料庫會話
- 即刻殺死資料庫鎖資料庫
- 資料庫怎麼分庫分表資料庫
- NoDBA(幹掉資料庫管理員)資料庫
- SQLite資料庫怎麼這麼快?SQLite資料庫
- kill -9 殺掉oracle所有程式卻不能啟動和連線資料庫的解決辦法!Oracle資料庫
- 如何殺掉Teradata的sessionSession
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 怎麼設定資料庫的報警資料庫
- 為什麼會有這麼多種的資料庫資料庫
- 輕鬆地將PHP會話儲存在MySQL資料庫PHP會話MySql資料庫
- Jtti:sqlserver怎麼清空資料庫資料JttiSQLServer資料庫
- 資料怎麼插不進去(資料庫)?資料庫
- mysql資料庫怎麼連線MySql資料庫
- postgresql資料庫怎麼備份SQL資料庫