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

首頁 > 開發 > 綜合 > 正文

如何快速殺死占用過多資源(CPU,內存)的數據庫進程

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

很多時候由于異常或程序錯誤會導致個別進程占用大量系統資源,需要結束這些進程,通常可以使用以下命令Kill進程:
alter system kill session 'sid,serial#';

 

但是此命令釋放資源極為緩慢,具體可以參考:Oracle中Kill session的研究.
為了更快速的釋放資源,通常我們使用如下步驟來Kill進程:
1.首先在操作系統級kill進程
2.在數據庫內部kill session
這樣通常可以快速中止進程,釋放資源。

今天就遇到這樣一個案例,其他朋友在數據庫里kill session,可是長時間仍無效果:
[oracle@danaly ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - PRoduction on Thu Oct 27 11:09:50 2005

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

SQL> select sid,username,status from v$session;

       SID USERNAME                       STATUS
---------- ------------------------------ --------
....
       154 SCOTT                          KILLED
...

30 rows selected.

 

那按照我前面提到的步驟,首先查詢得到該session對應的OS進程號:
SQL> select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=&sid);
Enter value for sid: 154
old   1: select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=&sid)
new   1: select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=154)

'KILL-9'||SPID
--------------------
kill -9 22702

SQL> !

 

在操作系統級kill該進程:
[oracle@danaly ~]$ ps -ef|grep 22702
oracle   22702     1  0 Oct25 ?        00:00:02 oracledanaly (LOCAL=NO)
oracle   12082 12063  0 11:12 pts/1    00:00:00 grep 22702
[oracle@danaly ~]$ kill -9 22702
[oracle@danaly ~]$ ps -ef|grep 22702
oracle   12088 12063  0 11:12 pts/1    00:00:00 grep 22702
[oracle@danaly ~]$ exit
exit

SQL> select sid,username,status from v$session;

       SID USERNAME                       STATUS
---------- ------------------------------ --------
...
       154 SCOTT                          KILLED
...

30 rows selected.

SQL> select sid,serial#,username from v$session where sid=154;

       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
       154      56090 SCOTT

 

再次在數據庫中kill該session,并指定immediate選項:
SQL> alter system kill session '154,56090' immediate;

System altered.

SQL> select sid,serial#,username from v$session where sid=154;

no rows selected

 


此時該進程被迅速清除。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 诸暨市| 稻城县| 汉寿县| 洪洞县| 仙游县| 安庆市| 鄂温| 广宗县| 鄂州市| 白山市| 长海县| 焉耆| 郑州市| 甘南县| 靖远县| 松江区| 泸溪县| 日喀则市| 临西县| 大同县| 依安县| 公主岭市| 舒兰市| 磐石市| 屏山县| 萍乡市| 洞头县| 贵阳市| 横峰县| 楚雄市| 惠安县| 同心县| 长宁区| 浦北县| 漠河县| 呼玛县| 福海县| 昂仁县| 吉首市| 无锡市| 云安县|