[개발도구] 오라클 11g MS SQL DB LINK 생성

|


자리의 개발도구 다루기

RDBMS 부문 : ORACLE 11g  MS SQL DB LINK 생성

원문 : 자리의 달콤한 꿈 이야기

글 : 자리 | 이미지 : ORACLE 11g MS SQL DB LINK 생성




산 데이터베이스 시스템의 핵심개념은 데이터베이스 링크입니다. 데이터베이스 링크는 클라이언트가 하나의 논리 데이터베이스로 액세스 할 수 있게 하는 두 개의 실제 데이터베이스 서버 간의 연결입니다





 ─────────────────────────────────────────────────────────────────────────

  명 칭

  ORACLE 11g

 

  ORACLE

  운영 체제  크로스 플랫폼
  종 류  관계형 데이터베이스

  라이선스

  상용 라이선스

 ─────────────────────────────────────────────────────────────────────────

  오라클 공식 사이트

   ORACLE 

 ────────────────────────────────────────────────





Oracle DB Link 설정 개수 제한

 

ORA-02020 too many database links in use

Cause  :  The current session has exceeded the INIT.ORA open_links maximum.

Action :  Increase the open_links limit, or free up some open links by committing or rolling back the transaction and canceling open cursors that reference remote databases.

 

 Property

 Description

 Parameter type

 Integer

 Default value

 4

 Modifiable

 No

 Range of values 0 to 255

 


해당 파라미터의 초기값은 4DB Link의 생성 개수가 이를 초과하여 발생하는 오류메시지입니다. 필요치 않은 생성값을 삭제하거나 추가 생성 분을 위해 초기값을 변경해야 이 오류를 막을 수 있습니다. 아래의 쿼리도 복사하여 붙여넣기 쉽도록 댓글란에 옮겨드리겠습니다.

 

select name, value from v$parameter where name='open_links'


Value field 값을 확인하여 Parameter 값을 수정합니다.

 

Parameter 값을 수정하기 위한 방법은 2가지로, 어느 것을 선택하셔도 무방합니다.

1). init[SID].ora를 사용하는 경우 open_links parameter를 찾아 수정하되 관련 내용이 없다면 아래의 열을 추가하시면 됩니다. 이 파일의 위치는 5장 노트편의 이미지를 참고하세요.


open_links=10

 

2). 쿼리를 통하여 바로 수정하시는 경우엔 아래와 값이 open_links 값을 수정하여 호출하시면 되겠습니다.


alter system set open_links=10 scope=spfile;

 

값은 필요한 만큼 조정하시되 최대값인 255를 초과하지 않도록 설정하시고 조정값을 반영하기 위해 DB Server를 재시작해 주시면 되겠습니다.







질의어  < query language >

데이터베이스와 정보 시스템에 질의를 할 수 있게 하는 고급 컴퓨터 언어이다.

 

클라이언트  < client >

네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 수 있는 응용 프로그램이나 서비스를 말한다. 구체적으로 말하면 클라이언트-서버 구조에서 서버에서 그 서버가 제공하는 서비스를 요청하고, 또는 서비스 요청을 위해 필요 인자를 서버가 원하는 방식에 맞게 제공하며, 서버로부터 반환되는 응답에 사용자에게 적절한 방식으로 표현하는 기능을 가진 프로그램이나 시스템이다.

클라이언트 서버 모델은 아직도 오늘날 인터넷에 쓰이고 있으며 여기서 사용자는 인터넷 프로토콜 스위트를 통한 원격 시스템을 통하여 서비스 기능에 접속할 수 있다. 웹 서버는 웹 브라우저로 접속하여 화면 출력을 위한 웹 페이지를 수신하는 대표적인 클라이언트이다. 대부분의 사람들은 이메일 클라이언트를 사용하여 인터넷 서비스 제공업체의 메일 보관 서버로부터 전자 메일을 받는다. 채팅은 여러 대의 클라이언트를 사용하는데, 어떠한 채팅 프로토콜이 쓰이느냐에 따라 그 수가 다양하다. 게임 클라이언트는 일반적으로 컴퓨터용 멀티플레이어 온라인 게임 소프트웨어에 의지한다.

