TNS(Transparent Network Substrate)는 오라클에서 사용하는 네트워크 기술이며, 클라이언트 및 서버 간 통신 기술입니다. TNS에서 이름 처리에 실패하는 경우, TNS-03505: 이름 처리에 실패했습니다 오류가 나오는데, 이번 시간에는 해당 오류의 원인과 해결 방법에 대해 알아보도록 합시다.
TNS-03505: 이름 처리에 실패했습니다 원인
보통 오라클 오류는 ORA-00000와 같이 발생하는데, 해당의 오류는 TNS에서 오류가 발생했다는 의미로 TNS-03505 코드를 표시해 드립니다. 직역하면 이름 분석에 실패했다는 의미지요? 여기서 말하는 이름은 TNS 서비스 이름 또는 접속 식별자를 말합니다. (이하 서비스명이라 하겠습니다.)
커맨드 프롬프트를 열어서 tnsping 명령어로 서비스명 분석 가능 여부를 테스트해 보겠습니다. tnsping xe와 같이 입력합니다. 이름 분석이 가능한 정상적인 경우에는 다음과 같이 OK와 응답시간을 출력합니다.
tnsping xe
TNS Ping Utility for 32-bit Windows: Version 11.2.0.2.0
Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0.)(PORT = 0)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (0 msec)
tnsping으로 이름 분석이 불가할 때에는 오늘의 주제와 같은 오류가 나옵니다.
tnsping xe
TNS Ping Utility for 32-bit Windows: Version 11.2.0.2.0
Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora
TNS-03505: Failed to resolve name
TNS-03505: 이름 처리에 실패했습니다 해결하기
TNS-03505 오류를 해결하려면 tns 서비스명이 있는 tnsnames.ora 파일을 확인해야 합니다. 상기의 예제 자료에서 SQLNET 인증과 관련하여 매개로 사용되는 파일이 C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora입니다. 오라클 홈 내에 있는 파일을 이용하기에 해당 경로에 tnsnames.ora 파일도 있을 것입니다.
예제 자료의 서비스명은 XE입니다. 여러분이 테스트하려는 서비스명 설정을 확인해 주세요. 서비스명의 오타를 해결하거나, 혹시라도 모를 특수 문자 등을 점검해 주세요. 그럼에도 오류가 계속 발생한다면 tnsnames.ora의 내용을 백업하고 수기로 적어보는 것도 방법 중 하나입니다. 2개 이상의 서비스명을 설정할 때, 괄호 등의 누락으로 식별자가 제대로 인식이 안 되는 경우도 고려해 볼 수 있기 때문입니다. (서비스명을 1개씩 저장하여 tnsping을 해보는 것도 시도해 보세요.)
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 0))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)