Jehna :)

[oracle] ORA-12541 오류 해결방법 본문

윌리/DB

[oracle] ORA-12541 오류 해결방법

Jehna 2018. 3. 23. 10:50

"오라클 ORA-12541 오류 해결방법"



언어셋 변경으로 하루종일 삽질만 했는데.. 이젠 리스너 문제까지 일어났다. 아니 어제까지만 해도 잘되던가 왜????갑자기 왜!!

정말 환장할 노릇이군!!!!!




   

   환경> CentOS7에 oracle을 설치하여 사용 중,  개인 PC에서 오라클 서버로 접속시 오류 발생

   

   * 에러 메시지

     ORA-12541: TNS:no listener


   * 원인

     - 오라클 리스너가 동작하지 않을 경우

     - listener.ora 설정 오류

     - listener.log 파일의 용량 초과 


   * 해결방법

     - 리스너 재시작

     - 설정파일 수정 

     - 로그파일 비우기




1. 리스너 상태 확인

   - root가 아닌 oracle로 접속한 후 명령어 실행 

   - 아래는 리스너가 정상적으로 동작한 경우이다. 

 [oracle@orcl ~]$ lsnrctl status   // 리스너 상태확인


 LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 23-MAR-2018 04:29:26


 Copyright (c) 1991, 2010, Oracle.  All rights reserved.


 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.15)(PORT=1521)))


 [oracle@orcl ~]$ lsnrctl start     // 리스너가 멈춰있을 경우 start로 시작해주기





  리스너(Listener )

  - 네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 네트워크 관리자이다. (네트워크를 통한 연결은 모두 리스너가 관리)



2. listener.ora 설정 확인

   - ㅜㅜ.. 난.. 아래 host 부분을 잘못 설정해놔서 발생한 오류였다. 

   (혹시 파일 경로를 모른다면 맨 아래 참고 부분을 확인해주시기 바랍니당)


  

  # listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db/network/admin/listener.ora

  # Generated by Oracle configuration tools.


  SID_LIST_LISTENER =

    (SID_LIST =

      (SID_DESC =

        (SID_NAME = PLSExtProc)

        (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db)

        (PROGRAM = extproc)

      )

    )


  LISTENER =

    (DESCRIPTION_LIST =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx )(PORT = 1521))  // xxx.xxx.xxx.xxx 에 접속하려는 클라이언트의 ip가 있어야 함

        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

      )

    )

 


3. listener.log 파일 용량 초과 

   - 간혹 listener.log 파일 용량이 4Gbyte를 넘어 오류가 나는 경우가 있다고 한다.

   - 이럴 땐, listener.log 파일을 삭제하면 되는데 삭제되더라도 자동으로 다시 생성해준다고 하니 걱정은  노노! 



참고) listener.ora 파일 경로 확인하기

       - oracle로 접속한 후 .bash_profile 확인하기 


   

   [oracle@orcl ~]$ cat .bash_profile

   # .bash_profile


   # Get the aliases and functions

   if [ -f ~/.bashrc ]; then

       . ~/.bashrc

   fi


   # User specific environment and startup programs


   PATH=$PATH:$HOME/bin


   export ORACLE_BASE=/u01/app/oracle

   export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db    // 경로: /u01/app/oracle/product/10.2.0/db/network/admin

   export ORACLE_SID=orcl


   PATH=$ORACLE_HOME/bin:$PATH


   export PATH