개인용 컴퓨터와 워크스테이션에서 클라이언트와 서버 운영 체제의 차이는 단순히 마케팅 문제일 뿐이다. 서버 버전은 더 많은 운영 체제 구성 요소를 포함할 수 있어서 다중 동시 로그인을 허용하며 더 확장적이다. 반면 클라이언트 버전은 더 많은 최종 사용자 소프트웨어를 포함할 수 있다.


ODBC  < Open DataBase Connectivity >

마이크로소프트가 만든, 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격으로, 각 데이터베이스의 차이는 ODBC 드라이버에 흡수되기 때문에 사용자는 ODBC에 정해진 순서에 따라서 프로그램을 쓰면 접속처의 데이터베이스가 어떠한 데이터베이스 관리 시스템에 관리되고 있는지 의식할 필요 없이 접근할 수 있다.

ODBC는 본래 1990년대 초 마이크로소프트가 개발하였고, 유닉스 및 메인프레임 분야에서 SQL 액세스 그룹이 표준화한 호출 수준 인터페이스(CLI)를 위한 기초가 되었다. ODBCCLI의 노고 중 일부로서 제거되었던 일부 기능들을 보유하였다. 온전한 ODBC는 나중에 해당 플랫폼으로 다시 이식되었으며 CLI 보다 상당히 더 잘 알려진 사실상의 표준이 되었다.



 

  관련 및 연계 홈페이지 링크 


 ■ 오라클

 비지니스 소프트웨어, 하드웨어 전문 기업, 클라우드, 빅데이터, 모바일, IT 서비스 및 제품 소개.


 



 『  ORACLE    




-   2 Oracle Database / Instances   Link  생성 Guide  -



-   Oracle  Database  Link  ( MS SQL - Oracle )  Guide  -






모든 자료는 사용 전후의 솔직한 평을 기록하며 현재 기록된 시세나 정보는 201711월 기준으로 작성되었으므로 이후 경과일수에 따라 변경 폭이 커질 수 있습니다. 이 포스트는 정보공유 및 개발도구 초심 사용자들의 참고를 목적으로 작성되었습니다. 모든 사진은 클릭하면 확대되며 또 다른 블로그 네이버 블로그와 함께 합니다. 혹 하단 링크 이미지에 문제가 발생하면 'F5' 를 눌러 새로 고침해주세요.

 

 

실무에 임하다보면 이기종간 데이터베이스를 다뤄야 하는 일들이 종종 있습니다. 처음이라면 당황할 수 있겠으나 생각보다 다양한 방법이 있음을 곧 알고 차분히 대처가 가능하시리라 봅니다. 최근엔 많은 개발사들이 LinkConnection에 대한 다양한 방법을 제시하고 있으니 이 게시물이 아니더라도 다른 블로거들의 포스트를 참고하여 가장 수월한 방법으로 목적 달성하시길 바랍니다.

 

 

 

데이터베이스 링크


데이터베이스 링크는 Oracle 데이터베이스 서버에서 다른 데이터베이스 서버로의 단방향 통신 경로를 정의하는 포인터입니다. 링크 포인터는 실제로 데이터 사전 테이블의 항목으로 정의됩니다. 링크에 액세스하려면 데이터 사전 항목이 들어있는 로컬 데이터베이스에 연결되어 있어야합니다.


 

데이터베이스 링크 연결은 로컬 데이터베이스 A에 연결된 클라이언트가 데이터베이스 A에 저장된 링크를 사용하여 원격 데이터베이스 B에 있는 정보에 액세스 할 수 있다는 의미에서 단방향이지만 데이터베이스 B에 연결된 사용자는 동일한 링크를 사용하여 데이터베이스 B의 로컬 사용자가 데이터베이스 A의 데이터에 액세스하려는 경우 데이터베이스 B의 데이터 사전에 저장된 링크를 정의해야합니다.

데이터베이스 링크 연결을 사용하면 로컬 사용자가 원격 데이터베이스의 데이터에 액세스 할 수 있습니다. 이 연결을 위해 분산 시스템의 각 데이터베이스는 네트워크 도메인에 고유한 전역 데이터베이스 명을 가져야 합니다. 전역 데이터베이스명은 분산 시스템의 데이터베이스 서버를 고유하게 식별합니다.

 

 

 

데이터베이스 링크를 사용하는 이유


