본문 바로가기

별걸다하는 IT/데이터베이스 Database

[DB Sql developer 에러] The Network Adapter could not establish the connection 원인,오류 해결법

반응형

안녕하세요~! 

주말 내내 뒹굴거리다가... 이렇게 포스팅을 하러 왔습니다 ㅎㅎ 

 

SQL Developer를 설치하고 커넥션을 하려 하면,

이렇게 '상태:실패 -테스트 실패: IO 오류: The Network Adapter could not establish the connection' 에러 메시지가 뜨는 걸 볼 수 있어요.

이에 대한 해결법을 포스팅하고자 합니다. 

해당 에러 원인

출처: https://appuals.com/how-to-fix-io-error-the-network-adapter-could-not-establish-the-connection-on-oracle-sql/

이 IO오류는 접속연결 방식의 세부 사항이 제대로 설정되어있지 않거나, 서비스가 활성화되어있지 않아 사용될 수 없을 때 발생한다 하네요.

 

해결 방법

[해결방법 요약]

1. 세부사항 확인

   1-1. HOST값 제대로 들어갔나 확인

   1-2. 서비스명 확인

2. 서비스,방화벽 체크

   2-1. 특정 포트 방화벽 열기

   2-2. 서비스 실행 여부 확인

   2-3. 환경변수 확인

   2-4. 포트번호 변경해보거나 껐다 키거나 재설치.

3. 확인

1. 세부 사항 확인 

오라클 설치했을 때 이렇게 경로 지정 해줬었죠?? 요 위치 하위 폴더에 가면 dbhomeXE 디렉터리가 있는데 아래 위치에서 리스너와 tnsname 파일이 있습니다. 오라클에 커넥트 하려면 여기 리스터가 요청을 받아들여야하는데 설정 값이 일치해야해요. 이를 확인해줄거예요.

관련 파일: listener.ora , tnsnames.ora

위치: D;\app\jhnya\product\18.8.0\dbhomeXE\network\admin

가장 최신 버전인 18.0.0에는 여기에 파일이 있더라고요. (저처럼 설치 위치를 따로 지정해준 것이 아니라면 대게 C:app파일에 있습니다 

노트북

근데 그 이전 버전이라면 (제 노트북에 깔려 있는건 11.2.0버전) 

C디렉터리의 oracleexe\app\oracle\product\11.2.0\server\network\ADMIN에 가면 파일이 위치해있습니다.

 

■ 1-1 HOST값 확인

18버전 HOST값: 내 IP주소
11버전 HOST값: 내 호스트명(컴퓨터명) 

18버전의 경우에는 HOST에 IP가 옵니다. IP는 cmd창에서 ipconfig라는 명령어로 내 IP주소를 가볍게 확인할 수 있어요.

ip주소 확인

<listener.ora파일 XE 18버전>

# listener.ora Network Configuration File: D:\app\jhnya\product\18.0.0\dbhomeXE\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

DEFAULT_SERVICE_LISTENER = XE

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\jhnya\product\18.0.0\dbhomeXE)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\jhnya\product\18.0.0\dbhomeXE\bin\oraclr18.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 110.9.79.68)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

HOST = <자기 IP주소>

HOST값에 ip주소가 잘 위치되어 있는지 확인해줍시다. 

(HOST = LOCALHOST 로 적어주어도 됩니다.)

 

그런데 11버전의 경우 세팅이 좀 다릅니다. 

노트북에 설치된 11버전

HOST = (컴퓨터이름)

이렇게 넣어주면 돼요. 자신의 컴퓨터 이름의 경우 cmd창에서 hostname 명령어로 확인할 수 있습니다.

위 사진(DESKTOP-3VRQTV3)과 cmd 명령어 결과(DESKTOP-OLJHKDN)와 이름이 다른 이유는 사진은 노트북에서 캡쳐한거고 hostname은 데탑에서 실행한거라 그래요.(다른 컴터에서 함) 아무튼 저기 hostname명령어 쳐서 나온 자신의 컴터이름을 HOST 값에다가 넣어주면 됩니다. 

 

IP나 컴터명을 넣어주는 이 작업은 tnsnames에서도 동일해요. (18버전과 11버전 세팅된 상태를 올려놓을 테니 참고해주세요) 

# tnsnames.ora Network Configuration File: D:\app\jhnya\product\18.0.0\dbhomeXE\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 110.9.79.68)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 110.9.79.68)(PORT = 1521))

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

노트북 설정파일 (11버전)

■ 1-2 서비스 네임 확인

tnsnames에 등록되어 있는 서비스 네임이 동일해야 합니다.

tnsnames.ora

XE라고 되어있는 저 부분있죠 저게 서비스명이예요. 빨간색 두 부분이 서로 일치하게 통일시켜줍시다. (파란색 HOST값도 한 번더 확인해주기!) XE부분은 변경되어도 상관 없는데 저 빨간색 두 부분은 일치해야 돼요. 저게 서비스명이라는거!

SQL Plus에서 system으로 로그인 한 후에 

show parameter service_names

