JDBC 드라이버로 타 시스템 DB 서버에 연결하여 데이터를 전송하는 프로그램이 있다. 평소에 잘 동작하다가 어느 날 몇 건의 오류가 발생했다. 오류 내용은 아래와 같다.
에러메시지
DriverManagerException: Cannot establish connection with the registered driver. oracle.jdbc.driver.OracleDriver returns: IO Error: Got minus one from a read call.
클라이언트 입장에서는 정확한 원인을 파악하기 어렵다. 힌트는.. 해당 시간대에 전송된 건 전부가 오류 발생한 것은 아니라는 것. 오류 내용과 시간대를 해당 서버 DBA에게 공유하고 확인을 요청드렸다. Production 환경의 DB는 alert 로그를 활성화해놓기 때문에 관련 로그를 찾을 수 있었다.
DB Alert log
kkjcre1p: unable to spawn jobq slave process
DBA분 설명으로는 DB 서버 내 리소스 부족이 원인으로, 신규로 생성되는 프로세스가 자원을 할당받지 못해 발생할 때 발생하는 로그라고 한다. 예상되는 원인으로는 아래 케이스가 있다.
원인
1. DB session / process 설정 값 부족
2. job_queue_processes 부족
3. DB PGA 부족
4. OS 상의 CPU 또는 메모리 부족
사실 이전에 다른 프로그램에서 동일한 오류가 발생했었는데, 그 때에는 1번 케이스에 해당했었다. 다른 시스템에서 DB서버에 Connection을 맺고 끊지 않아서 세션을 백 단위로 점유하고 있었다.. 그래서 이번에도 동일한 케이스가 아닐까 했지만 이번에는 다른 케이스였다.
오류 발생 시간대에 DB 서버 스냅샷 백업 작업이 있었다고 한다. 스냅샷은 특정 시점의 데이터를 그대로 복사하여 백업하는 작업이다. 어떻게 작업하는지는 모르지만, DBA분의 설명으로는 해당 작업이 CPU 및 리소스를 많이 사용한다고 한다. 따라서 이번 오류 건은 4번 케이스가 원인으로 보고, 추후 동일 이슈 발생 시 DB 리소스 증설 예정이라고 한다.
이전에 봤던 오류라고 나름 자신이 있었는데 다른 케이스였다니 머쓱한 기분이다. 역시 약은 약사에게, DB는 DBA에게 맡기는걸로.
'知 > job지식' 카테고리의 다른 글
Resnet 직관 (0) | 2024.05.05 |
---|---|
CNN(Convolution Neural Network) (0) | 2024.05.02 |
활성화함수(Activation Function) (1) | 2024.04.27 |
MLP(Multi-Layer Perceptron)의 직관 (0) | 2024.04.24 |
Perceptron 이란 (0) | 2024.04.22 |