데이터베이스 링크의 가장 큰 장점은 사용자가 원격 데이터베이스의 다른 사용자의 개체에 액세스 할 수 있게 하여 개체 소유자의 권한 집합으로 제한되도록 허용하는 것입니다. , 로컬 사용자는 원격 데이터베이스의 사용자가 아니어도 원격 데이터베이스에 대한 링크에 액세스 할 수 있습니다.

 

예를 들어, 직원이 A/P (Accounts Payable)로 비용 보고서를 제출하고 A/P 응용 프로그램을 사용하는 사용자가 hr 데이터베이스에서 직원에 대한 정보를 검색해야한다고 가정 합니다. A/P 사용자는 hr 데이터베이스에 연결하여 원하는 정보를 검색하는 원격 데이터베이스에서 저장 프로시저를 실행할 수 있어야 합니다 . A/P 사용자는 작업을 수행하기 위해 데이터베이스 사용자 일 필요는 없습니다. 그들은 절차에 의해 제한 및 통제 된 방식 그대로 정보에 접근 할 수 있어야 합니다.

 

 

 

데이터베이스 링크 생성


오라클 데이터베이스 링크를 생성하기 위해서는 아래 절차를 거쳐 원격 데이터베이스의 데이터를 질의문을 통하여 호출할 수 있게 됩니다.

 


ODBC설정

먼저 제어판의 관리 도구를 호출합니다. 돋보기에서 관리 도구를 직접 입력하시거나 제어판을 거쳐 관리 도구에 진입하시면 되겠습니다. 호출한 관리도구 폴더에 ‘ODBC 데이터 원본관리자가 보입니다. 해당 운영체제의 환경을 선택하시면 관리자 POP UP이 활성화 됩니다.


          

 

아래 좌 상단 첫 번째 이미지처럼 ‘TAS’ 라고 하는 데이터 원본을 만들 예정입니다. 이미지를 잘 참고하시어 단계별로 진행하세요.

시스템 DSN’ 탭을 선택하시고 추가 버튼을 클릭합니다. 다음으로 MS SQL Server 데이터베이스를 링크할 예정이므로 ‘SQL Server’ 드라이버를 선택하시고 마침을 눌러주세요

 

 


계속해서 마법사가 진행 중입니다. 데이터 원본의 이름과 설명, 연결할 서버의 IP를 지정해 주시면 되겠습니다. 원본 데이터의 이름은 링크시 필요하므로 꼭 상기하시고 본인의 서버를 연결할 예정이라면 ‘localhost’ 라고 지정하셔도 무방합니다.

 

 

 

 

연결할 인증방식을 선택하고 인증방식에 따라 로그인 ID와 비밀번호를 입력하신 후 다음을 클릭합니다. 서버를 연결했으니 기본 데이터베이스를 선택할 차례입니다. 체크박스에 있는 옵션은 기본설정 그래도 두고 다음을 클릭합니다. 역시 기본 설정인 상태로 마침을 클릭하면 ODBC 설정은 마무리 됩니다.

 


ora 파일 설정

이제 .ora 파일들을 수정할 차례입니다. 이 파일들은 보통 ‘Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN’ 폴더에 위치하고 있습니다.

 


먼저 ‘tnsnames’ 파일부터 수정합니다. 주의할 점은 빨간색 문자열이 ODBC에서 설정한 파일의 원본데이터 명과 동일하게 설정되어야 한다는 점이며 아래의 수정내역도 복사하여 붙여넣기 쉽도록 댓글란에 옮겨 드리겠습니다.



 

 

 TAS =

 (DESCRIPTION =

 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

 (CONNECT_DATA = (SERVER = DEDICATED)

 (SID = TAS)

 )

 (HS=OK)

 )


 

추가내역을 삽입한 후 저장을 눌러 주시고 동일 폴더의 ‘listener’ 파일을 열어 아래와 같이 수정합니다.

 


 

 

 SID_LIST_LISTENER =

 (SID_LIST =

 (SID_DESC =

 (SID_NAME = TAS)

 (ORACLE_HOME = C:\app\catchbug\product\11.2.0\dbhome_1)

 (PROGRAM = dg4odbc))

 )

 )


 

