강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

cwkhg1님의 프로필 이미지
cwkhg1

작성한 질문수

[2025]비전공자도 한 번에 합격하는 SQLD Part2

Oracle 설치 방법 (on Container)

도커 기반 설치 중 DBeaver 연결 설정시 오류 관련 문의

해결된 질문

작성

·

87

0

안녕하세요. 열심히 강의 듣고 있는 수강생 입니다.

part1에 이어 part2 수강 중인데 동영상과 올려주신 책자 참고해서 도커설치 오라클 설치를 완료하고 DBeaver 연결을 하는데 다음과 같이 오류 메세지가 나와서 문의 드립니다.

캡처.PNG.webp

새데이터베이스 연결 에 정보를 입력하고 완료를 누르면 아래와 같은 오류 메세지가 뜹니다.

ORA-12541: 데이터베이스에 접속할 수 없습니다. %s에 리스너가 없습니다. (CONNECTION_ID=f7QamODkSR2oA/kGFTXp/Q==)

2~3번 반복해서 진행해 봤는데 같은 오류가 나오네요. 혹시 제가 설치 및 연결시 잘못한게 있을까요??

답변 2

1

데이터코드랩님의 프로필 이미지
데이터코드랩
지식공유자

안녕하세요. 실습환경 설정에 문제를 겪고 있으시네요. 여러 번 시도하셨는데도 동일한 오류가 발생한다니 답답하실 것 같습니다.

 

ORA-12541: 데이터베이스에 접속할 수 없습니다. %s에 리스너가 없습니다.

 

리스너가 없다는 오류는 주로 데이터베이스 서버에는 문제가 없지만, 클라이언트(여기서는 DBeaver)가 데이터베이스에 연결을 시도할 때 리스너(Listener)를 찾지 못하거나 리스너가 해당 연결 요청을 처리하지 못할 때 발생합니다. 혹은 서버가 구동이 안되어 있을 때도 발생합니다. 몇 가지 확인해야 할 사항들이 있습니다.

 

아래의 순서대로 한 번 확인해보세요. 확인 하는 중간에 문제를 찾아 해결하실 수도 있습니다.

 

1. Docker에서 오라클이 실행되고 있는지 확인해주세요.

  • 도커 데스트크탑에서 액션 버튼이 클릭된 상태인지 확인해보십시오.

image.png

 

2. Oracle 리스너 상태 확인:

  • Oracle 리스너가 정상적으로 실행 중인지 도커 컨테이너 내부에서 확인해야 합니다.

  • 파워쉘에서 docker exec -it ecstatic_wilson bash를 수행하면 파워쉘에서 컨테이너의 리눅스의 쉘을 쓸 수 있습니다. 위의 ecstatic_wilson은 도커 컨테이너 이름입니다. 도커 데스크탑에서 확인할 수 있어요.

  • Docker 컨테이너 접속:

    Bash

    docker exec -it [컨테이너_이름_또는_ID] bash
    

     

  • 리스너 상태 확인: 컨테이너 내부에서 다음 명령어를 실행하여 리스너 상태를 확인합니다.

    Bash

    lsnrctl status
    

    이 명령어를 실행했을 때, 리스너가 정상적으로 실행 중이고 서비스들이 등록되어 있는지 확인해야 합니다. 특히, 서비스 요약 부분에 연결하려는 데이터베이스 인스턴스(XE)가 READY 상태로 등록되어 있는지 확인해주세요.

3. Oracle 서비스 이름 (SID 또는 Service Name) 확인:

DBeaver에서 연결 설정 시 사용한 서비스 이름(SID 또는 Service Name)이 정확한지 확인해주세요. Docker 컨테이너에 우리가 설치한 Oracle의 기본 서비스 이름은 XE 로 설정됩니다.

  • lsnrctl status 명령어 결과에서 서비스 요약 부분에 나타나는 이름을 확인하여 DBeaver에 입력한 값과 일치하는지 확인해주세요.

  • 만약 DBeaver에서 'SID' 방식으로 연결하고 있다면 SID 값을, 'Service Name' 방식으로 연결하고 있다면 Service Name 값을 정확히 입력했는지 확인해주세요.

4. 호스트명 (Host) 또는 IP 주소 확인:

