728x90
ORA-28547 오류 해결: "connection to server failed, probable Oracle Net admin error"
참고: 오류 코드가 ORA-1228547이 아니라 ORA-28547입니다. 이 오류는 Oracle Net 관리 설정 문제로, VDI 환경에서 자주 발생합니다. 아래 단계별로 해결하세요.
1. 즉시 조치: 데이터베이스 인스턴스 리스너 등록 확인
1-A. 리스너 서비스 등록 상태 확인
cmd
:: 리스너에 등록된 서비스 목록 확인
lsnrctl services | findstr "XE"
:: 만약 XE가 목록에 없다면, 데이터베이스가 리스너에 자동 등록되지 않은 것입니다.
정상 결과:
Copy
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
만약 XE가 없다면 → 동적 등록 실패 또는 정적 설정 누락
1-B. SQL*Plus로 데이터베이스 상태 확인
cmd
:: 먼저 로컬로 접속 시도 (OS 인증)
sqlplus / as sysdba
SQL> SELECT status FROM v$instance;
SQL> SELECT name FROM v$database;
접속이 안 된다면 → Oracle 서비스 미실행 또는 sqlnet.ora 설정 문제
2. VDI 환경에서의 주요 원인과 해결
원인 1: OracleServiceXE 미실행 및 리스너 등록 실패
VDI 환경에서는 IP 변경으로 인해 데이터베이스가 리스너에 자동 등록되지 않습니다.
cmd
:: Oracle 서비스 시작
net start OracleServiceXE
:: 리스너 시작
lsnrctl start
:: 10초 대기 후 리스너 재시작 (등록 강제)
timeout /t 10
lsnrctl stop
lsnrctl start
:: 등록 상태 재확인
lsnrctl services | findstr "XE"
원인 2: listener.ora 정적 설정 추가
동적 등록이 실패하면 정적 등록을 사용해야 합니다.
파일 경로: C:\app\<사용자>\product\21c\network\admin\listener.ora
수정 후:
ini
Copy
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) # VDI에서는 localhost 권장
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = XE)
(ORACLE_HOME = C:\app\<사용자>\product\21c)
)
)
수정 후 반드시:
cmd
Copy
lsnrctl stop
lsnrctl start
원인 3: sqlnet.ora 설정 충돌
이전에 ORA-12638 해결을 위해 SQLNET.AUTHENTICATION_SERVICES = NONE으로 변경했을 수 있습니다. 이 설정이 DRCP(Database Resident Connection Pooling)와 충돌하여 ORA-28547을 발생시킬 수 있습니다.
파일 경로: C:\app\<사용자>\product\21c\network\admin\sqlnet.ora
검증:
ini
Copy
# DRCP를 사용하지 않는다면, 아래 설정이 있어야 합니다.
SQLNET.AUTHENTICATION_SERVICES = (NONE)
# DRCP를 사용한다면, Windows에서는 NTS를 사용할 수 없으므로 DRCP 비활성화 필요
3. 문자셋(Character Set) 불일치
Oracle 문서에 따르면, 문자셋 불일치도 ORA-28547의 원인입니다.
3-A. 데이터베이스 문자셋 확인
cmd
Copy
sqlplus / as sysdba
SQL> SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET';
정상 결과:
Copy
PARAMETER VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
3-B. 클라이언트 문자셋 확인 (DBeaver)
DBeaver 연결 설정에서 NLS_LANG 환경 변수를 설정:
-
Connection settings → Driver properties → Add
-
Name: oracle.net.ns.SQLNetDef.TCP_CONNTIMEOUT_STR
-
Value: 10000 (밀리초 단위 타임아웃)
또는
cmd
Copy
:: Windows 환경 변수 설정 (관리자 권한)
setx NLS_LANG "AMERICAN_AMERICA.AL32UTF8" /M
4. 연결 타임아웃 설정
4-A. SQLNet 타임아웃 증가
sqlnet.ora에 타임아웃 설정 추가:
ini
Copy
SQLNET.INBOUND_CONNECT_TIMEOUT = 120
SQLNET.SEND_TIMEOUT = 120
SQLNET.RECV_TIMEOUT = 120
5. DBeaver 연결 설정 재구성
5-A. JDBC URL에 타임아웃 파라미터 추가
DBeaver 연결 설정에서 JDBC URL을 아래와 같이 수정:
jdbc:oracle:thin:@localhost:1521:XE?oracle.net.CONNECT_TIMEOUT=10000
또는
jdbc:oracle:thin:@(DESCRIPTION=(CONNECT_TIMEOUT=10)(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)))6. 완전한 재설정 (최후의 수단)
위 방법이 모두 실패하면 Oracle XE를 재설치하되, VDI 환경에 맞게 설정:
-
Oracle XE 제거 (데이터 유지 옵션 선택)
-
sqlnet.ora 백업 및 삭제 (재설치 시 기본값 생성)
-
재설치 시 관리자 비밀번호 재설정
-
재설치 후 sqlnet.ora에서 SQLNET.AUTHENTICATION_SERVICES = (NONE) 설정
-
listener.ora에 정적 등록 추가
-
서비스 및 리스너 재시작
문제 해결 흐름도
Copy
ORA-28547 발생
│
├─→ lsnrctl services (XE 등록됨?) → NO → OracleServiceXE 실행? → NO → net start
│ ↓ YES
│ 정적 등록 추가 → listener.ora 수정
│
├─→ YES → sqlnet.ora 확인 → DRCP 사용? → YES → DRCP 비활성화 또는 NONE 설정
│ ↓ NO
│ NTS 설정? → YES → NONE으로 변경 후 재시작
│
├─→ 문자셋 확인 → AL32UTF8? → NO → NLS_LANG 설정
│
└─→ 타임아웃 설정 → 120초로 증가
최종 해결 체크리스트 (VDI 환경)
-
[ ] net start OracleServiceXE → 실행 중
-
[ ] lsnrctl status → 리스너 실행 중
-
[ ] lsnrctl services → XE 등록됨
-
[ ] listener.ora에 정적 등록(SID_LIST_LISTENER) 추가
-
[ ] sqlnet.ora에서 SQLNET.AUTHENTICATION_SERVICES = (NONE) 설정
-
[ ] DBeaver JDBC 드라이버 최신 버전(ojdbc8.jar)으로 업데이트
-
[ ] 방화벽 1521 포트 허용
-
[ ] JDBC URL에 타임아웃 파라미터 추가
결론
VDI 환경에서 ORA-28547 해결의 핵심:
-
리스너에 XE 정적 등록 (IP 변경 대응)
-
sqlnet.ora 인증 설정 (NONE으로 변경)
-
JDBC 드라이버 최신화 (DBeaver 연결 안정화)
특히 VDI는 IP가 자주 변경되므로, HOST = localhost 사용과 정적 리스너 등록이 필수입니다.
728x90
'컴퓨터 활용(한글, 오피스 등) > 기타' 카테고리의 다른 글
| 엑셀 | 날짜를 요일로 표시하는 2가지 방법 | 사용자 지정 (0) | 2025.11.11 |
|---|---|
| ORA-01031 오류 해결 방법 (0) | 2025.11.10 |
| ORA-12638 오류 해결: "Credential retrieval failed" (0) | 2025.11.10 |
| DBeaver Oracle XE 연결 오류 "소켓에서 읽을 데이터가 없습니다" (0) | 2025.11.08 |
| postgresql 사용 활용 (0) | 2025.11.08 |