Oracle/[oracle] Error
[개발시 에러] ORA-12514: TNS:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함
kr98gyeongim
2022. 5. 17. 15:44
■ 에러
ORA-12514: TNS:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함
리스너가 클라이언트에서 접속하려는 요청을 받았을 때, 접속처가 되는 서비스를 인식하지 못할 때 발생하는 에러이다.
■ 원인
- 리스너에 서비스가 등록되지 않음
- 클라이언트의 접속 정의가 잘못됨
■ 대응방법1. 리스너에 서비스가 등록되어 있지 않음
cmd(명령 프롬프트)에서 Isnrctl services 명령으로 리스너에 등록된 서비스를 확인한다.
c:\>lsnrctl SERVICES [listener_name]
서비스가 리스너에 등록되지 않은 일반적인 원인으로는
- 인스턴스가 시작되지 않음
: 인스턴스가 시작되지 않은 경우, 인스턴스를 실행시키면 된다.
- 리스너 실행 직후
: 리스너 실행 후 서비스가 등록되는 것까지는 최대 1분이 걸린다.
이 경우 잠시 기다리거나 alter sysme register; 명령어를 실행하면 됨.
■ 대응방법2. 클라이언트의 접속 정의가 잘못됨
리스너가 실행되는 노드에 클라이언트의 접속처가 되는 서비스(인스턴스)가 존재하지 않고,
클라이언트의 접속 정의가 잘못된 경우가 있다.
SERVICE_NAME 구에서 지정되어 있는 값이 리스너에 등록되어 있는 서비스명과 일치하고 있는지를 확인하기 위해 $ORACLE_HOME/network/admin/tnsnames.ora를 참조하여 접속 정의를 확인한다.
oraSrv =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oraSrv.C10203477)
)
)
※ tnsnames.ora
: 오라클 Client에서 오라클 서버로 접속할 때 필요한 프로토콜 및 포트번호, 서버주소, 인스턴스 등을 설정해 주는 파일로서 클라이언트에 위치