ORA-12154: tns 지정된 접속 식별자를 분석할 수 없음 오류는 문자 그대로 접속 식별자(connect identifier)를 분석할 수 없기에 발생합니다. 접속 식별자는 접속 기술자(connect descriptor), 데이터베이스 별명/별칭(database alias), 데이터 소스(data source) 등 여러 가지 이름으로 불립니다.
왜 지정된 접속 식별자를 분석할 수 없는지 다음을 기준으로 찾아봅시다.
- 오라클 홈 확인하기
- tnsnames.ora 확인하기
ORA-12154 해결하기 : 오라클 홈 확인하기
오라클 홈을 확인하여 접속 식별자를 분석할 수 있는지 여부를 확인해 봅니다. 오라클 홈 설정 문제로 TNS 접속 식별자 위치를 인식할 수가 없어서, 접속 식별자를 찾지 못하는 경우를 생각해 볼 수 있습니다. 환경변수의 path 변수와 오라클 홈 설정 값을 확인해 주세요. 예제 자료의 오라클 홈 위치는 "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_XE" 입니다.
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_XE]
"VERSION"="11.2"
"ORACLE_HOME_NAME"="XE"
"ORAMTS_CP_TRACE_LEVEL"="0"
"ORACLE_SID"="XE"
"ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_XE"
"ORACLE_BASE"="C:\\oraclexe\\app\\oracle"
"StmtCacheSize"="0"
"ORACLE_HOME"="C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server"
"ORAMTS_CP_TRACE_DIR"="C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\oramts\\trace"
"NLS_LANG"="KOREAN_KOREA.KO16MSWIN949"
"StatementCacheSize"="0"
"OLEDB"="C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\oledb\\mesg"
"ORA_XE_AUTOSTART"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_XE_SHUTDOWN"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_XE_SHUTDOWNTYPE"=hex(2):69,00,6d,00,6d,00,65,00,64,00,69,00,61,00,74,00,\
65,00,00,00
"ORA_XE_SHUTDOWN_TIMEOUT"=hex(2):39,00,30,00,00,00
ORA-12154 해결하기 : tnsnames.ora 확인하기
- tnsnames.ora 파일에 해당하는 접속 식별자가 있는지 확인합니다.
- tnsnames.ora 파일에 디스크립션 양식의 정확한 기재 여부를 확인합니다. 괄호가 빠져 있지 않은지 확인해 봅시다.
- 솔루션의 빌드 출력 경로상에 tnsnames.ora 파일이 존재하고 있는지 확인합니다. 출력 경로상에 파일이 존재한다면 해당 파일의 접속 식별자를 참조합니다.
tnsping 명령어로 접속 식별자에 연결이 가능한지 확인해 볼 수 있습니다. (예시: tnsping xe)
tnsping xe
TNS Ping Utility
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)
tnsnames.ora 에 있어야 할 접속 식별자 예시 양식입니다. 접속 식별자가 실제로 존재하는지, 괄호 등의 누락으로 형태가 이상하지 않은지 점검해 봅니다.
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 0))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
경로 확인하기
윈도우 10 이상 버전에서 32비트 출력 응용 프로그램을 실행할 때에, tnsnames.ora를 제대로 인식하지 못하는 현상이 간혹 발생합니다. 신기하게 tnsping과 같은 기능은 잘 작동하는데 말이지요! 폴더를 Program Files로 옮기거나, 별도의 그룹으로 관리해 보세요. 테스트한 결과, 바탕화면 정상작동, C드라이브 정상작동, Program Files 정상작동, Program Files (x86) 및 하위 폴더에서 "ORA-12154: tns 지정된 접속 식별자를 분석할 수 없음" 오류가 발생하더군요.