시스템을 운영하면 가끔 특정 프로세스가 CPU를 점유해서 다른 프로세스에 영향을 끼치곤 합니다.
이런 경우 kill -9 <process id>로 해당 프로세스를 정리하면 문제가 해결되곤 하죠.
물론 CPU를 99%를 소모하는 프로세스는 거의 정상적이지 않은 프로세스이므로 kill 하는 게 맞지만,
가끔 특정 batch 작업 등 많은 시간동안 수행되어 kill 시키기 아까운 프로세스들도 존재합니다.
아래의 아이디어는 자원을 많이 먹는 프로세스를 kill 명령으로 죽이지 않고 잠시 멈춰두는 방법입니다.
If that oracle process uses high CPU%, and don't want to kill it yet. we may use "oradebug" to suspend it.
$ ps -e -o pcpu,user,pid,args | sort -k 1 | grep 2904
62.8 oracle 2904 oracleorcl (LOCAL=NO)
SQL> oradebug suspend
Statement processed.
$ ps -e -o pcpu,user,pid,args | sort -k 1 | grep 2904
6.0 oracle 2904 oracleorcl (LOCAL=NO)
참고: http://surachartopun.com/2011/01/oradebug-man.html
$ ps -e -o pcpu,user,pid,args | sort -k 1 | grep 2904
62.8 oracle 2904 oracleorcl (LOCAL=NO)
SQL> oradebug suspend
Statement processed.
$ ps -e -o pcpu,user,pid,args | sort -k 1 | grep 2904
6.0 oracle 2904 oracleorcl (LOCAL=NO)
참고: http://surachartopun.com/2011/01/oradebug-man.html
물론 kill 명령도 signum (24/26)을 주면 동일하게 suspend를 시킬 수 있습니다.
signum signame Name Description
___________________________________________________________________________
0 SIGNULL Null Check access to pid
1 SIGHUP Hangup Terminate; can be trapped
2 SIGINT Interrupt Terminate; can be trapped
3 SIGQUIT Quit Terminate with core dump; can be trapped
9 SIGKILL Kill Forced termination; cannot be trapped
15 SIGTERM Terminate Terminate; can be trapped
24 SIGSTOP Stop Pause the process; cannot be trapped
25 SIGTSTP Terminal stop Pause the process; can be trapped
26 SIGCONT Continue Run a stopped process
이런 기능을 운영 서버에 사용하시려면 먼저 정상적으로 수행되는지는 테스트 해봐야 겠죠?
대부분 요런 기능은 hang 같은 테스트 환경 만들 때 주로 쓰긴 합니다..만 알아서 하시길... ^^;
P.S.
OS kill 명령에 의한 stop과 oradebug를 이용한 suspend의 차이는 뭘까요?
suspend 된 세션은 v$session 등에서 어떤 상태로 보여질까요?
'Oracle Database' 카테고리의 다른 글
Oracle client program의 모듈명, Action명 정의 방법 (0) | 2011.02.08 |
---|---|
Oracle 11g에서 특정 SQL에 대해서 sql_trace 걸기 (0) | 2011.01.27 |
Oracle UTL_FILE을 이용한 데이터 Unloading의 간단한 예제 (0) | 2010.12.28 |
Oracle 11g의 새로운 HINT : IGNORE_ROW_ON_DUPKEY_INDEX (0) | 2010.12.23 |
Oracle Interval Partition drop할때 ORA-14758 발생 (0) | 2010.12.08 |