🚨 ORA-12514: "TNS: Listener Does Not Currently Know of Service Requested" 오류 해결 방법
ORA-12514 오류는 **클라이언트가 데이터베이스 서비스에 연결하려고 하지만, 리스너(listener)가 해당 서비스를 인식하지 못할 때** 발생합니다. 쉽게 말해, **Oracle Listener가 해당 데이터베이스 인스턴스를 찾지 못해서 발생하는 문제**입니다.
1. 🔍 ORA-12514 오류의 주요 원인
이 오류가 발생하는 주요 원인은 다음과 같습니다.
- ❌ **리스너가 실행되지 않음**
- ❌ **리스너가 해당 서비스(Database Instance)를 등록하지 않음**
- ❌ **잘못된 TNS 설정 (tnsnames.ora)**
- ❌ **잘못된 SERVICE_NAME 사용**
- ❌ **동적 서비스 등록 실패**
2. 🛠 ORA-12514 오류 해결 방법
1️⃣ 리스너가 실행 중인지 확인
Oracle Listener가 실행 중인지 먼저 확인하세요.
lsnrctl status
리스너가 실행되지 않았다면, 아래 명령어로 시작하세요.
lsnrctl start
2️⃣ 리스너가 서비스 인스턴스를 알고 있는지 확인
리스너가 현재 어떤 서비스를 등록하고 있는지 확인하세요.
lsnrctl services
출력 결과에서 요청한 **SERVICE_NAME**이 포함되지 않았다면, 데이터베이스가 리스너에 등록되지 않은 것입니다.
3️⃣ 데이터베이스 인스턴스 등록
Oracle 인스턴스를 리스너에 수동으로 등록할 수도 있습니다.
ALTER SYSTEM REGISTER;
이 명령어를 실행하면 데이터베이스가 현재 리스너에 등록됩니다.
4️⃣ TNS 설정 파일 (tnsnames.ora) 확인
클라이언트가 사용하는 tnsnames.ora
파일에서 **SERVICE_NAME이 올바르게 설정되었는지** 확인하세요.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = my-db-host)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
5️⃣ 올바른 SERVICE_NAME 사용
데이터베이스에서 올바른 SERVICE_NAME을 확인하려면 다음 명령어를 실행하세요.
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'service_names';
이제 확인된 SERVICE_NAME을 tnsnames.ora
파일에서 정확히 입력하세요.
6️⃣ 데이터베이스 다시 시작
이제 모든 설정을 확인한 후, 데이터베이스와 리스너를 재시작하세요.
shutdown immediate;
startup;
lsnrctl stop;
lsnrctl start;
🎯 결론
ORA-12514 오류는 클라이언트가 요청한 데이터베이스 서비스가 리스너에 등록되지 않았을 때 발생합니다. 해결하려면 **리스너 상태 확인, 서비스 등록, TNS 설정 수정** 등의 단계를 거치면 됩니다.