SSISO Community

시소당

SERVICE_NAME과 SID의 차이

  블로그  >  드카니  블로그
  http://blog.naver.com/powinter/90004147485
NET8I  서비스  이름(SERVICE  NAME)  사용  방법  입니다.

  

Oracle  8i  미만  버젼에서는  Oracle  SID(System  Identification)  정보만을  이용
하여  클라이언트에서  서버로의  접속이  이루어졌으나,  Oracle  8i부터  새로이  소개된
Service  Name을  이용하여  데이타베이스에  접속할  수  있게  되었다.

그러나  만일  Service  Name을  적절히  기술되지  않으면  다음과  같은  오류를  만나게
되므로  그  사용  방법을  다루고자  한다.

        "ORA-12514  :TNS  -  Could  not  resolve  service  name"  
        "ORA-12154  :TNS  -  Could  not  resolve  service  name"    

Net8  Easy  Configuration  또는  Net8  Assistant  도구에서  Net  Service  Name을
입력하여야  하며,  SERVICE_NAME은  TNSNAMES.ORA  화일에  CONNECT_DATA  절에
기술하여  하며,  과거  버젼의  (SID=<SIDname>)  절을  대치시킨  것이다.

SERVICE_NAME을  TNSNAMES.ORA에  지정하는  방법은  다음  세  가지로  가능하다.


(1)  만일  LISTENER.ORA에  GLOBAL_DBNAME  파라메터가  지정되어  있다면,  그  이름
을  이용한다.

(참고로  GLOBAL_DBNAME은  init  파라메터  <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)
            )
        )  

1642 view

4.0 stars