国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如何迅速地殺掉Oralcle的一些session

2024-07-21 02:37:51
字體:
來源:轉載
供稿:網友

  一、問題的提出 
  很多的時候我們迅速的殺掉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 -efgrep $ORACLE_SIDgrep -v ora_grep LOCAL=NOawk '{print $2}'xargs kill 
  
  然后你再shutdown immediate就很快的了。 
  
  有一些死鎖進程,異常退出后用 alter system kill session 'sid, serial#';無法釋放會話 可從操作系統直接處理。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清远市| 景泰县| 辉南县| 虞城县| 马龙县| 彰武县| 大姚县| 恭城| 赤城县| 固原市| 成安县| 沅江市| 罗定市| 高唐县| 永康市| 抚宁县| 济宁市| 夏邑县| 罗平县| 察哈| 新化县| 台湾省| 资溪县| 丘北县| 墨江| 博爱县| 大冶市| 梁山县| 车险| 长海县| 崇礼县| 汨罗市| 横峰县| 山西省| 江达县| 惠安县| 班戈县| 武邑县| 石河子市| 无为县| 惠东县|