TNSNAMES.ORA 파일의 기능이 무엇이고 좀 구제적으로 어떤 내용을 담고 있는지 정리를 해보자.


ORACLE_BASE=/oracle/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

/oracle/app/oracle/product/10.2.0/db_1/network/admin/tnsname.ora
 

우선, TNS라 함은 오라클 사에서 개발한 네트워크 기술로써 서로 다른 네트워크 구성을 가지고 있는 CLIENT/SERVER
 

SERVLER/SERVER간에 DATA를 전송할수 있게 해주는 기능을 말한다. 
 

우선, 오라클 서버에 접속 하기 위해서는 일단 오라클 서버의 리스너가 동작을 해야 한다.

이 리스너의 구성 파일은 &ORACLE_HOME/network/admin 에 있는 listener.ora파일이다.

 
 리스너가 구동되고 나면 오라클 클라이언트가 접속을 할 수가 있는데 , 서버에 대한 정보을 정의 하는 
 

역할을 하는 것이 바로 이 TNSNAME.ORA 파일의 기능이다.
 

TNSNAME.ORA 파일은 오라클 서버로 접속시 필요한 프로토콜, 포트, 서버IP , 인스턴트 등의 구성내역을 가지고 있다.

  

형식)

# 내용

구분명 = (DESCRIPTION=
                (ADDRESS = (PROTOCOL= 프로토콜)(HOST= 호스트 IP )(PORT = 포트번호))
                (CONNECT_DATA= (SID= SID명) 혹은 (SERVICE_NAME= 서비스명 ) )
         )
이렇게 구성되어 있다.


 사용예) 
# 테스트계

CPDEV = ( DESCRIPTION=
                (ADDRESS= (PROTOCOL= tcp )(HOST= 172.16.120.14 )(PORT = 1521))
                (CONNECT_DATA= (SID= CPDEV) )
         )

 

1.구분명은 원격데이타베이스의 사용자 정의명칭으로 자신의 PC에서만 유효한 명칭이라 아무렇게나 줘도 된다.

보통 SID명이나, SERVIC_NAME을 사용하는 것 같다.

 

2.프로토콜 : TCP

 

3.HOST : 오라클 서버의 IP

 

4. 포트번호 : 보통 1521

 

5. CONECT_DATA : SID 나 SERVICE_NAME 둘중 하나를 구성하고, 둘다 구성해도 된다. 오라클 서버측의 리스너가

   두중에 되는 쪽으로 연결을 한다.

   ( 보통 보안상 SID 보다는 SERVICE_NAME 을 기술하는 것이 좋다고 합니다.)

  

위의 다른 내용은 보면 바로 알만한 내용이고 5번의 SID 와 SERVICE_NAME 에 대해서 정리를 해보자. 항상 돌아서면 

머리속에서 정리가 안되고 , 머가 먼지 , ...  ㅜㅜ

 

SID -  DB 하나의 인스턴스.

 

SERVICE_NAME - 여러개의 SID 를 모아 놓은 시스템을 구성한 것. 

 
보통 일반적인 테스트 환경이나 작은 규모의 시스템일 경우는 DB서버에 보통 하나의 인스턴스만 사용해서 SID 와 SERVICE_NAME 을 구별할 필요없지만 , 

 
서버 한대에 여러개의 인스턴스 ORCL1, ORCL2, ORCL3 이렇게 3개의 인스턴스를 구성했다고 하면
 

각각의 인스턴스는  ORCL1, ORCL2, ORCL3 이라는 SID를 갖게 되고, 

 
이 인스턴트들을 묶어서 SERVICE_NAME  이  ORCL 로 될수 있다
 

서버 여러대에서 각각 미러링 처리하여 마치 하나의 동일한 서버인것 처럼 활용하면 각각의 서버는 
 

서로 다른 SID 를 갖게 되지만 SERVICE_NAME을 동일하게 하여 같은 서버처럼 활용할 수 있다.
 

( 참고, SERVICE_NAME 은 접속할 오라클 서버의 리스너의 환경파일에서 GLOBAL_DBNAME이 된다. )
 

참고로 자바에서 DB 연결시


예를 들어  jdbc:oracle:thin:@210.113.246.33:1521:ora805  인경우  여기서 ora805 는 SID 이다.