[DB2] DB2-Oracle Federation 설정법

선수조건

DB2 인스턴스와 DB생성 제거 그리고 환경설정을 무리없이 할수 있다는 전제하에 진행합니다.

또한  Oracle Version 알아두어야 합니다.

 

1. Infosphere Federation Server설치

(현제 최신버전은 Infosphere Federation Server 9.7 Fixpack3a)

- V9.7 FixPack3a버전은 /opt/IBM/wsii/V9.7 기본 설치경로

- 역시 DB2 설치된 서버에서 같은 버전의 통칭 WFS(Websphere Federation Server) 설치되어야 합니다.

- DataJoiner 혹은 DB2 II 혹은 WII 혹은 WFS 모두 같은 제품을 가리킴. , DB2 V8이면 DB2 II V8.x 혹은 DB2 V9 이면 WII 혹은 WFS V9.x

- 참고로 Infosphere Federation Server 9.7 Unix(Aix, Solaris) CDE환경에서만 설치가 가능합니다.

(Vncserver에서도 설치가능. 오라클처럼 xhost설정은 필요없습니다.)

- 이하 FS 약칭을 사용합니다.

설치 주의사항

- iisetup -console 옵션으로 콘솔 설치 가능한것처럼 나오나 절대 설치 않됩니다.

(콘솔설치 성공하신 분은 설치 방법좀 가르쳐 주시기 바랍니다.)

- 설치 옵션에서 기존 DB2 모듈만 설치하는 설치 옵션이 나오나 진행중 먹통이 됩니다.

그러므로 신규로 설치하는것이 가장 문안한 것으로 판단됩니다.

(설치진행 화면 멈춤 현상에서 30 이상 기다려도 않됩니다. 성공기 부탁드립니다.)

 

 

2. FS Oracle Clieent 설치필요.

 

3. Oracle tnsnames.ora 수정하여 Remote Oracle Server 정보 등록.

DB2FS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <IPADDRESS>)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORA10G)
    )
  )

  

4. DB2 인스턴스 DB 생성.

$ db2icrt -u jhlfs jhlfs
$ db2 create database sample

 

5.db2dj.ini 작성

instance home sqllib/cfg 위치에 db2dj.ini 작성합니다.

그리고 다음과 같이 입력합니다.

ORACLE_HOME=<oracle home directory>

Oracle Home Directory profile파일안의 ORACLE_HOME 경로를 의미한다.

 

6. DBM 환경 설정.

- 현재 환경을 확인해봅니다.

$ db2 get dbm cfg | grep -i federated
Federated Database System Support           (FEDERATED) = NO

- NO YES 바꾸어 준다.

$ db2 update dbm cfg using federated yes

- 재확인

$ db2 get dbm cfg | grep -i federated
Federated Database System Support           (FEDERATED) = YES

 

 

 

7. DB2 인스턴스의 레지스트리 파라미터 설정

- 설정 방법

$ db2set DB2_DJ_COMM=libdb2drda.a,libdb2net8.a,libdb2net8F.a
$ db2set DB2_DJ_INI=<instance_home>/sqllib/cfg/db2dj.ini <- 인스턴스 디렉토리의 위치 입력.

- 확인

$ db2set -all
[i] DB2_DJ_COMM=libdb2drda.a,libdb2net8.a,libdb2net8F.a
[i] DB2_DJ_INI=<instance_home>/sqllib/cfg/db2dj.ini

 

8. wrapper생성에 필요한 라이브러리 생성.

- root 로그인

- <FS서버 설치 디렉토리>/bin

- djxlinkOracle 실행

$ ./djxlinkOracle

- 실행 다음과 같은 결과 파일이 떨어진다.

DB2_DJ_INI = /jhlee/jhlfs/sqllib/cfg/db2dj.ini
ORACLE_HOME = <oracle home directory>
Found version "8.0" or higher of client.
Library "libdb2net8F.a" was built successfully.

 

9. 생성 파일을 확인.

$ cd <db2 설치 directory>/lib64
ls -al | grep -i db2net
-r--r--r--   1 bin  bin        15396 Apr 21 16:09 libdb2net8.a
-rwxr-xr-x   1 root system    798924 Apr 21 16:28 libdb2net8F.a
-r--r--r--   1 bin  bin       560828 Apr 21 16:09 libdb2net8U.a

