해결된 질문
작성
·
87
0
안녕하세요. 열심히 강의 듣고 있는 수강생 입니다.
part1에 이어 part2 수강 중인데 동영상과 올려주신 책자 참고해서 도커설치 오라클 설치를 완료하고 DBeaver 연결을 하는데 다음과 같이 오류 메세지가 나와서 문의 드립니다.
새데이터베이스 연결 에 정보를 입력하고 완료를 누르면 아래와 같은 오류 메세지가 뜹니다.
ORA-12541: 데이터베이스에 접속할 수 없습니다. %s에 리스너가 없습니다. (CONNECTION_ID=f7QamODkSR2oA/kGFTXp/Q==)
2~3번 반복해서 진행해 봤는데 같은 오류가 나오네요. 혹시 제가 설치 및 연결시 잘못한게 있을까요??
답변 2
1
안녕하세요. 실습환경 설정에 문제를 겪고 있으시네요. 여러 번 시도하셨는데도 동일한 오류가 발생한다니 답답하실 것 같습니다.
ORA-12541: 데이터베이스에 접속할 수 없습니다. %s에 리스너가 없습니다.
리스너가 없다는 오류는 주로 데이터베이스 서버에는 문제가 없지만, 클라이언트(여기서는 DBeaver)가 데이터베이스에 연결을 시도할 때 리스너(Listener)를 찾지 못하거나 리스너가 해당 연결 요청을 처리하지 못할 때 발생합니다. 혹은 서버가 구동이 안되어 있을 때도 발생합니다. 몇 가지 확인해야 할 사항들이 있습니다.
아래의 순서대로 한 번 확인해보세요. 확인 하는 중간에 문제를 찾아 해결하실 수도 있습니다.
1. Docker에서 오라클이 실행되고 있는지 확인해주세요.
도커 데스트크탑에서 액션 버튼이 클릭된 상태인지 확인해보십시오.
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 데이터베이스 접속 문제로, 특히 데이터베이스 리스너가 비활성화되어 있거나 실행되지 않을 때 발생합니다. 이 오류를 해결하기 위해 몇 가지 확인할 사항을 안내드리겠습니다.
리스너 상태 확인:
터미널(명령 프롬프트)에서 아래 명령어를 통해 Oracle 리스너가 구동 중인지 확인하세요.
lsnrctl status
만약 리스너가 실행 중이지 않다면, 아래 명령어로 리스너를 시작합니다.
lsnrctl start
리스너 설정 파일 (listener.ora) 확인:
$ORACLE_HOME/network/admin
디렉토리에 위치해 있습니다.포트 및 방화벽 설정:
Docker 컨테이너 내부 상태 체크:
docker exec -it <oracle-container-name> lsnrctl status
DBeaver 설정 확인:
localhost
나 127.0.0.1
일 수 있습니다.그 외에도 DB 및 네트워크 설정과 관련된 몇 가지 고려사항을 확인해 보시면 도움이 될 것입니다.
더 자세한 해결 방법은 docker에 SQL 연결시 질문 콘텐츠도 참고해 보시길 추천드립니다. 해당 게시물에서는 Docker 환경에서 SQL 서버 설정과 연결 관련된 질문과 해결책이 논의되었습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.