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 이다.