database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 9079 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9079
DATABASE LINK 사용 방법
작성자
정재익(advance)
작성일
2001-12-25 17:52
조회수
10,088

우선 고려되어야 할 사항은 ORACLE INSTANCE가 두 개 이상이고 각기 다른 PLATFORM에서 운용된다는 가정 하에서 각각의 HOST NAME과 ORACLE_SID는 다르고 NLS_CHARACTER_SET은 동일하게 되어 있어야 합니다.

 

만약 같은 MACHINE에서 INSTANCE의 ORACLE_SID가 같다면 TNS ERROR가 발생할 것이다.

또한 미래를 위해 다른 MACHINE이라 할지라도 ORACLE_SID는 규칙에 의해 다르게 가져가는 것이 좋습니다.

그리고, NLS_CHARACTER_SET이 동일하게 되어 있지 않으면 DATA 입/출력 시 한글 데이타가 ?????로 나타날 것입니다.

 

그럼 환경 점검이 끝났으니 ORACLE7에서 ORACLE V6(ORACLE7의 경우도 비슷)에 있는 TABLE의 DATA를 DB LINK를 이용하여 SELECT하거나 VIEW를 작성하여 보겠습니다.

 

          HOST NAME    :      HP7     -       SUN7       
          ORACLE_SID   :      ORA7   -    ORATEST  

이라 할 때

 

1) HP7 에서 SUN7로 DB LINK 생성하기.

     scott/tiger 로 Login

   SQL*NET V1의 경우
     SQL> create public database link  HP7TOSUN6 
               connect to scott identified by tiger 
               using 't:SUN7:ORATEST';

   (rdbms 7.3 이상은 SQL*NET v2 를 사용하십시오)


   SQL*NET V2의 경우
     SQL> create public database link HP7TOSUN7
          connect to scott identified by tiger 
          using 'ORATEST';

     로 하면 된다.

     이때 V2인 경우의 ORATEST는 $ORACLE_HOME/network/admin directory의
     tnsnames.ora file 내에 지정된 service name이다.
     tnsnames.ora의 service name이 잘 setting 되어 있는지 확인하는 방법
     : SQL*Plus scott/tiger@service name했을 때, SQL*Plus에 log-in되어야
     합니다.
    

 2> SUN7 에 있는 TABLE의 select 및 view(view는 필요에 따라 생성) 작성, 
    HP에서 작업
   
     SQL> select * from emp@HP7TOSUN7;

     SQL> create view emp_view as select * from emp@HP7TOSUN7  a
               where a.deptno = 10;
                   
 3> HP7 에서 SYNONYM을 생성하여 사용하는 경우 

        SQL> create synonym emp for emp@HP7TOSUN7;
        SQL> select * from emp;

  로 한다면 간단히 분산 DB의 환경에서 사용할 수 있습니다.

 select를 제외한 DML(insert, update, delete)을 하려면,
 sql*plus log-in 시에 다음과 같은 option 이 display 되어야 합니다.

 SQL*Plus: Release 3.3.3.0.0 - Production on Mon Jan 19 14:18:47 1998
 Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.

 Connected to:
 Oracle7 Server Release 7.3.3.4.0 with the 64-bit option - Production
 Release With the distributed, ......
 ------------------------------------

 remote 작업의 예

 select * from table_name@HP7TOSUN7;
 insert into table_name@HP7TOSUN7;
 delete table_name@HP7TOSUN7;
 ...

 (단 SERVER TO SERVER로 NETWORK 환경이 구축되어 있어야 하고, 
 listener 가 반드시 떠 있어야 합니다.)

< SQL*NET V2 SETUP (MTS) >

UNIX에서 SQL*NET V2를 사용하려면 ORACLE 인스톨 후에 다음과 같이 
SETUP을 한 다음 사용하면 된다. 여기서

 ORACLE HOME DIRECTORY는 /usr/oracle7
 ORACLE SID는 ORA7

이라고 가정한다.