DBeaver에서 연결 설정 시 입력한 호스트명 또는 IP 주소가 올바른지 확인해주세요.

  • 만약 Docker를 실행하고 있는 호스트 머신에서 DBeaver를 사용하고 있다면, 호스트명은 localhost 또는 127.0.0.1을 사용해야 합니다.

  • 중요하게 확인해야 할 것은, Docker 컨테이너의 포트 포워딩(Port Forwarding) 설정입니다. Docker 컨테이너를 실행할 때 Oracle의 기본 포트인 1521번 포트를 호스트 머신의 포트(예: 1521)로 매핑해주었는지 확인해주세요. (예: -p 1521:1521)

5. 방화벽 설정 확인:

운영체제(Docker가 실행 중인 호스트 머신)의 방화벽에서 Oracle 리스너 포트(기본 1521)가 허용되어 있는지 확인해주세요. 방화벽에서 해당 포트를 차단하고 있다면 DBeaver에서 접속할 수 없습니다.

6. Docker 컨테이너 로그 확인:

Oracle 컨테이너의 로그를 확인하면 추가적인 힌트를 얻을 수 있습니다.

Bash

docker logs [컨테이너_이름_또는_ID]

로그에 Listener refused the connection과 같은 메시지나 다른 오류 메시지가 있는지 확인해보세요.

7. DBeaver 연결 설정 재확인:

마지막으로 DBeaver의 연결 설정 창에서 다음 정보들이 정확하게 입력되었는지 다시 한번 확인해주세요.

  • Host:localhost 또는 Docker 호스트의 IP 주소

  • Port:1521 (또는 Docker 포트 포워딩으로 설정한 포트)

  • Database: Oracle SID (XE) 또는 Service Name (XE)

  • User name: 생성한 사용자 이름

  • Password: 해당 사용자의 비밀번호

진행하시다가 막히는 부분이 있거나 추가적인 오류 메시지가 나오면 다시 문의해주세요. 스크린샷에 보이는 터미널 화면에서 lsnrctl status를 실행한 결과나, DBeaver 연결 설정 창의 스크린샷을 함께 첨부해주시면 더 정확하게 도움을 드릴 수 있어요.

날씨가 덥네요. 더위 조심하시구요 ^^ 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. cwkhg1님.

ORA-12541 오류는 Oracle 데이터베이스 접속 문제로, 특히 데이터베이스 리스너가 비활성화되어 있거나 실행되지 않을 때 발생합니다. 이 오류를 해결하기 위해 몇 가지 확인할 사항을 안내드리겠습니다.

해결책 제안:

  1. 리스너 상태 확인:

    • 터미널(명령 프롬프트)에서 아래 명령어를 통해 Oracle 리스너가 구동 중인지 확인하세요.

      lsnrctl status
      
    • 만약 리스너가 실행 중이지 않다면, 아래 명령어로 리스너를 시작합니다.

      lsnrctl start
      
  2. 리스너 설정 파일 (listener.ora) 확인:

    • 리스너 설정 파일이 제대로 설정되었는지 확인하십시오. 이 파일은 종종 $ORACLE_HOME/network/admin 디렉토리에 위치해 있습니다.
  3. 포트 및 방화벽 설정:

    • 리스닝 포트(기본적으로 1521)가 열려 있는지, 방화벽에 의해 차단되지 않았는지 확인하세요.
  4. Docker 컨테이너 내부 상태 체크:

    • 만약 Docker를 사용 중이라면, 컨테이너 내부에서 리스너가 올바르게 작동 중인지 체크합니다:
      
      docker exec -it <oracle-container-name> lsnrctl status
      

  5. DBeaver 설정 확인:

    • DBeaver에서 설정한 호스트 및 포트 번호가 정확한지 확인하세요. Docker에서 기본 설정은 localhost127.0.0.1일 수 있습니다.

그 외에도 DB 및 네트워크 설정과 관련된 몇 가지 고려사항을 확인해 보시면 도움이 될 것입니다.

더 자세한 해결 방법은 docker에 SQL 연결시 질문 콘텐츠도 참고해 보시길 추천드립니다. 해당 게시물에서는 Docker 환경에서 SQL 서버 설정과 연결 관련된 질문과 해결책이 논의되었습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cwkhg1님의 프로필 이미지
cwkhg1

작성한 질문수

질문하기