Inflearn brand logo image

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

KyoungJin_Jinny 이경님의 프로필 이미지
KyoungJin_Jinny 이경

작성한 질문수

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

Oracle 설치 방법 (on Container)

ORA-12541 오류

작성

·

78

0

SQL 하루는 잘 이용했는데 다음날 이렇게 뜹니다... ㅠㅠ

답변 4

0

혹시 docker 기동을 명령어가 아닌 docker console 에서 기동하셨을까요?
저도 동일한 오류가 있었는데 docker run -d -p 1521:1521 docker.io/truevoly/oracle-12c 명령어로 기동하니 해결되었습니다.

0

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

안녕하세요. 데이터베이스 연결이 안되어서 문제를 겪고 계신거 같은데요.

다른 질문에서도 제가 답변을 드린 적이 있는데요. 현재 설치한 오라클에 문제가 많으면, 라이브 SQL 을 사용하시는 것 권해드립니다. 별도의 설치 과정없이 웹에서 바로 사용하실 수 있습니다. 제가 드린 교재에 사용 방법이 나와 있습니다. 접속링크는 아래와 같아요.

 

livesql.oracle.com

 

적극 권해드리구요. 오류 메세지 뿐 아니라, 화면 캡처 한 것 등 더 많은 자료를 질문에 남기시면 더 좋은 답변을 남길 수 있습니다. 아래 내용은 일반적인 오라클 리스너 오류에 대한 대응 방법입니다. 아래 내용 참고하십시오.


ORA-12541 오류는 오라클 데이터베이스에 접속할 때 발생하는 오류로, "TNS: 리스너가 없습니다"라는 의미입니다. 이 오류는 클라이언트가 데이터베이스에 연결을 시도했지만, 해당 데이터베이스의 TNS 리스너(TNS Listener)가 실행되고 있지 않거나 연결을 수락하지 못할 때 발생합니다. 리스너는 클라이언트와 데이터베이스 간의 통신을 중개하는 역할을 하므로, 리스너가 작동하지 않으면 연결이 불가능합니다.


 

ORA-12541 오류의 주요 원인

 

  • 리스너가 실행 중이지 않음: 가장 흔한 원인으로, 데이터베이스 서버에서 리스너 서비스가 시작되지 않았거나 비정상적으로 종료된 경우입니다.

  • 잘못된 호스트 또는 포트 정보: 클라이언트의 연결 설정 파일(tnsnames.ora)에 지정된 호스트 이름이나 IP 주소, 포트 번호가 서버의 리스너 정보와 일치하지 않을 때 발생합니다.

  • 방화벽 문제: 서버의 방화벽이 리스너 포트(기본값 1521)를 차단하고 있을 수 있습니다.

  • listener.log 파일 용량 초과: 드문 경우지만, 리스너 로그 파일의 용량이 너무 커져 더 이상 기록할 수 없을 때 발생하기도 합니다.

 

해결 방법

  1. 도커 데스크탑에서 오라클을 시작시켰는지 확인해보세요.

 도커 데스크탑에서 오라클이 가동 중인 상태인데도, 접속이 안되면.. 아래 내용을 체크해보십시오.

 

아래의 내용은 파워쉘에서 수행해야 합니다. 파워쉘을 관리자 권한으로 수행시키시고, 아래의 명령어를 수행하십시오. 이때 ecstatic_wilson은 도커 서비스이름입니다. 환경별로 다를 수 있어요. 도커 데스크탑에서 확인하십시오.

 

docker exec -it ecstatic_wilson bash

 

이 명령어를 수행하고 나면, 도커 가상환경에 설치된 리눅스에 접속할 수 있게 됩니다.

그 상태에서 아래의 내용을 확인하셔야 합니다.

 

  1. 리스너 상태 확인 및 재시작:

    • 데이터베이스 서버에서 lsnrctl status 명령어를 실행하여 리스너가 정상적으로 작동하는지 확인합니다.

    • 만약 리스너가 정지 상태라면, lsnrctl start 명령어로 리스너를 다시 시작합니다.

  2. 연결 정보 확인:

    • 클라이언트의 tnsnames.ora 파일과 서버의 listener.ora 파일에 있는 호스트명(HOST)과 포트 번호(PORT)가 정확하게 일치하는지 확인합니다.

 

아래의 내용은 윈도우에서 확인하셔야 합니다. 윈도우 방화벽 혹은 보안 프로그램에서 1521을 막고 있는 건 아닌지 확인하세요.

  1. 방화벽 설정 확인:

    • 서버의 방화벽 설정에서 리스너가 사용하는 포트(예: 1521)가 열려 있는지 확인합니다.

0

저것도 검색 다 해봤는데요...

 

'lsnrctl'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는

배치 파일이 아닙니다.

 

이렇게 떠서요,..

 

이제 곧 시험이라 정말 해야하는데

sql 실행 자체가 안되니 정말 막막합니다...

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

위에 제가 남긴 답글을 확인 하십시오.

0

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

ORA-12541 오류는 Oracle 데이터베이스 접속 문제로 흔히 발생하는 오류 중 하나입니다. 이 오류는 주로 데이터베이스 리스너(Listener)가 비활성화되어 있거나 실행되지 않을 때 발생합니다. 이를 해결하기 위한 몇 가지 조치를 안내드리겠습니다.

해결책 제안:

  1. 리스너 상태 확인:

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

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

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

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

    • 데이터베이스가 사용해야 할 포트(기본적으로 1521)가 열려 있는지, 방화벽에 의해 차단되지 않았는지 확인하세요.
  4. Docker 사용 시 상태 체크:

    • 만약 Docker를 통해 Oracle을 실행 중이라면, 컨테이너가 올바르게 실행되고 있는지 확인해야 합니다.
    • Docker에서 리스너 상태를 체크하기 위한 명령은 다음과 같습니다:
      
      docker exec -it <oracle-container-name> lsnrctl status
      

  5. DBeaver 설정 확인:

    • DBeaver가 호스트 및 포트를 올바르게 지정했는지 확인하세요. 특별히 Docker를 사용할 경우, localhost 또는 127.0.0.1을 사용해야 할 수 있습니다.

추가적으로, Docker와 SQL 설정에 대한 정보를 얻고 싶으시다면 아래 링크를 참고하시면 도움이 될 것입니다:
- Docker와 Oracle 연동 관련 문제 해결: Docker 설치 후 Oracle 설정 시의 해결 방법을 다루고 있습니다.

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

KyoungJin_Jinny 이경님의 프로필 이미지
KyoungJin_Jinny 이경

작성한 질문수

질문하기