반응형
오라클 DB 에서 ORA-12516 에러가 발생
에러 내용은
ORA-12516: TNS:listener could not find available handler with matching
해당 오류는 보통 DB 는 연결되나, Listener 에서 사용 가능한 처리기 (커넥션) 이 없을 경우 발생한다.
위 오류의 원인 확인 시
V$RESOURCE_LIMIT 테이블 조회에서
RESOURCE_NAME 이 processes 또는 sessions 인 데이터를 확인했을 때
CURRENT_UTILIZATION, MAX_UTILIZATION, LIMIT_VALUE 를 확인한다.
SELECT
RESOURCE_NAME,
CURRENT_UTILIZATION,
MAX_UTILIZATION,
LIMIT_VALUE
FROM V$RESOURCE_LIMIT
WHERE RESOURCE_NAME IN ('processes', 'sessions')
CURRENT 와 MAX 의 값이 LIMIT_VALUE 에 가까울 때 발생할 확률이 높다.
꼮 값이 LIMIT 값에 도달하지 못했더라도 발생할 수 있다.
해당 오류는 보통 많은 커넥션이 발생하는 프로젝트에서 발생하기에,
다수의 서버에서 한번에 커넥션 생성시 발생할 확률이 높다.
만약 LIMIT 가 100 인데, MAX 또는 CURRENT 가 97 인 경우,
3개 이상의 서버 또는 프로세스에서 동시에 커넥션 생성 시 생성할 수 있는 자원(RESOURCE)가 모자르기 때문에,
동시에 오류가 발생한다.
( 위 상황은 실제 경험담 )
해결 발법은 DB 의 LIMIT_VALUE 값을 수정해주면 된다.
SYSDBA 계정 접속
ALTER SYSTEM SET PROCESSES = (원하는제한값) SCOPE=SPFILE;
ALTER SYSTEM SET SESSIONS = (원하는제한값) SCOPE=SPFILE;
"System SET이(가) 변경되었습니다." 메시지 확인 후
DB 재시작을 해주면 된다.
shutdown immediate
startup immediate
'Study > DB' 카테고리의 다른 글
[Oracle] 통계정보 확인 (0) | 2021.01.15 |
---|---|
[Oracle] reorg, hwm, shrink, movement (0) | 2021.01.11 |
[Oracle] 통계정보 생성 (0) | 2021.01.11 |
[Oracle] Job 등록 / 스케쥴링 (0) | 2020.12.23 |
MariaDB (MySQL) 자주 쓰는 날짜 함수 및 포맷 (0) | 2020.12.08 |