명령어를 쳐서 등록한 서비스명 VALUE에 XE(서비스명)가 잘 나오는지 확인해봅시다. 

 

이렇게 설정 파일들을 변경해줬으면 서비스 부분을 중지했다가 재실행시켜줘야 해요. (서비스 중지 실행 확인 부분은 아래에 이어 설명하고 있으니 확인해주시면 됩니다.)

2. 서비스, 방화벽 체크

이 에러 원인은 세부사항이 안맞아서도 있지만 서비스가 실행이 안되었을 경우도 있어요.

일단 방화벽을 뚫어줍시다. 기본 설정은 다 관리자 권한으로 실행시켜준다 생각하면 돼요.

■ 2-1. 방화벽 확인 

시작에 방화벽치면 바로 방화벽 상태 확인이 나와요 눌러줍시다.

고럼 여기 고급설정을 클릭해주세요.

고럼 이렇게 나오는데 여기서 '인바운드 규칙', 그리고 '새 규칙'을 눌러줍시다. 특정 포트를 허용해줄거예요.

포트 누른 후 다음.

그 다음 열어줄 포트 범위대를 적어주면 됩니다. 하나의 포트만 허용할거면 그 포트만 적어주면 돼요. 

저는 1521부터 1550까지 열어줬어요. 

연결 허용 후 다음

또 다음.

자신이 알아볼 수 있게 이름을 적은 뒤 마침을 누르시면 끝납니다.

설정 후, 인바운드 규칙 아무거나 클릭해둔 상태에서 'd'를 누르면 d로 시작하는 부분을 찾아 넘어가줍니다 (저는 설정한 이름이 d로 시작해서 d를 눌러줌) 

잘 설정된 것을 확인할 수 있어요. 오른쪽으로 스크롤을 조금만 이동하면, 허용된 로컬 포트 부분도 확인할 수 있습니다.

 

■ 2-2. 서비스 활성화 여부 확인

서비스가 실행중인지 활성화 되어있는지 확인을 해봅시다. 

윈도우에 '서비'만 검색해도 서비스가 뜹니다. 관리자 권한으로 실행시켜주세요! 

마찬가지로 이름 중 하나를 클릭한 상태에서 o를 누르면 이름이 o로 시작하는 부분으로 넘어갑니다.

여기서 오라클 서비스의 상태가 '실행'인지 체크해주세요. 

여기서 Oracle~TNSListener가 실행으로 되어있지 않은 분은 우클릭해서 중지했다가 시작을 눌러주세요. (설정 부분에 변경이 있었다면 재시작해줘야 합니다.)

중지했던거 다시 시작해
요렇게 뜹니다.

안돼면 오라클을 껐다 키거나 재부팅 후 다시 시도하면 되어있는 경우가 더러 있습니다.

 

■ 2-3. 환경변수 확인 

이렇게 해도 안됐으면, 추가적으로 설치 위치가 잘 잡혀있는지 확인해봅시다.

환경 변수 들어가서 Path 편집 누른 후 확인해주세요. 

시스템 변수 PATH의 설치 위치가 잘 잡혀있는지 확인해주세요

(D:\app\Jhnya\product\18.0.0\dbhomeXE\bin)

저는 설치를 D드라이브에 해서 D인데 그냥 하셨으면 C드라이브에 있을거.. 저 위치에 설치된게 맞는지 확인 한번 하고 경로를 잡아줍시다. 

 

■ 2-4. 포트 변경 / 재부팅 / 재설치..

이래도 안돼면,, 포트번호가 이미 사용중일 수도 있어요. 설정파일을 변경 후 포트번호만 바꿔서 시도를 해봅시다. 

안돼서 재부팅까지 했는데 또 안되면 재설치하는게 맘이 편하고 빠를수도.. 

확인 및 테스트 

좀 많아서 막막할 수 있는데, 차근 차근 설정 변경하고 재부팅 하니까 저는 잘 해결됐어요.

 

일단 리스터가 제대로 동작하는지 확인하려면 프롬프트 창에다가 리스너 서비스 명령어를 쳐줍시다.

lsnrctl services

이렇게 등록한 서비스명이 뜨면 제대로 된 거~! 

다시 접속 시도해보기!

설정 파일에 HOST를 ip주소로 했으면 ip를 적어주고 localhost로 했으면 localhost로 적어주세요. 

이렇게 테스트를 눌렀을 때 파란색 부분이 '성공'으로 뜨면 해결 완료입니다.

 

참고하시라고 listener.ora와 tnsnames.ora를 올려드려요 (localhost로 HOST세팅됨) 리스터 파일의 ORACLE_HOME 변수와 ENVS 값은 각자 컴터 설치 위치에 맞게 변경해줘야 합니다. 

listener.ora
0.00MB
tnsnames.ora
0.00MB

오늘은 여기까지입니다! 문제가 모쪼록 해결되셨으면 좋겠어요 :)

도움이 되셨다면 공감/광고보답/댓글 중 하나는 어떤가요? 큰 힘이됩니다 ~!

반응형