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

首頁 > 數據庫 > Oracle > 正文

用OraKill結束失控的Oracle 進程

2024-08-29 13:38:20
字體:
來源:轉載
供稿:網友

  一個用戶進程偶然會掛起或占用過多資源而拒絕其它會話。假如 DBA 依然能夠訪問數據庫,她通常可以發出以下查詢:
  
  select s.username, s.osuser, s.sid, s.serial#, p.spid
  from v$session s,v$PRocess p
  where s.paddr = p.addr
  and s.username is not null;
  
  這個查詢將返回數據庫用戶名、操作系統用戶名、會話 ID,序列號和系統進程 ID(SPID)。然后,DBA 用戶就可以發出以下命令(前面的查詢返回的使用 SID 和SERIAL# 信息):
  
  ALTER SYSTEM KILL SESSION 'sid,serial#';
  ALTER SYSTEM KILL SESSION '9,203';
  
  使用這條語句有兩個問題。第一,分配給這個進程的任何鎖或資源在會話完全超時之前不會被釋放。第二,查詢和 kill 命令需要能夠訪問數據庫。假如一個進行失去控制,那么數據庫訪問可能會出現問題。
  
  在一個 UNIX 數據庫中,下一步是 ps 命令輸出的 UNIX 提示中定位進程(同樣是查找 OSUSER 和 SPID 等 ID)然后使用 kill -9 spid 結束失控的后臺進程。然而,在 Windows 中,只有一個進程 Oracle.EXE,而且用戶連接是在 Windows 線程中處理的,而不在進程中處理的。假如使用 Windows 任務治理器結束 Oracle 線程,就有可能影響所有用戶和后臺線程,并導致數據庫崩潰。
  
  出于這些原因,Oracle 在Oracle Home/bin 目錄下提供了一個 orakill.exe 命令,這個命令的參數與ALTER SYSTEM KILL SESSION 相同,但是不要求數據庫連接。要定位一個特定的線程,需要尋找一個能夠顯示屬于一個進程的所有線程的程序。Windows 任務治理器只能顯示線程數和進程。你需要從微軟的資源工具包中尋找一個用于 windows 2000 和 NT 的工具程序,比如免費的QuickSlice,或者Qslice.exe(該工具是基于 Windows 的),或者PStat(Pstat.exe 是一個命令行工具)。簡單地在 orakill 命令后輸入線程 ID(以十進制表示)和 SID 即可:
  
  orakill
  orakill ORCL 2760
  
  "Kill of thread id 2760 in instance ORCL sUCcessfully signalled[sic]."
  
  應該只有在不能訪問數據庫來執行ALTER SYSTEM KILL SESSION 的情況才使用orakill。假如意外結束了一個必要的后臺進程,比如 PMON,那么很可能會導致數據庫崩潰。新手永遠不要這樣做。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柳河县| 阳曲县| 万载县| 威宁| 宁城县| 丹棱县| 博白县| 怀宁县| 井陉县| 调兵山市| 鄂尔多斯市| 旬邑县| 大宁县| 翼城县| 晋江市| 宣威市| 始兴县| 南汇区| 鸡泽县| 曲靖市| 常州市| 廉江市| 银川市| 六盘水市| 东源县| 滦南县| 蓝山县| 九寨沟县| 平邑县| 北流市| 泸水县| 扶风县| 鹤壁市| 莱阳市| 南江县| 三河市| 连山| 乌鲁木齐县| 美姑县| 砚山县| 稷山县|