ORA-00019 : max number of session licenses exceeded

Oracle 데이터베이스 관리에 있어서 라이선스 관련 에러는 DBA에게 많은 도전을 제공합니다. 특히 "ORA-00019" 오류는 세션 라이선스의 최대 허용치를 초과했을 때 발생하며, 이는 특히 성능과 접근성 측면에서 중대한 문제를 일으킬 수 있습니다. 이 블로그 글에서는 이 오류의 설명부터 시작하여 실제 시나리오, 문제의 발생, 원인 분석, 해결 방법 및 요약까지 자세히 다루겠습니다.

오류 설명

"ORA-00019" 오류는 Oracle 데이터베이스에서 세션 라이선스 수가 설정된 최대값을 초과했을 때 발생합니다. 이는 일반적으로 많은 사용자가 동시에 데이터베이스에 접속을 시도할 때 발생하며, 라이선스 계약의 제한을 넘어서는 사용이 이루어졌음을 나타냅니다.

 

시나리오

DBA인 지현은 대규모 ERP 시스템을 관리하고 있습니다. 최근 회사에서 신규 직원 채용이 이루어졌고, 이로 인해 시스템 사용자 수가 급격히 증가했습니다. 어느 날, 사용자들이 데이터베이스에 로그인하려 할 때 "ORA-00019" 오류가 발생하여 접속이 거부되는 상황이 발생했습니다.

 

문제 발생

신규 직원들이 시스템을 사용하기 시작하면서 동시 접속자 수가 라이선스로 허용된 세션 수를 초과하여, 추가 사용자의 로그인 시도가 실패했습니다.

 

원인 분석

이 문제의 주요 원인은 데이터베이스 라이선스가 현재의 사용 수요를 충족시키지 못하기 때문입니다. 회사의 사용자 증가는 계획된 라이선스 확장을 능가했고, 이는 데이터베이스 설정과 라이선스 정책의 재검토를 필요로 합니다.

 

해결 방법

  1. 라이선스 검토 및 증가: Oracle 라이선스 계약을 검토하고 필요에 따라 추가 세션 라이선스를 구매합니다.
  2. 세션 관리 최적화: 불필요한 세션을 종료하고, 세션 타임아웃 설정을 조정하여 라이선스 사용을 최적화합니다.
  3. 사용자 접속 관리: 피크 타임 동안의 사용자 접속을 관리하기 위한 정책을 마련하고, 필요한 경우 로드 밸런싱 솔루션을 도입합니다.

 

요약

"ORA-00019" 오류는 사용자 증가와 라이선스 한계를 초과하는 상황에서 발생합니다. DBA는 라이선스 정책을 재검토하고 필요한 조치를 취함으로써 이 문제를 해결할 수 있습니다. 이는 데이터베이스의 안정적인 운영을 보장하고 사용자의 만족도를 높이는 중요한 단계입니다.

 

세션 수 증가를 위한 명령어 예제

Oracle 데이터베이스에서 세션 수를 늘리는 작업은 일반적으로 init.ora 파일 또는 SPFILE을 통해 수행됩니다. PROCESSES 파라미터와 관련된 SESSIONS 파라미터를 조정함으로써 동시에 연결할 수 있는 세션의 최대 수를 증가시킬 수 있습니다.

SQL*Plus 또는 SQL Developer 사용 예제

  1. SPFILE 사용 시: 만약 데이터베이스가 SPFILE을 사용하고 있다면, 아래 명령을 사용하여 동적으로 PROCESSES 값을 변경할 수 있습니다. 이는 데이터베이스 재시작 없이 적용됩니다.PROCESSES 값을 변경한 후에는 데이터베이스 인스턴스를 재시작해야 변경사항이 적용됩니다.
[ SPFILE 사용 시 ] 
 만약 데이터베이스가 SPFILE을 사용하고 있다면, 아래 명령을 사용하여 동적으로 PROCESSES 값을 변경할 수 있습니다. 이는 데이터베이스 재시작 없이 적용됩니다.

 ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE;

 PROCESSES 값을 변경한 후에는 데이터베이스 인스턴스를 재시작해야 변경사항이 적용됩니다.

 SHUTDOWN IMMEDIATE;

 STARTUP;



[ PFILE 사용 시 ]
 PFILE을 사용하는 경우, PFILE을 편집해야 합니다. 데이터베이스가 중단된 상태에서 init.ora 
 파일을 찾아 다음과 같이 수정합니다.
 
 processes = 300
 
 수정 후 데이터베이스를 재시작하여 변경사항을 적용합니다.

 SHUTDOWN IMMEDIATE;
 
 STARTUP;

 

주의사항

  • PROCESSES 파라미터를 증가시키면, 이에 따라 SESSIONS와 TRANSACTIONS 파라미터도 자동으로 증가합니다. Oracle은 SESSIONS를 1.1 * PROCESSES + 5로, TRANSACTIONS를 1.1 * SESSIONS로 계산하여 설정합니다.

리소스 사용과 시스템 성능에 미치는 영향을 고려하여 PROCESSES 값을 적절히 설정하는 것이 중요합니다. 무분별한 증가는 시스템에 부담을 줄 수 있습니다.