IBM에서 InfoSphere 라는 용어가 나오기 전에는 WebSphere Federation Server (WFS) 라고 불리었다. (DB 관련 제품인데 WAS쪽으로 편입된 것이 일하면서 이상하게 느껴지긴 했었다.)
Federation (국내에서 “연합” 이라고 번역되는 것 같다) 구성에는 크게 2가지로 분류가 된다.
Homogeneous Federation과 Heterogeneous Federation.
Homogeneous Federation은 같은 DBMS의 DB federation을 의미한다. (그러나 사실은 한 벤더의 DBMS를 의미한다고 봐야 될 듯 하다. Informix federation 도 제공한다.) 이 기능은 DB2 for LUW 제품을 쓰면 기본으로 사용 가능하다.
그러나 Hetrogeneous Federation 은 Oracle 이나 MS-SQL 등의 타 제조사의 DBMS의 DB를 federation을 의미한다. 이 경우는 DB2 설치 버전 이외 별도의 InfoSphere Federation Server를 설치해 주어야 한다.
Heterogeneous Federation 은 지면이 길어지는 관계로 다음 기회로 미루고, DB2내의 Federation을 살펴 본다.
1. DBM 구성변수 값 변경
FEDERATED라는 변수는 기본으로 NO로 되어 있다. 이 값은 YES으로 설정한 후 인스턴스를 재시작한다.
[host2] $> db2 update dbm cfg using FEDERATED YES [host2] $> db2stop force [host2] $> db2start [host2] $> db2pd -dbmcfg | grep FEDERATED |
2. Federation 구성 환경 (예)
호스트명 |
인스턴스명 |
데이터베이스 명 |
비 고 |
host1 |
inst1 |
db01 |
federation이 걸리는 대상 시스템 |
host2 |
inst2 |
db02 |
federation을 거는 주체 시스템 |
3. 카탈로그 설정 작업
inst2에서 inst1의 db1에 대한 연결 정보를 가지고 있어야 한다.
카탈로그 유형 |
대상 원본 |
카탈로그 별명 |
노드 |
inst1 |
rnode1 |
데이터베이스 |
db01 |
rdb01 |
[host2] $> db2 catalog tcpip node rnode1 remote 인스턴스1_IP server 인스턴스1_포트번호 [host2] $> db2 list node directory [host2] $> db2 catalog db db01 as rdb01 at node node1 [host2] $> db2 list db directory [host2] $> db2 connect to rdb01 user 접속ID using 비밀번호 [host2] $> db2 terminate |
4. Wrapper 생성
[host2] $> db2 connect to db02 [host2] $> db2 create wrapper drda [host2] $> db2 "select * from syscat.wrappers" |
5. Federation Server 생성
[host2] $> db2 "create server svr1 type DB2/UDB version '9.7' wrapper drda authid \"인스턴스1_사용자\" password \"인스턴스1_비밀번호\" options(add dbname 'rdb01')" [host2] $> db2 "select * from syscat.servers" |
6. 사용자 매핑
[host2] $> db2 "create user mapping for 인스턴스2_사용자 server svr1 options (add remote_authid '인스턴스1_사용자', add remote_password '인스턴스1_비밀번호')" |
7. 원본 테이블/뷰에 대한 nickname 생성
[host2] $> db2 "create nickname 인스턴스2_사용자.테이블1 for svr.스키마명.테이블1" [host2] $> db2 "select tabschema || '.' || tabname from syscat.tables where type='N'" |
여기까지의 작업으로 IFS 설정은 완료 되었다.
IFS설정 부분에 대해서는 다음과 같은 형식으로 작성해서 일괄 실행할 수도 있을 것이다.
db2 +p -tv << EOF connect to 데이터베이스명 ; create wrapper drda ; create server svr1 type DB2/UDB version '9.7' wrapper drda authid "인스턴스1_사용자" password "인스턴스1_비밀번호" options(add dbname 'rdb01') ; create user mapping for 인스턴스2_사용자 server svr1 options (add remote_authid '인스턴스1_사용자', add remote_password '인스턴스1_비밀번호') ; create nickname 인스턴스2_사용자.테이블1 for svr.스키마명.테이블1 ; terminate ; EOF |
참고로 “create server” 를 실행할 때, shell의 특수문자 인식 방식으로 db2 clp에서는 사용자 계정과 비밀번호에 Escape 문자인 \ (역 슬래시) 을 넣어 주었다. 넣어 주지 않으면 계속 syntax 오류가 발생한다.
SQL0104N An unexpected token "'######' PASSWORD '######'" was found following "WRAPPER DRDA AUTHID".
|
'Note' 카테고리의 다른 글
[관리] DB2에서는 작업 스케줄링을 어떻게 하지? (2) | 2011.08.04 |
---|---|
[운영] DB2 deinstall 강제로 시키기 (1) | 2011.08.04 |
[운영] DB2의 과도한 Bufferpool 생성의 종말은? (0) | 2011.07.29 |
[관리] DB2가 설치된 시스템일까? 아닐까? (0) | 2011.07.29 |
[관리] 우리가 쓰는 DB2는 Compliance 문제가 없는 것일까? (0) | 2011.07.28 |