C. Oracle
oracle 네트워크설정 tnsname.ora
sfeg
2017. 7. 2. 23:01
1. 원격지에서 접속하기
server: ORACLE*NET, protocal, 있어야한다.
client : ORACLE*NET, protocal, 있어야한다.
ps. oracle*net은 sql*net, net8, net8i 의 이름으로 쓰이기도 하였다.
ps . 방화벽 차단여부 꼭 확인할것! (방화벽에서 다음과 같이 추가해준다.)
프로그램 추가 - C:\oracle\ora92\bin\oracle.exe
- C:\oracle\ora92\bin\LSNRCTL.EXE
포트 추가 - ORACLEPORT 1521
- @ : 원격접속 표시자
ex) sqlplus scott/tiger@서버
- 네트워크 접속 연결방식 : local naming, host naming, oracle names server
- oracle 네트워크 파일경로 : C:\oracle\ora92\network\admin
- 원격접속 설정
1.sqlnet.ora => '어떤 접속방식을 사용할것인가?' 를 설정하는 파일< /FONT >
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
=>어떤 접속방식을 사용할것인가?
TNSNAMES=> local naming
omAMES=> oracle names server
HOSTNAME=> host nameing
TNSNAMES=> local naming
omAMES=> oracle names server
HOSTNAME=> host nameing
2. tnsname.ora
=> tnsname.ora 는 로컬컴퓨터가 원격 서버로 접속할 방법을 서술하게 된다.
=> tnsname.ora 는 로컬컴퓨터가 원격 서버로 접속할 방법을 서술하게 된다.
ORCL = --> orcl: 설치시에 주었던 이름 SID
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SISTF176)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SISTF176)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
을 복사해서 아래에 복사후 다음과 같이 수정
==> DB1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 211.238.142.163)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 211.238.142.163)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
ps-----------------------------------------------------------------
ORACLE_SERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = < STRONG > 서버IP < /STRONG > )(PORT = 서버오라클포트))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = < STRONG > 서버IP < /STRONG > )(PORT = 서버오라클포트))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
( SID = ORCL)
)
)
SERVICE_NAME 과 SID 는 선택적이다. 둘다 적어도 되고 하나만 적어도 된다.
둘다 적었을경우 만약 한쪽을 잘못 적었다면 오라클 클라이언트는 접속이 되는부분을 찾아서 접속하게 된다 .
SERVICE_NAME 은 접속할 오라클 서버의 리스너의 환경파일에서 GLOBAL_DBNAME 부분이 된다.
----------------------------------------------------------------------------
3. listener.ora => 클라이언트가 자신에게 접속할때 접속할 방법을 기술한다.
이름: listener protocal: TCP/IP, port: 1521
수신정보, DB정보를 가지구 있다.
listener 구동: c:\ lsnrctl
listener 시작/종료 : LSNRCTL> start / stop
)
)
SERVICE_NAME 과 SID 는 선택적이다. 둘다 적어도 되고 하나만 적어도 된다.
둘다 적었을경우 만약 한쪽을 잘못 적었다면 오라클 클라이언트는 접속이 되는부분을 찾아서 접속하게 된다 .
SERVICE_NAME 은 접속할 오라클 서버의 리스너의 환경파일에서 GLOBAL_DBNAME 부분이 된다.
----------------------------------------------------------------------------
3. listener.ora => 클라이언트가 자신에게 접속할때 접속할 방법을 기술한다.
이름: listener protocal: TCP/IP, port: 1521
수신정보, DB정보를 가지구 있다.
listener 구동: c:\ lsnrctl
listener 시작/종료 : LSNRCTL> start / stop
# 수신정보를 기술
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SISTF176)(PORT = 1521))
)
)
)
# DB정보를 기술
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\ora92)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\oracle\ora92)
(SID_NAME = ORCL)
)
)
ps.-----------------------------------------------------------------------------------
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = welcome.doamin)
(ORACLE_HOME = /ora9i/product/920)
(SID_NAME = ORCL)
)
)
SID_LIST 는 서버안에 DB INSTANCE 가 여러개일때 여러개로 나열해서 사용할수 있다.
위에서 SID_NAME 는 당연히 오라클 서버의 sid 이고, 주의할 곳은 바로 (GLOBAL_DBNAME = welcome.doamin) 이 부분이다.
위의 GLOBAL_NAME 은 사용자가 맘대로 수정해서 적을수 있다. ( DB parameter 와 전혀 상관없이 독립적인 변수라는 뜻이다. )
listener.ora 안의 GLOBAL_NAME 은 자신에게 접속할 클라이언트의 tnsname.ora 에서 SERVICE_NAME = << >> 안에 기술되는
위에서 SID_NAME 는 당연히 오라클 서버의 sid 이고, 주의할 곳은 바로 (GLOBAL_DBNAME = welcome.doamin) 이 부분이다.
위의 GLOBAL_NAME 은 사용자가 맘대로 수정해서 적을수 있다. ( DB parameter 와 전혀 상관없이 독립적인 변수라는 뜻이다. )
listener.ora 안의 GLOBAL_NAME 은 자신에게 접속할 클라이언트의 tnsname.ora 에서 SERVICE_NAME = << >> 안에 기술되는
부분이다. 즉 만약 위의 서버에 접속할 클라언트는 아래의 tnsname.ora 를 가지게 될것이다.
(SERVICE_NAME = welcome.doamin)
( SID = ORCL )
두개를 모두 적을 필요 없이 하나만 적어도 된다고 했으니 무엇을 적는게 더 좋을까?
당연히 보안상 sid 보다는 service_name 을 tnsname.ora 에 기술하는게 좋다.|
물론 서버 listener.ora 의 GLOBAL_DBNAME 이 변경될경우 모든 클라이언트의 service_name 을
수정해줘야 하지만 바꿀 일은 드물기도 하거니와 SID 를 노출시키는것보다 훨씬 낫다.
------------------------------------------------------------------------------------
(SERVICE_NAME = welcome.doamin)
( SID = ORCL )
두개를 모두 적을 필요 없이 하나만 적어도 된다고 했으니 무엇을 적는게 더 좋을까?
당연히 보안상 sid 보다는 service_name 을 tnsname.ora 에 기술하는게 좋다.|
물론 서버 listener.ora 의 GLOBAL_DBNAME 이 변경될경우 모든 클라이언트의 service_name 을
수정해줘야 하지만 바꿀 일은 드물기도 하거니와 SID 를 노출시키는것보다 훨씬 낫다.
------------------------------------------------------------------------------------
SID , 인스턴스
DBMS 서버를 기동하기 위해서는 DB가 기동하는 서버의 IP,프로토콜에 대한 정의가 필요합니다.
오라클의 경우 인스턴스가 서버역할을 하는 DBMS프로세스인데, 인스턴스가 기동할때 SID를 필요로 합니다.
즉 SID는 인스턴스의 이름인 셈이지요.
SID가 필요한 이유는 한 서버(H/W)에 여러개의 인스턴스가 기동될 수 있으므로 구별하기 위해 필요합니다.
SID정보는 환경변수와, LISTENER.ORA라는 파일에서 정의 됩니다.
DB에 접속하는 클라이언트 프로그램의 경우 접속하고자 하는 오라클 인스턴스 정보를 필요로 합니다.
클라이언트 프로그램이 접속하는데 필요한 정보는 서버IP, 오라클SID, 접속프로토콜 같은 정보가 필요하지요.
이러한 정보를 묶어서 서비스명으로 대표하고, 이 서비스명으로 클라이언트 프로그램이 서버에 접속하는데 사용합니다.
이 정보는 클라이언트쪽의 TNSNAMES.ORA라는 파일에 정의 되어있습니다.
DBMS 서버를 기동하기 위해서는 DB가 기동하는 서버의 IP,프로토콜에 대한 정의가 필요합니다.
오라클의 경우 인스턴스가 서버역할을 하는 DBMS프로세스인데, 인스턴스가 기동할때 SID를 필요로 합니다.
즉 SID는 인스턴스의 이름인 셈이지요.
SID가 필요한 이유는 한 서버(H/W)에 여러개의 인스턴스가 기동될 수 있으므로 구별하기 위해 필요합니다.
SID정보는 환경변수와, LISTENER.ORA라는 파일에서 정의 됩니다.
DB에 접속하는 클라이언트 프로그램의 경우 접속하고자 하는 오라클 인스턴스 정보를 필요로 합니다.
클라이언트 프로그램이 접속하는데 필요한 정보는 서버IP, 오라클SID, 접속프로토콜 같은 정보가 필요하지요.
이러한 정보를 묶어서 서비스명으로 대표하고, 이 서비스명으로 클라이언트 프로그램이 서버에 접속하는데 사용합니다.
이 정보는 클라이언트쪽의 TNSNAMES.ORA라는 파일에 정의 되어있습니다.