ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [펌] ORA-12154 에러 발생시 해결법
    DBMS/Oracle 2008. 4. 20. 00:27
    ORA-12514, ORA-12154 에러 발생시 해결법


    Technical Bulletins No. 11882의 내용입니다.

    ※ 아래와 같은 문제가 발생하면 tnsnames.ora파일을 점검해 볼 필요가 있습니다.

    "ORA-12514 :TNS - Could not resolve service name"
          (접속 기술자에 주어진 SERVICE_NAME 이 리슨너에 없습니다.)
    "ORA-12154 :TNS - Could not resolve service name"  


    Net8 Easy Configuration 또는 Net8 Assistant 도구에서 Net Service Name을 입력하여야 하며,
    SERVICE_NAME은 tnsnames.ora 파일에 CONNECT_DATA 절에 기술하여야 합니다.

    SERVICE_NAME을 tnsnames.ora 파일에 지정하는 방법은 다음과 같이 세 가지가 있습니다.



    (1) listener.ora에 GLOBAL_DBNAME 파라미터가 지정되어 있다면, 그 이름을 이용 하면 됩니다.

     
    (참고로 GLOBAL_DBNAMEinit 파라메터 <DB_NAME>.<DB_DOMAIN>의 형태로 구성됩니다.)
     

    listener.ora:
    ------------------------------------------------------------------------------
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (GLOBAL_DBNAME = RC815.o200.kr.oracle.com)
            (ORACLE_HOME = /mnt3/rctest8i/app/oracle/product/8.1.5)
            (SID_NAME = RC815)
          )
        )

    ------------------------------------------------------------------------------
    tnsnames.ora:
    ------------------------------------------------------------------------------
      ora815 =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = tcp)(HOST = o200)(PORT = 1588))
          )
          (CONNECT_DATA =
            (SERVICE_NAME = RC815.o200.kr.oracle.com)
          )
        )


    (2) 초기화 파라미터 <SERVICE_NAMES>.<DB_DOMAIN>의 형태를 이용 합니다.
     
    (참고로 SERVICE_NAMES의 디폴트 값은 <DB_NAME>.<DB_DOMAIN>이므로
    SERVICE_NAMES이 명시적으로 지정되어 있지 않으면 <DB_NAME>.<DB_DOMAIN>형태의
    지정이 가능합니다.)


    init<SID>.ora:
    ------------------------------------------------------------------------------
      SERVICE_NAMES = MYDB
      DB_DOMAIN = o200.kr.oracle.com


    ------------------------------------------------------------------------------
    tnsnames.ora:
    ------------------------------------------------------------------------------
      ora815 =
          ...
          (CONNECT_DATA =
            (SERVICE_NAME = MYDB.o200.kr.oracle.com)
          )
        )


    만일 둘 이상의 service name의 지정이 필요한 경우에는 다음과 같이 init<SID>.ora화일에
    SERVICE_NAMES에 이름을 연속하여 지정한 후 사용할 수 있습니다.


    init<SID>.ora:
    ------------------------------------------------------------------------------
      SERVICE_NAMES = MYDB1, MYDB2
      DB_DOMAIN = o200.kr.oracle.com
     
     
    tnsnames.ora:
    ------------------------------------------------------------------------------
      ora815_A =
          ...
          (CONNECT_DATA =
            (SERVICE_NAME = MYDB1.o200.kr.oracle.com)
          )
        )
     
      ora815_B =
          ...
          (CONNECT_DATA =
            (SERVICE_NAME = MYDB2.o200.kr.oracle.com)
          )
        )


    (3) 마지막으로 init<SID>.ora에 DB_DOMAIN 파라메터가 없고, listener.ora에도
        GLOBAL_DBNAME이 없는 경우에는 간단히 SID 값을 사용 합니다.

    tnsnames.ora:
    ------------------------------------------------------------------------------
      ora815 =
          ...
          (CONNECT_DATA =
            (SERVICE_NAME = ORA815)
          )
        )
      ================================================
        * Oracle Community OracleClub.com
        * http://www.oracleclub.com
        * http://www.oramaster.net
        * 운영자 : 김정식 (oramaster _at_ empal.com)
      ================================================
    ※ 강좌를 다른 홈페이지에 기재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^ 

    [출처] ora-12514|작성자 venturs

    'DBMS > Oracle' 카테고리의 다른 글

    PRO*C에서 LOB DATATYPES에 접근하는 예제  (1) 2008.04.20
    [펌] ORA-01403 no data found  (0) 2008.04.15
    [펌] pro*c에서 varchar와 char의 사용  (0) 2008.04.11
Designed by Tistory.