리스너파일의 수정 내용 중 ‘PROGRAM’ 부분의 문자열도 빨간색임을 확인할 수 있습니다. 이 부분은 오라클 버전에 따라 달라지는 부분이며 10g 사용자는 ‘hsodbc’11g 사용자는 원문 그대로 ‘dg4odbc’로 사용하시면 되겠습니다.

 

다음으로 생성한 ODBC 데이터 원본에 대한 초기화 파일을 생성합니다. 해당 파일은 ‘Oracle\product\11.2.0\dbhome_1\hs\admin’ 폴더에 보관합니다. 파일명은 ‘initTAS’로 초기화를 뜻하는 ‘init‘ + ODBC 원본 데이터명으로 작명하면 되겠습니다. 또한 파란색 문자열은 연결할 데이터베이스의 ID와 비밀번호로 채워주시면 되겠으며, 주석 처리부분은 제외하셔도 됩니다.




 

 

 # This is a sample agent init file that contains the HS parameters that are

 # needed for the Database Gateway for ODBC

 #

 # HS init parameters

 #

 HS_FDS_CONNECT_INFO = TAS

 HS_FDS_TRACE_LEVEL = 1

 HS_DB_DOMAIN = TAS

 HS_DB_NAME = TAS

 HS_FDS_RECOVERY_ACCOUNT = jeju

 HS_FDS_RECOVERY_PWD = TAS1105

 #

 # Environment variables required for the non-Oracle system

 #

 #set <envvar>=<value>



저장 후 파일을 닫으면 .ora 파일에 대한 수정 및 생성은 끝이 납니다.

  

 

Listener Control utility 재시작

아래 이미지와 동일하게 리스너를 중지 후 재시작 해 주시면 되겠습니다. 다만 생성한 원본데이터의 초기화가 정상적으로 수행되었는지 꼭 확인하시기 바랍니다.


 





링크 생성

오라클 관련 DBMS TOOL에서 링크를 생성합니다. 아래의 이미지는 ‘Oracle SQL Developer’ 를 통하여 링크를 생성한 쿼리문입니다.


 

 

 CREATE PUBLIC DATABASE LINK TAS

 CONNECT TO jeju

 IDENTIFIED BY “TAS1105”

 USING 'TAS';


  

Link 생성이 완료 되었다면 간단한 조회 질의문을 실행하여 결과가 정상적으로 도출되는지 확인합니다.




 SELECT * FROM 테이블명@TAS;




참고로 DBLINK의 삭제는 아래와 같습니다.


 

 DROP DATABASE LINK;


 


이상으로 오라클에서 MS SQL Server 데이터베이스 Link를 생성하는 법에 대한 소개를 마칩니다. 다음 포스트는 오라클에서 MS SQL 데이터베이스에 Connection 하는 법에 대해 알아보겠습니다.     FIN.







      개발도구에 대한 다른 게시글도 확인해 보세요 !!!       


 


          



 



트랙백 0 And 댓글 1
  1. ★자리 2017.12.04 11:37 신고 address edit & del reply

    1). Oracle DB Link 설정 개수 제한
    select name, value from v$parameter where name='open_links'
    alter system set open_links=10 scope=spfile;

    2). tnsnames.ora 파일 수정
    TAS =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA = (SERVER = DEDICATED)
    (SID = TAS)
    )
    (HS=OK)
    )

    3). listener.ora 파일 수정
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = TAS)
    (ORACLE_HOME = C:\app\catchbug\product\11.2.0\dbhome_1)
    (PROGRAM = dg4odbc))
    )
    )

    4). 링크 초기화 파일
    # This is a sample agent init file that contains the HS parameters that are
    # needed for the Database Gateway for ODBC
    #
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO = TAS
    HS_FDS_TRACE_LEVEL = 1
    HS_DB_DOMAIN = TAS
    HS_DB_NAME = TAS
    HS_FDS_RECOVERY_ACCOUNT = jeju
    HS_FDS_RECOVERY_PWD = TAS1105
    #
    # Environment variables required for the non-Oracle system
    #
    #set <envvar>=<value>

    5). 리스터 유틸리티 재가동
    lsnrctl stop
    lsnrctl start

    6). 링크생성 조회
    CREATE PUBLIC DATABASE LINK TAS
    CONNECT TO jeju
    IDENTIFIED BY “TAS1105”
    USING 'TAS';

    SELECT * FROM 테이블명@TAS;