728x90
DBeaver Oracle XE 연결 오류 "소켓에서 읽을 데이터가 없습니다" 해결 방법
이 오류는 Oracle JDBC 드라이버 버전 불일치 또는 네트워크/리스너 설정 문제로 발생합니다. VMware VDI 환경에서는 추가적인 네트워크 제약이 있을 수 있습니다. 아래 단계별 해결 방법을 따라주세요.
1. 즉시 조치: Oracle 리스너 및 서비스 상태 확인
1-A. Oracle XE 서비스 실행 확인 (VDI 환경 필수)
관리자 권한 명령 프롬프트에서:
cmd
Copy
:: Oracle XE 데이터베이스 서비스 상태 확인
net start | findstr "OracleServiceXE"
:: 서비스가 없으면 수동 시작
net start OracleServiceXE
:: Oracle Listener 상태 확인
lsnrctl status
:: Listener가 실행 중이 아니면 시작
lsnrctl start
VDI 특수 대응: 재부팅 후 Oracle 서비스가 자동 시작되지 않는 경우:
cmd
Copy
:: 자동 시작 설정 (관리자 권한)
sc config OracleServiceXE start= auto
sc config OracleOraDB21Home1TNSListener start= auto
1-B. DBeaver 연결 설정 검증
DBeaver에서 연결 설정을 아래와 같이 수정:
-
Host: localhost (VDI에서는 IP 대신 localhost 권장)
-
Port: 1521
-
Service Name: XE (대문자)
-
SID: XE (SID 모드 사용 시)
테스트: tnsping XE 명령어로 TNS 설정 확인
2. 근본 원인: JDBC 드라이버 버전 업데이트
검색 결과에 따르면, "Got minus one from a read call" 오류의 주요 원인은 JDBC 드라이버 버전 불일치입니다.
2-A. DBeaver JDBC 드라이버 수동 업데이트
단계별 절차:
-
Oracle JDBC 드라이버 다운로드:
-
ojdbc8.jar (Java 8-11용) 또는 ojdbc11.jar (Java 11+용) 다운로드
-
DBeaver 드라이버 설정:
-
DBeaver 실행 → Database → Driver Manager
-
Oracle 검색 후 더블클릭
-
Libraries 탭에서 Add File
-
다운로드한 ojdbc8.jar 또는 ojdbc11.jar 추가
-
기존 오래된 드라이버는 삭제 (여러 개 있으면 충돌 발생)
-
-
연결 재시도:
-
DBeaver에서 Oracle XE 연결 편집
-
Test Connection으로 확인
-
2-B. 드라이버 충돌 확인
DBeaver가 오래된 드라이버를 캐시하고 있을 수 있습니다:
cmd
Copy
:: DBeaver 드라이버 캐시 위치 확인
C:\Users\<사용자>\AppData\Roaming\DBeaverData\drivers\oracle
:: 해당 폴더 내 모든 파일 삭제 후 DBeaver 재시작
3. 네트워크 및 방화벽 설정 (VDI 환경)
3-A. VDI 네트워크 어댑터 확인
VMware VDI는 가상 네트워크 어댑터를 사용합니다. Oracle 리스너가 올바르게 바인딩되도록:
cmd
Copy
:: 실제 VDI IP 확인
ipconfig
:: listener.ora에서 HOST를 VDI IP로 설정 (localhost가 안 될 경우)
notepad C:\app\<사용자>\product\21c\network\admin\listener.ora
수정:
ini
Copy
(ADDRESS = (PROTOCOL = TCP)(HOST = <VDI_IP>)(PORT = 1521))
수정 후:
cmd
Copy
lsnrctl stop
lsnrctl start
3-B. 방화벽 규칙 재확인
cmd
Copy
:: 1521 포트 방화벽 규칙 확인
netsh advfirewall firewall show rule name="Oracle XE 1521"
:: 규칙이 없으면 생성
netsh advfirewall firewall add rule name="Oracle XE 1521" dir=in action=allow protocol=TCP localport=1521
4. Oracle XE 데이터베이스 재등록
리스너가 XE 서비스를 모를 경우, 수동으로 등록합니다:
4-A. SQL*Plus에서 서비스 등록
cmd
Copy
sqlplus / as sysdba
SQL> ALTER SYSTEM REGISTER;
SQL> EXIT;
4-B. 리스너 재시작
cmd
Copy
lsnrctl stop
lsnrctl start
lsnrctl services | findstr "XE"
5. DBeaver 연결 URL 직접 지정
JDBC URL을 직접 입력하여 연결:
jdbc:oracle:thin:@localhost:1521:XE
또는
jdbc:oracle:thin:@//localhost:1521/XE
DBeaver 설정:
-
Connection Type: Custom
-
URL Template: 위 중 하나 선택
-
Username: system 또는 생성한 사용자
-
Password: 해당 비밀번호
6. VDI 환경에서의 최종 대응
자동화 스크립트 생성
VDI 재부팅 후 자동 실행되도록 .bat 파일 생성:
bat
Copy
@echo off
net start OracleServiceXE
timeout /t 10
lsnrctl start
echo Oracle XE 서비스 시작 완료
pause
실행:
-
작업 스케줄러 → 로그인 시 자동 실행 설정
-
또는 VDI 관리자에게 GPO를 통한 배포 요청
문제 해결 진단표
Table
Copy
증상원인해결
| "Got minus one from a read call" | JDBC 드라이버 오래됨 | 드라이버 수동 업데이트
|
| "Connection refused" | Oracle 서비스 미실행 | net start OracleServiceXE |
| "TNS:listener does not know" | 리스너 설정 오류 | listener.ora에서 HOST=localhost 수정
|
| VDI 재부팅 후 재발 | Non-persistent VDI | 자동 시작 스크립트 또는 persistent VDI 변경 요청 |
| 방화벽 차단 | 기업 정책 | VDI 관리자에게 1521 포트 허용 요청
|
결론
가장 효과적인 해결 순서:
-
Oracle 서비스 및 리스너 실행 확인 (VDI 환경 필수)
-
JDBC 드라이버 수동 업데이트 (오류의 80% 해결)
-
listener.ora/tnsnames.ora HOST를 localhost로 수정
-
방화벽 1521 포트 확인
이 방법으로도 해결되지 않으면 정확한 오류 메시지와 lsnrctl status 결과를 공유해 주시면 추가 진단이 가능합니다.
DBeaver Oracle XE 연결 오류 "소켓에서 읽을 데이터가 없습니다" 해결 방법
이 오류는 JDBC 드라이버 버전 불일치, Oracle 리스너 설정 문제, 네트워크 차단이 주요 원인입니다. VMware VDI 환경에서는 이러한 문제가 더 자주 발생합니다. 아래 단계별로 해결하세요.
1. 즉시 확인: Oracle 서비스 및 리스너 상태
1-A. Oracle XE 서비스 실행 확인 (VDI 필수)
관리자 권한 명령 프롬프트에서:
cmd
Copy
:: Oracle XE 데이터베이스 서비스 상태 확인
net start | findstr "OracleServiceXE"
:: 서비스가 없으면 수동 시작
net start OracleServiceXE
:: Oracle Listener 상태 확인
lsnrctl status
:: Listener가 실행 중이 아니면 시작
lsnrctl start
VDI 특수 대응: 재부팅 후 Oracle 서비스가 자동 시작되지 않는 경우:
cmd
Copy
:: 자동 시작 설정 (관리자 권한)
sc config OracleServiceXE start= auto
sc config OracleOraDB21Home1TNSListener start= auto
2. 근본 원인: JDBC 드라이버 버전 업데이트 (가장 흔한 원인)
검색 결과에 따르면 "소켓에서 읽을 데이터가 없습니다" 오류의 80%는 JDBC 드라이버 문제입니다.
2-A. Oracle JDBC 드라이버 수동 다운로드 및 교체
단계별 절차:
-
최신 Oracle JDBC 드라이버 다운로드:
-
ojdbc8.jar (Java 8-11용) 또는 ojdbc11.jar (Java 11+용) 다운로드
-
DBeaver 드라이버 설정:
-
DBeaver 실행 → Database → Driver Manager
-
Oracle 검색 후 더블클릭
-
Libraries 탭에서 Add File
-
다운로드한 ojdbc8.jar 또는 ojdbc11.jar 추가
-
기존 오래된 드라이버는 모두 삭제 (여러 개 있으면 충돌 발생)
-
-
DBeaver 재시작 후 연결 재시도
2-B. DBeaver Windows 신뢰 저장소 옵션 해체
특히 VDI 환경에서는 Windows 인증서 저장소와 충돌이 발생할 수 있습니다:
-
DBeaver 연결 편집 → Oracle 탭
-
"Use Windows trust store" 옵션 체크 해제
-
Test Connection 재실행
3. Oracle 리스너 및 TNS 설정 재구성
3-A. listener.ora 설정 (VDI 환경 필수)
파일 경로: C:\app\<사용자>\product\21c\network\admin\listener.ora
올바른 설정 (HOST를 localhost로 명시):
ini
Copy
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = XE)
(ORACLE_HOME = C:\app\<사용자>\product\21c)
)
)
수정 후:
cmd
Copy
lsnrctl stop
lsnrctl start
3-B. tnsnames.ora 설정 재확인
파일 경로: C:\app\<사용자>\product\21c\network\admin\tnsnames.ora
올바른 XE 설정:
ini
Copy
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE) # 반드시 대문자
)
)
테스트:
cmd
Copy
tnsping XE
4. DBeaver 연결 설정 세부 조정
4-A. 연결 URL 직접 지정
DBeaver 연결 설정에서 JDBC URL을 직접 입력하세요:
jdbc:oracle:thin:@localhost:1521:XE
또는
jdbc:oracle:thin:@//localhost:1521/XE
4-B. 호환 모드 연결
-
Connection Type: SID (Service Name 대신)
-
SID: XE
-
Host: localhost
-
Port: 1521
5. 방화벽 및 네트워크 설정
5-A. Windows 방화벽 1521 포트 허용
cmd
Copy
:: 1521 포트 방화벽 규칙 확인
netsh advfirewall firewall show rule name="Oracle XE 1521"
:: 규칙이 없으면 생성
netsh advfirewall firewall add rule name="Oracle XE 1521" dir=in action=allow protocol=TCP localport=1521
5-B. VDI 네트워크 정책 확인
기업 VDI 환경에서는 네트워크 정책이 1521 포트를 차단할 수 있습니다.
-
VDI 관리자에게 1521 포트 허용 요청 필요
6. Oracle 데이터베이스 강제 재등록
리스너가 XE 서비스를 모를 경우, 수동으로 등록합니다:
cmd
Copy
:: SQL*Plus로 접속
sqlplus / as sysdba
SQL> ALTER SYSTEM REGISTER;
SQL> EXIT;
:: 리스너 재시작
lsnrctl stop
lsnrctl start
진단 체크리스트
Table
Copy
문제 단계확인 명령/작업정상 결과
| Oracle 서비스 | net start | findstr "Oracle" | OracleServiceXE 실행 중 |
| 리스너 상태 | lsnrctl services | findstr "XE" | XE 서비스 등록됨 |
| TNS Ping | tnsping XE | OK (20 msec) |
| JDBC 드라이버 | DBeaver Driver Manager | 최신 ojdbc8.jar 또는 ojdbc11.jar |
| 방화벽 | netsh advfirewall show rule | 1521 포트 허용 규칙 존재 |
| DBeaver 설정 | Windows trust store | 체크 해제됨 |
최종 해결 순서 (추천)
-
OracleServiceXE 및 리스너 실행 (net start, lsnrctl start)
-
DBeaver JDBC 드라이버 업데이트 (오래된 드라이버 삭제 후 최신 버전 추가)
-
Windows 신뢰 저장소 옵션 해제 (DBeaver Oracle 설정)
-
listener.ora/tnsnames.ora HOST를 localhost로 수정
-
방화벽 1521 포트 확인
-
DBeaver JDBC URL을 직접 입력 (jdbc:oracle:thin:@localhost:1521:XE)
이 순서대로 진행하면 90% 이상 해결됩니다. 특히 Step 2 (JDBC 드라이버 업데이트) 가 가장 중요합니다.
VDI 환경 특화 팁
-
Non-persistent VDI: 매 로그인마다 Oracle 서비스 자동 시작 스크립트 배포 필요
-
기업 방화벽: VDI 관리자에게 1521 포트 영구 허용 요청
-
드라이버 경로: VDI에서 드라이버 파일이 삭제될 수 있으므로, 네트워크 드라이브에 ojdbc8.jar 저장 후 DBeaver에서 해당 경로 추가
이 방법으로도 해결되지 않으면 정확한 오류 메시지 전체와 lsnrctl status 결과를 공유해 주세요.
728x90
'컴퓨터 활용(한글, 오피스 등) > 기타' 카테고리의 다른 글
| ORA-1228547 오류 해결 방법은? (0) | 2025.11.10 |
|---|---|
| ORA-12638 오류 해결: "Credential retrieval failed" (0) | 2025.11.10 |
| postgresql 사용 활용 (0) | 2025.11.08 |
| postgresql 설치 원복 백업, lc_collate=ko_KR.utf8 설정 문제 (0) | 2025.11.08 |
| 서버 wwn 매핑 작업이란 (0) | 2025.11.08 |