1. (단, MTS로 setting하지 않고 dedicated로 접속할 때는 이 과정은 생략하도록 한다.)

 

Multi-threaded server 프로세스들을 먼저 기동을 하여야 한다.

$ORACLE_HOME/dbs/initSID.ora 화일에 다음과 같은 내용을 추가하고

DB 를 다시 startup 을 한다

 

  
##########################################
# Filename :  /usr/oracle7/dbs/initSID.ora 
# Protocol :  tcp
##########################################
 
mts_dispatchers="tcp,3"
mts_max_dispatchers=10
mts_servers=5
mts_max_servers=10
mts_service=ORA7
mts_listener_address="(ADDRESS=(PROTOCOL=tcp)(port=1521)
                                 (host=hostname))"

 

2. tnsnames.ora 및 listener.ora 를 작성한다. 이 화일들은

/usr/oracle7/network/admin 디렉토리에 만들어야 하며 유닉스 환경변수를

 

TNS_ADMIN=$ORACLE_HOME/network/admin

 

와같이 지정하고 사용하는 것이 좋다.

 

#####################################################
# File name : /usr/oracle7/network/admin/listener.ora
# This configuration supports tcp
#####################################################

LISTENER =
 (ADDRESS_LIST =
       (ADDRESS = 
         (PROTOCOL = tcp)
         (HOST = hostname)     
         (PORT = 1521)
       )
 )

STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 0

SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (SID_NAME = ORA7)       
     (ORACLE_HOME=/usr/oracle7)  
   )
)


#####################################################
#  Filename : /usr/oracle7/network/admin/tnsnames.ora
#####################################################

TORA =                     
 (DESCRIPTION = 
   (ADDRESS_LIST =
       (ADDRESS = 
         (PROTOCOL = tcp)
         (HOST = hostname)   
         (PORT=1521)
       )
   )
   (CONNECT_DATA = 
     (SID = ORA7)         
   )
 )

3. listener 프로세스를 start 한다.

 

$lsnrctl start

 

4. SQL*NET v2 를 사용하여 MTS 에 접속한다.(LOOPBACK TEST)

 

$ sqlplus scott/tiger@TORA

 

5. CLIENT에서 접속하는 경우라면 위해서 만든 tnsnames.ora 화일을 CLIENT의 $ORACLE_HOME/network/admin 디렉토리에 COPY 하기만 하면 된다.

 

6. 예를 들어 CLIENT가 WIN95라면 C:\ORAWIN95\NETWORK\ADMIN 디렉토리에 tnsnames.ora 화일을 COPY하면 된다. 만약 ORA-12154 에러가 발생하면 C:\ORAWIN95\NETWORK\ADMIN 디렉토리에 sqlnet.ora가 있는지 확인하고 이것을 sqlnet.old 같이 다른 이름으로 rename 한 후에 접속테스트를 해 보도록 한다. sql*plus(plus33.exe or plus33w.exe)로 접속하는 경우

다음과 같이 접속하면 된다.

         USERNAME              scott
         PASSWORD              tiger
         HOST STRING           TORA

* SERVER가 WINDOWS NT 경우에는 다른 부분은 UNIX와 동일하게 셋업하면 되고 단지 listener를 띄우는 방법만 다르다.

제어판 -> SERVICES 에서 ORACLE 관련 SERVICE 들을 모두 START 시켜 주면 된다.

[Top]
No.
제목
작성자
작성일
조회
9237SQL* SQL*Plus (I)
정재익
2002-01-05
21459
9236PL/SQL 요약
정재익
2002-01-05
13716
9199Oracle 에러별 원인 및 조치사항 몇가지
정재익
2002-01-02
16672
9079DATABASE LINK 사용 방법
정재익
2001-12-25
10088
9077Oracle7 에서 테이블스페이스 확장에 대해서
정재익
2001-12-25
6514
9076Oracle Startup 과정에 대해서
정재익
2001-12-25
5913
9075Rollback segment 크기를 증가시키는 방법
정재익
2001-12-25
6491
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다