1. 문제 증상 (Symptoms)
SQL*Loader
- SQL*Loader-704
- ORA-12545: 대상 호스트 또는 객체가 존재하지 않습니다
Python (oracledb)
- DPI-1047: Oracle Client library cannot be loaded
SQL*Plus
- ORA-12545
- ORA-12154: TNS: 지정된 접속 식별자를 해결할 수 없습니다
2. 원인 분석 (Root Cause)
① Oracle Client 라이브러리 미인식
- Python oracledb가 oci.dll을 찾지 못함
- Oracle Client 경로 미설정 또는 잘못된 경로 사용
② 클라이언트별 연결 방식 불일치
- sqlldr, sqlplus, Python이 서로 다른 방식의 접속 문자열 사용
- 일부는 TNS Alias, 일부는 EZCONNECT 사용
③ TNS Alias 설정 위치 오류
- TESTDB alias가 sqlnet.ora에 정의됨
- → TNS Alias는 반드시 tnsnames.ora에 정의해야 함
- 이로 인해 ORA-12154 발생
3. 해결 과정 (Solution)
A. Oracle Client 경로 명시
설정 파일
- db.properties
설정 값
db.client_lib=C:\\app\\client\\user\\product\\12.2.0\\client_1\\bin
확인 사항
- 해당 경로에 oci.dll 존재 여부 확인
B. sqlnet.ora 인증 방식 수정
파일 경로
C:\\app\\client\\user\\product\\12.2.0\\client_1\\network\\admin\\sqlnet.ora
변경 내용
SQLNET.AUTHENTICATION_SERVICES = (NONE)
⚠️ NTS 인증 방식은 해당 PC 환경에서 실패하여 사용하지 않음
C. TNS Alias(TESTDB) 정상 등록
파일 경로
C:\\app\\client\\user\\product\\12.2.0\\client_1\\network\\admin\\tnsnames.ora
설정 내용
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST ={IP})(PORT ={port}))
(CONNECT_DATA =
(SID = ORCL)
)
)
D. SQL*Plus 접속 테스트
주의 사항
- 비밀번호에 ! 포함 → 반드시 따옴표 사용
C:\\app\\client\\user\\product\\12.2.0\\client_1\\bin\\sqlplus.exe"userid/password@TESTDB"
E. SQL*Loader가 TNS Alias 사용하도록 코드 수정
변경 내용
- db_insert.py
- db.tns 값이 있으면 EZCONNECT 대신 TNS Alias 사용하도록 분기 처리
설정 파일
db.tns=TESTDB
4. 결과 (Result)
- sqlplus → TESTDB로 정상 접속
- sqlldr → 동일한 TNS Alias 사용 시 ORA-12545 완전 해결
- Python / SQLLoader / SQLPlus 모두 동일한 Oracle Client & TNS 설정으로 통일
5. 점검 및 참고 명령어 (Reference)
SQL*Loader 실행 경로 확인
(Get-Command sqlldr).Source
TNS Ping 테스트
C:\\app\\client\\user\\product\\12.2.0\\client_1\\bin\\tnsping.exe TESTDB
포트 연결 테스트
powershell-Command"Test-NetConnection {IP} -Port {port}"
6. 정리 메모 (재발 방지 포인트)
- TNS Alias는 무조건 tnsnames.ora
- 인증 문제 발생 시 sqlnet.ora부터 확인
- 모든 도구(sqlplus / sqlldr / Python)는 동일한 Oracle Client 사용 여부 점검
- DPI-1047 → 거의 100% Client 경로 문제
'문제 해결 과정 > DB' 카테고리의 다른 글
| 🚨 [장애 보고/회고] Oracle TRUNCATE 사고 복구 시도 및 REDO/UNDO 개념 정리 (0) | 2026.03.25 |
|---|