위의 3가지 파일이 Oracle Federation 구성할때 메인 파일이라고 합니다.

 

10. instance update

$ db2iupdt <instance owner 계정> : root로 수행.

 

11. wrapper 명령어 개념잡기

11.1 Wrapper define

db2 create wrapper <wrapper-name> 

 

11.2 Server define

db2 "create server <server-name> type oracle version <version> wrapper <wrapper-name> options ( node '<tnsname>', password 'Y' )"

 

11.3 User mapping

db2 "create user mapping for <db2 username> server <server-name> options ( remote_authid '<oracle-user-name>', remote_password '<oracle-user-password>' )"

 

11.4 Nickname define

db2 "create nickname <nickname>  for <server-name>.<mapping username>.<tablename>"

 

12. 명령어 정리

위의 개념을 바탕으로 다음과 같이 입력합니다.

입력 : db2 create wrapper NET8
출력 : DB20000I  The SQL command completed successfully.
------------------------------------------------------
입력 : db2 "create server orasvr1 type oracle version '10.2.0.1.0' wrapper net8 options(node 'DB2LINK', password 'Y')"
출력 : DB20000I  The SQL command completed successfully.
------------------------------------------------------
입력 : db2 "create user mapping for jhlfs server orasvr1 options(remote_authid 'jhlee', remote_password 'templer')"
출력 : DB20000I  The SQL command completed successfully.
------------------------------------------------------
입력 : db2 "create nickname fsemp for orasvr1.jhlee.emp"
출력 : DB20000I  The SQL command completed successfully.

 

확인

$ db2 describe table fsemp;

type 'N' 으로 나오면 성공

 

13. 에러 대처

13.1 : Nickname 생성시 에러.

DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL1822N  Unexpected error code "ORA_1804" received from data source 
"ORASVR1". Associated text and tokens are "The Oracle OCIInitialize function 
returned error 0x07".  SQLSTATE=560BD

위와 비슷한 에러가 발생하는 경우 다음과 같은 조처를 취한다.

ORA_1804 -> time server(zone) 관련 에러.

====================================

ora-1804 에러에 관련된 oracle patch

현제 오라클 10.2.0.1.0 이라면 버전 이상으로 패치를 해야만 정상적으로 실행이 된다.

=====================================

 

13.2 : 라이브러리 관련 에러

$ db2set DB2_DJ_COMM=libdb2drda.a,libdb2net8.a,libdb2net8F.a

여기서 반드시 libdb2net8F.a 포함시켜 주어야 합니다.

db2 create wrapper NET8 명령어를 입력시 libdb2net8F.a 관련 파일이 없다는등의 에러가 발생한다면 이건 위에 추가를 않해주었기 때문입니다. 보통 인터넷에 libdb2net8.a 추가하면 되는 형식으로 나와 있는데 되지 않습니다. libdb2net8F.a, F까지 포함된 파일이 들어가야 정상적으로 작동이 됩니다.

 

14. passthru 이용한 오라클 직접 접속

그외 SERVER 생성단계를 마친후 유저맵핑을 하지 않았더라도 set passthru 명령을 이용하여 오라클 데이터소스에 대한 연결 테스트가 가능힙ㄴ;디. ( 등록한 서버이름를 이용하여 set passthru 하고 오라클 쿼리가 수행되면 set passthru reset 하여 원래 상태로 돌아옵니다. )

 

연결테스트

1. db2 set passthru <서버이름>
2. db2 "<오라클 native 쿼리>"
3. db2 set passthru reset

예)
1. db2 set passthru orasvr1
2. db2 "select count(*) from user_tables"
3. db2 set passthru reset

15. Wrapper 조회.

db2look을 사용하여 Federation 된 wrapper를 조회할 수 있습니다.
db2look -d <database_name> -e -wrapper NET8 -fedonly -o <database_name>.look

16. wrapper 제거 방법
설명 : db2 drop wrapper <wrapper-name>
예제 : db2 drop wrapper NET8

'Databases > DB2' 카테고리의 다른 글

[DB2] 이벤트 모니터를 이용한 파일 출력  (0) 2020.09.04
[DB2] HADR 구성하기  (0) 2020.08.20
[DB2] DB2 - DB2 Federation 서버 구성  (0) 2020.08.04
[DB2] Federation 서버 구성  (0) 2020.08.02
[DB2] DB2 로그들  (0) 2020.07.31

Designed by JB FACTORY