很多時候由于異常或程序錯誤會導致個別進程占用大量系統資源,需要結束這些進程,通常可以使用以下命令kill進程:
alter system kill session 'sid,serial#';
但是此命令釋放資源極為緩慢,具體可以參考:oracle中kill session的研究.
為了更快速的釋放資源,通常我們使用如下步驟來kill進程:
1.首先在操作系統級kill進程
2.在數據庫內部kill session
這樣通常可以快速中止進程,釋放資源。
今天就遇到這樣一個案例,其他朋友在數據庫里kill session,可是長時間仍無效果:
[[email protected] ~]$ 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該進程:
[[email protected] ~]$ 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
[[email protected] ~]$ kill -9 22702
[[email protected] ~]$ ps -ef|grep 22702
oracle 12088 12063 0 11:12 pts/1 00:00:00 grep 22702
[[email protected] ~]$ 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
新聞熱點
疑難解答