ORA-00020: maximum number of processes (N) exceeded (최대 프로세스 수(N) 초과)
Oracle의미
인스턴스의 프로세스 수가 PROCESSES 초기화 파라미터로 정의된 상한에 도달해 새 연결/프로세스를 생성할 수 없다. 새 세션이 접속할 수 없으며 관리자도 접속하지 못할 수 있다.
원인
과도하게 큰 애플리케이션 커넥션 풀, 닫히지 않는 연결(누수), 예상보다 많은 동시 사용자, 너무 낮게 설정된 PROCESSES 파라미터로 한도를 초과한다. 때로는 멈춘 백그라운드 작업이나 parallel query 프로세스도 프로세스를 소비한다.
해결 방법
sqlplus -prelim / as sysdba로 접속할 수 있지만 이 연결은 SQL을 실행할 수 없으며(v$session 조회 불가), oradebug(예: hanganalyze)와 SHUTDOWN ABORT에만 사용할 수 있다. 슬롯을 확보하려면 OS 수준에서 유휴 애플리케이션 서버 프로세스를 신중히 kill한다(ps -ef | grep 'LOCAL=NO'). 이후 일반 SYSDBA 연결로 v$session/v$process에서 누수된 세션을 찾아 ALTER SYSTEM KILL SESSION으로 닫는다. 영구 조치로 PROCESSES를 늘리고 인스턴스를 재시작한다(spfile에 SESSIONS가 명시적으로 설정되어 있으면 다시 계산되지 않으므로 함께 갱신한다). 애플리케이션 측에서는 커넥션 풀 최대값과 유휴 연결 정리를 수정한다.
같은 데이터베이스의 다른 항목
- ORA-04061existing state of package/procedure has been invalidated (패키지/프로시저의 기존 상태가 무효화됨)
- ORA-01466unable to read data - table definition has changed (데이터를 읽을 수 없음 - 테이블 정의 변경됨)
- ORA-08176consistent read failure; rollback data not available (consistent read 실패. rollback 데이터 없음)
- ORA-01113file N needs media recovery
- ORA-02393exceeded call limit on CPU usage
- ORA-12801error signaled in parallel query server Pnnn (parallel query server에서 오류 발생)