728x90
ORA-00019는 Oracle 사용자 로그인 시 발생할 수 있는 오류로, 설정된 시스템 리소스 한계를 초과했을 경우 사용자의 접속을 차단하는 보안 및 성능 보호 메커니즘입니다. 이 오류는 단순한 접속 실패를 의미하지 않으며, 자원 소모에 대한 사전 방어 조치로 사용됩니다.
1. 오류 메시지
ORA-00019: 사용자가 리소스 제한에 의해 거부되었습니다.
ORA-00020: maximum number of processes exceeded
ORA-00019는 주로 RESOURCE LIMIT 기능이 활성화된 상태에서 리소스 프로파일의 한계치가 초과되었을 때 트리거됩니다. 이 오류는 보안 및 시스템 자원 보호 목적에 부합합니다.
2. 발생 조건
- 프로파일(PROFILE) 설정 초과: 사용자의 프로파일 내에서 설정된
SESSIONS_PER_USER,CONNECT_TIME등의 값 초과 - RESOURCE_LIMIT 파라미터 활성화: 이 값이 TRUE인 경우에만 리소스 제한이 강제 적용됨
- 시스템 자원이 임계치 도달: 전체 시스템의
PROCESSES또는SESSIONS한계를 초과 - 비정상적인 세션 누적: 세션 누수가 있어 시스템 한계 도달
- 잘못된 프로파일 적용: 신규 사용자에게 제한된 프로파일이 기본 적용되어 접속 불가
3. 실무 사례
한 제조업체의 내부 데이터베이스에서는 자동화된 센서 수집 프로그램이 초당 수십 건의 로그인 요청을 발생시켜 ORA-00019 오류가 발생했습니다. 문제는 해당 프로그램 사용자에게 SESSIONS_PER_USER=1이 적용된 프로파일이 연결되어 있었기 때문이었습니다. DBA는 해당 사용자에게 별도 프로파일을 생성하고, 시스템 측 RESOURCE_LIMIT 조정 및 커넥션 풀 적용을 통해 문제를 해결했습니다.
4. 해결 방법
| 원인 | 해결 방법 | SQL 명령어 예시 |
|---|---|---|
| SESSIONS_PER_USER 초과 | 프로파일 수정 또는 사용자 변경 |
ALTER PROFILE limited LIMIT SESSIONS_PER_USER UNLIMITED; |
| RESOURCE_LIMIT 활성화 | 임시로 비활성화 | ALTER SYSTEM SET resource_limit=FALSE; |
| 프로세스 수 초과 | 파라미터 증설 후 DB 재시작 | ALTER SYSTEM SET processes=1000 SCOPE=SPFILE; |
| 사용자 프로파일 과도 제한 | 적절한 리소스 허용값 설정 |
CREATE PROFILE app_profile LIMIT CONNECT_TIME 120; |
| 불필요한 세션 종료 | 비활성 세션 확인 후 종료 |
SELECT sid, serial#, username FROM v$session WHERE status='INACTIVE'; |
5. 예방 전략
- 프로파일 기반 사용자 분류: 일반 사용자와 시스템 사용자에 대해 서로 다른 프로파일을 적용
- 세션 타임아웃 설정: 장기 미사용 세션 자동 종료
- 정기적 리소스 점검:
DBA_PROFILES,V$SESSION,V$RESOURCE_LIMIT확인 - WAS 커넥션 풀 도입: 다수 로그인 시도 방지
- 프로파일 감사(Audit): 어떤 사용자가 자원 한계에 도달했는지 추적
6. 주요 파라미터 비교표
| 항목 | 기본값 | 권장값 | 적용 조건 |
|---|---|---|---|
| RESOURCE_LIMIT | FALSE | TRUE | 리소스 제어 필요 시 |
| SESSIONS_PER_USER | UNLIMITED | 1~10 | 공용 또는 자동 접속 사용자 |
| CONNECT_TIME | UNLIMITED | 60~120 | 보안 강화 목적 |
| PROCESSES | 150 | 500~2000 | 사용자 수에 따라 조정 |
7. 진단 쿼리
현재 리소스 상태 확인:
SELECT resource_name, current_utilization, limit_value
FROM v$resource_limit;
사용자 프로파일 정보:
SELECT username, profile FROM dba_users;
SELECT * FROM dba_profiles WHERE profile='LIMITED';
8. 결론
ORA-00019 오류는 시스템의 안정성을 유지하고, 예기치 못한 리소스 남용을 방지하기 위한 Oracle의 보호 메커니즘입니다. 이 오류가 발생했을 때는 단순히 파라미터를 늘리기보다는 사용자 행태, 시스템 구조, 프로파일 정책을 종합적으로 검토하는 것이 가장 중요합니다. 실제 운영 환경에서는 리소스를 유연하게 조정하되, 보안과 성능 사이의 균형을 맞추는 전략이 필요합니다.
출처
- Oracle Database 19c Administrator’s Guide
- Oracle Security Best Practices (Oracle Corp.)
- Oracle Metalink Note ID 1001610.6
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ORA-00021 : session attached to some other process (0) | 2025.07.19 |
|---|---|
| [ORACLE] ORA-00020: maximum number of processes exceeded (0) | 2025.07.19 |
| [ORACLE] ORA-00018 : 최대 허용된 세션 수 초과 (0) | 2025.07.19 |
| [ORACLE] ORA-00017 : 세션이 알 수 없는 이유로 이미 종료되었습니다 (0) | 2025.07.19 |
| [ORACLE] ORA-00016 : 공간 부족으로 인해 UNDO 세그먼트를 확장할 수 없습니다 (0) | 2025.07.19 |