이 도구를 사용하면 pureScale 환경에서 다양한 데이터 소스에서 DB2로 데이터를 이동할 수 있다.
Linux, UNIX 및 Windows용 DB2 V9.7부터는 DB2 제품에서 Oracle과 Sybase의 애플리케이션을 사용하기 위해 MTK(Migration Toolkit)를 사용할 필요가 없다(수정팩 3 이후). 이 도구는 MTK 기능을 크게 간소화된 워크플로우로 대체한다.
예를 들어, 다른 모든 시나리오에서는 데이터베이스에서 z/OS용 DB2로 데이터를 이동할 때 이 도구가 특히 고속 데이터 이동의 영역에서 MTK를 지원한다. 이 도구를 사용하여 단 사흘 만에 4TB에 달하는 데이터를 이동한 적도 있다.
초보자는 사용하기 쉬운 인터페이스인 GUI를 사용하지만, 고급 사용자는 종종 명령행 API를 즐겨 사용한다.
우선, 다운로드 섹션에서 대상 DB2 서버로 도구를 다운로드한다. z/OS용 DB2로 데이터를 이동하려면 추가적인 단계를 수행해야 한다. (이 도구의 최신 버전이 나와 있는지 확인하자.)
IBMDataMovementTool.zip 파일을 다운로드한 후, 대상 DB2 서버의 IBMDataMovementTool이라는 디렉토리에 파일을 추출한다. 최상의 데이터 이동 성능을 달성하기 위해 반드시 서버 측(DB2)에 설치하도록 한다.
- Linux, UNIX 및 Windows용 DB2에서 Oracle 애플리케이션이 실행되도록 할 경우 대상 서버에 DB2 V9.7이 설치되어 있어야 한다.
- Java™ 버전 1.5 이상이 대상 서버에 설치되어 있어야 한다. 현재 Java 버전을 확인하려면
java -version명령을 실행한다. 기본적으로, Java는 <install_dir>\SQLLIB\java\jdk(Windows) 또는 /opt/ibm/db2/V9.7/java/jdk(Linux)에 Linux, UNIX 및 Windows용 DB2의 일부로 설치된다.
표 1. 원본 데이터베이스 및 DB2용 JDBC 드라이버의 위치
| 데이터베이스 | JDBC 드라이버 |
|---|---|
| Oracle | ojdbc5.jar 또는 ojdbc6.jar 또는 ojdbc14.jar, xdb.jar, xmlparserv2.jar 또는 Oracle 7 또는 8i용 classes12.jar 또는 classes111.jar |
| SQL Server | sqljdbc5.jar 또는 sqljdbc.jar |
| Sybase | DB2 SKIN 기능을 위한 jconn3.jar 및 antsjconn2.jar |
| MySQL | mysql-connector-java-5.0.8-bin.jar 또는 최신 드라이버 |
| PostgreSQL | postgresql-8.1-405.jdbc3.jar 또는 최신 드라이버 |
| Linux, UNIX 및 Windows용 DB2 | db2jcc.jar, db2jcc_license_cu.jar 또는 db2jcc4.jar, db2jcc4_license_cu.jar |
| z용 DB2 | db2jcc.jar, db2jcc_license_cisuz.jar 또는 db2jcc4.jar, db2jcc4_license_cisuz.jar |
| i용 DB2 | jt400.jar |
| Teradatra | terajdbc4.jar 및 tdgssconfig.jar |
| MS Access | 선택적 Access_JDBC30.jar |
- UNIX: DB2 인스턴스 소유자로 서버에 로그인한다.
- Windows: DB2 Command Window를 실행한다.
- IBMDataMovementTool 디렉토리로 변경한다. 이 도구는 도구 실행을 위한 두 개의 드라이버 스크립트를 포함한 JAR 파일이다.
IBMDataMovementTool.cmd - Command script to run the tool on Windows. IBMDataMovementTool.sh - Command script to run the tool on UNIX. IBMDataMovementTool.jar - JAR file of the tool. Pipe.dll - A DLL required on Windows if pipe option is used.
이 도구를 실행하려면 대상에 데이터베이스를 연결해야 하므로, DB2 데이터베이스부터 작성해야 한다. DB2 V9.7에서는 기본 자동 스토리지를 사용하고 32KB 페이지 크기를 선택할 것을 권장했다. 애플리케이션이 DB2 V9.7에서 실행되도록 할 때, 인스턴스와 데이터베이스가 호환성 모드에서 작동해야 한다. 또한, Oracle의 반올림 작동과 일치하도록 반올림 작동을 조정하는 것이 좋다. 다시 유효성 검증 시맨틱을 deferred_force로 설정하여 종속성 순서를 벗어나 오브젝트를 배치할 수 있다.
UNIX 시스템
$ db2set DB2_COMPATIBILITY_VECTOR=ORA $ db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES $ db2stop force $ db2start $ db2 "create db testdb automatic storage yes on /db2data1, /db2data2,/db2data3 DBPATH ON /db2system PAGESIZE 32 K" $ db2 update db cfg for testdb using auto_reval deferred_force $ db2 update db cfg for testdb using decflt_rounding round_half_up |
Windows 시스템
C:\> db2set DB2_COMPATIBILITY_VECTOR=ORA C:\> db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES C:\> db2stop force C:\> db2start C:\> db2 "create db testdb automatic storage yes on C:,D: DBPATH ON E: PAGESIZE 32 K" C:\> db2 update db cfg for testdb using auto_reval deferred_force C:\> db2 update db cfg for testdb using decflt_rounding round_half_up |
도구를 실행하기 전에 원본 및 DB2 서버에 대한 다음 정보를 준비한다.
- 원본 및 DB2 서버의 IP 주소 또는 호스트 이름
- 연결할 포트 번호
- 데이터베이스의 이름, SID, 서브시스템 이름 등(필요한 경우)
- 원본 데이터베이스에 대해 DBA 권한을 가진 사용자 ID
- 해당 사용자의 비밀번호
- 원본 데이터베이스 및 DB2 JDBC 드라이버의 위치
- 데이터를 저장할 충분한 공간 또는 볼륨/마운트 지점 정보
Windows에서는 IBMDataMovementTool.cmd를, UNIX에서는 ./IBMDataMovementTool.sh를 실행한다. 서버에서 그래픽을 표시할 수 있는 경우 도구에서 GUI를 시작한다. 그렇지 않으면, 대화식 명령행 모드로 전환하여 입력을 수집한다.
On Windows: IBMDataMovementTool.cmd On UNIX: chmod +x IBMDataMovementTool.sh ./IBMDataMovementTool.sh |
GUI 창이 하나 나타날 것이다. 또한, 쉘 창에 메시지가 나타나야 한다. 이 메시지를 살펴보고 아무런 오류도 로그에 기록되지 않은 것을 확인한 후 GUI 사용을 시작해야 한다.
DB2_COMPATIBILITY_VECTOR를 설정하지 않은 경우 도구에서 경고 메시지를 표시한다. 아직 설정하지 않았다면 알맞은 단계에 따라 호환성 벡터를 설정한다.
[2010-01-10 17.08.58.578] INPUT Directory = .
[2010-01-10 17.08.58.578] Configuration file loaded: 'jdbcdriver.properties'
[2010-01-10 17.08.58.593] Configuration file loaded: 'IBMExtract.properties'
[2010-01-10 17.08.58.593] appJar : 'C:\IBMDataMovementTool\IBMDataMovementTool.jar'
[2010-01-10 17.08.59.531] DB2 PATH is C:\Program Files\IBM\SQLLIB
[2010-01-10 17.35.30.015] *** WARNING ***. The DB2_COMPATIBILITY_VECTOR is not set.
[2010-01-10 17.35.30.015] To set compatibility mode, discontinue this program and
run the following commands
[2010-01-10 17.35.30.015] db2set DB2_COMPATIBILITY_VECTOR=FFF
[2010-01-10 17.35.30.015] db2stop force
[2010-01-10 17.35.30.015] db2start |
그림 1에 표시된 GUI 화면에는 원본 및 DB2 데이터베이스 연결 정보를 지정하기 위한 필드가 있다. 이 화면에서 이벤트의 순서는 다음과 같다.
- 원본 및 DB2 연결 정보를 지정한다.
- Connect to Oracle을 클릭하여 연결을 테스트한다.
- Connect to DB2를 클릭하여 연결을 테스트한다.
- DDL과 데이터를 추출할 작업 디렉토리를 지정한다.
- DDL 및/또는 DATA를 원하는지 여부를 선택한다. DDL만 선택하면 genddl 스크립트가 추가로 생성된다.
- Extract DDL/Data 단추를 클릭한다. 콘솔 창에서 진행률을 모니터링할 수 있다.
- 데이터 추출이 올바로 완료된 후, 결과 출력 파일을 살펴보고 데이터 이동 상태, 경고, 오류 및 기타 잠재적 문제를 검토한다.
- 선택적으로, View Script/Output 단추를 클릭하여 생성된 스크립트, DDL 데이터 또는 출력 로그 파일을 확인할 수 있다.
- Deploy DDL/Data 버튼을 클릭하여 DB2에서 테이블과 인덱스를 작성하고 원본 데이터베이스에서 추출된 데이터를 로드한다.
- Execute DB2 Script를 사용하여 명령행에서 실행하는 대신 생성된 DB2 스크립트를 실행한다. 데이터 이동은 대화식으로 실행된다. 새로 시작하기 전에 모든 테이블을 삭제해야 하는 경우 drop table 스크립트를 선택하고 실행할 수 있다. 또한, 이 버튼을 사용하여 원하는 실행 순서대로 스크립트를 실행할 수도 있다.
그림 1. 원본 및 DB2 데이터베이스에 대한 입력 매개변수
Extract DDL/Data 버튼을 클릭하면 그림 2에 표시된 것과 같이 View File 탭에서 도구의 메시지를 볼 수 있다.
그림 2. DDL 및 데이터 추출
DDL 및 DATA 추출을 완료한 후, 작업 디렉토리에서 새로 작성된 파일을 여러 개 볼 수 있을 것이다. 명령행에서 이런 파일을 사용하여 DB2에서 실행할 수 있다.
GUI 모드에서 도구를 실행할 때마다 다음 명령 스크립트가 다시 생성된다. 하지만, 이런 스크립트를 사용하여 GUI 없이 모든 데이터 이동 단계를 수행할 수 있다. 자동화된 데이터 이동을 위한 일괄처리 프로세스의 일부로서 이 도구를 임베드하려는 경우에 유용한 방법이다.
표 2. 명령 스크립트
| 파일 이름 | 설명 |
|---|---|
| IBMExtract.properties | 이 파일에는 GUI 또는 명령행 입력 값을 통해 지정한 모든 입력 매개변수가 포함된다. 매개변수를 수정하거나 정정하기 위해 이 파일을 수동으로 편집할 수 있다. 참고: GUI를 실행할 때마다 이 파일을 겹쳐쓰게 된다. |
| unload | 이는 도구에서 작성되는 스크립트이다. DDL 및 Data 옵션을 선택하는 경우 이 스크립트는 원본 데이터베이스 서버에서 플랫 파일로
데이터를 로드 해제한다. 같은 스크립트라도 GUI에서 파이프 옵션을 선택하여 중간 플랫 파일을 제거하면 파이프를 사용하여 원본 데이터베이스에서 DB2로
데이터를 이동한다. 파이프 옵션은 IBMExtract.properties 파일에서 usePipe 옵션을 통해 제어된다. |
| rowcount | 이 스크립트는 도구에서 작성되며, 데이터를 배치한 후 실행하여 원본 및 DB2 데이터베이스의 행 개수를 확인할 수 있다. |
그림 3. 데이터 추출 후 작성되는 파일
특히 GUI 기능을 사용할 수 없을 때 명령행 모드를 사용하여 도구를 실행할 수 있다. 이 도구는 GUI를 시작할 수 없는 경우 자동으로 모드를
전환한다. 명령행 대화식 모드에서 도구를 강제 실행하려면 IBMDataMovementTool 명령에 -console 옵션을 지정할 수 있다.
On Windows: IBMDataMovementTool -console On UNIX: ./IBMDataMovementTool.sh -console |
단계별 프로세스에서 원본 및 DB2 데이터베이스 연결 매개변수를 지정하기 위한 대화식 옵션이 표시된다. 콘솔 창의 출력 샘플이 아래에
나와 있다.
[2010-01-10 20.08.05.390] INPUT Directory = . [2010-01-10 20.08.05.390] Configuration file loaded: 'jdbcdriver.properties' [2010-01-10 20.08.05.390] Configuration file loaded: 'IBMExtract.properties' [2010-01-10 20.08.05.390] appJar : 'C:\IBMDataMovementTool\IBMDataMovementTool.jar' Debug (Yes) : 1 Debug (No) : 2 Enter a number (Default=2) : IS TARGET DB2 LOCAL (YES) : 1 IS TARGET DB2 REMOTE (NO) : 2 Enter a number (Default=1) : Extract DDL (Yes) : 1 Extract DDL (No) : 2 Enter a number (Default=1) : Extract Data (Yes) : 1 Extract Data (No) : 2 Enter a number (Default=1) : Enter # of rows limit to extract. (Default=ALL) : Enter # of rows limit to load data in DB2. (Default=ALL) : Compress Table in DB2 (No) : 1 Compress Table in DB2 (YES) : 2 Enter a number (Default=1) : Compress Index in DB2 (No) : 1 Compress Index in DB2 (YES) : 2 Enter a number (Default=1) : ******* Source database information: ***** Oracle : 1 MS SQL Server : 2 Sybase : 3 MS Access Database : 4 MySQL : 5 PostgreSQL : 6 DB2 z/OS : 7 DB2 LUW : 8 Enter a number (Default 1) : DB2 Compatibility Feature (DB2 V9.7 or later) : 1 No Compatibility feature : 2 Enter compatibility feature (Default=1) : |
DDL 및 DATA 추출 후, DB2에서 세 가지 다른 방법으로 추출된 오브젝트를 배치할 수 있다.
- GUI 화면에서 Deploy DDL/DATA 단추를 클릭한다.
- Interactive Deploy 탭으로 이동하여 단계별 프로세스에 따라 오브젝트를 배치한다.
db2gen명령행 스크립트를 사용하여 DDL/DATA를 배치한다.
데이터 배치를 위해 선택할 옵션은 데이터 및 오브젝트 이동 요구사항을 기준으로 결정한다. 비 PL/SQL DDL 오브젝트 및 DATA만 마이그레이션하려는
경우에는 db2gen 스크립트를 사용하거나 GUI에서 Deploy DDL/DATA 단추를 클릭하는 것으로 충분하다.
트리거, 함수, 프로시저 및 PL/SQL 패키지와 같은 PL/SQL 오브젝트도 배치할 때는 대화식 배치 옵션을 선택하는 것이 더 나을 것이다.
그림 4에 표시된 것과 같은 GUI 화면은 DDL 및 기타 데이터베이스 오브젝트의 대화식 배치에 사용된다. 이 화면에서 이벤트의 순서는 다음과 같다.
- Extract/Deploy 탭을 사용하여 DB2에 연결되어 있는지 확인한다.
- Interactive Deploy 탭을 클릭한다.
- Open Directory 단추를 사용하여 이전에 추출된 오브젝트가 있는 작업 디렉토리를 선택한다. 이 도구는 오브젝트를 읽은 후 트리 뷰에 오브젝트를 나열한다.
- 도구 모음에서 Deploy All Objects 단추를 눌러 모든 오브젝트를 배치할 수 있다. 대부분의 오브젝트가 성공적으로 배치되겠지만, 실패하는 경우도 있다.
- 트리 뷰에서 배치하는 데 실패한 오브젝트를 클릭하면 편집기 창에서 오브젝트의 소스를 볼 수 있다. 실패 이유는 아래의 배치 로그에 나열된다.
- Oracle 호환성 모드에서는 일반적으로 오브젝트를 현재 상태 그대로 배치할 수 있다. 하지만, 여전히 지원되지 않는 기능이 있을 것이며, 이로 인해 일부 오브젝트를 바로 배치하지 못할 수 있다. 편집기를 사용하면 이런 오브젝트의 소스 코드를 조정하여 문제를 해결할 수 있다. 변경된 오브젝트를 배치하면 오래된 소스의 백업과 함께 새로운 소스가 저장된다.
- CTRL 키를 사용하여 하나 이상의 오브젝트를 선택하고 도구 모음에서 Deploy Selected Objects 단추를 클릭하여 편집한 오브젝트를 배치할 수 있다. 배치 실패는 종종 계단식으로 발생하는데, 이는 한 오브젝트의 배치에 성공한 후 그 오브젝트에 종속된 다른 오브젝트도 배치됨을 의미한다.
- 모든 오브젝트의 배치에 성공할 때까지 5-7단계를 반복한다.
그림 4. 오브젝트의 대화식 배치
- 데이터 이동의 루트 디렉토리로 이동하고 rowcount 스크립트를 실행한다.
- "<source database name>.tables.rowcount" 파일에서 생성되는 보고서가 보일 것이다. 이 보고서에는 원본 및 대상 데이터베이스의 행 개수가 모두 포함된다.
oracle : db2 "TESTCASE"."CALL_STACKS" : 123 "TESTCASE"."CALL_STACKS" : 123 "TESTCASE"."CLASSES" : 401 "TESTCASE"."CLASSES" : 401 "TESTCASE"."DESTINATION" : 513 "TESTCASE"."DESTINATION" : 513 |-------10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| |
원본 데이터베이스 크기가 너무 크고 중간 데이터 파일을 유지할 만큼 공간이 충분치 않은 경우에는 파이프를 사용하여 데이터를 이동하는 것이 좋은 방법이다.
Windows 시스템
이 도구에서는 Pipe.dll을 사용하여 Windows 파이프를 작성하고 이 dll은 IBMDataMovementTool.jar 파일이 있는 디렉토리와 같은 디렉토리에 배치된다.
UNIX 시스템
이 도구는 원본에서 DB2로 데이터를 이동할 때 사용하기 위해 mkfifo 명령을 사용하여 UNIX 파이프를 작성한다.
테이블 정의부터 작성해야 원본 데이터베이스와 DB2 데이터베이스 사이에 파이프를 사용할 수 있다. 다음 절차에 따른다.
- GUI에서 # Extract Rows=1을 지정하거나, 명령행 창을 사용하는 경우에는 IBMExtract.properties에서
LimitExtractRows=1로 설정한다. - Extract DDL/Data 단추를 클릭하여 데이터를 로드 해제하거나, 명령행 창에서
unload스크립트를 실행한다. - Deploy DDL/Data 단추를 클릭하거나, 명령행 창에서
db2gen스크립트를 실행한다. - Use Pipe를 선택하거나, 명령행 창을 사용하는 경우에는 IBMExtract.properties에서
usepipe=true로 설정한다. - Extract / Deploy through Pipe Load 단추를 클릭하거나, 명령행 창에서
unload스크립트를 실행한다.
그림 5. 파이프를 사용한 데이터 이동
z/OS에서 이 도구를 사용하여 원본 데이터베이스에서 z/OS용 DB2로 데이터 이동을 수행할 수 있다. 하지만, 다음과 같은 단계를 추가로 수행해야 한다.
- JZOS를 다운로드하여 설치한다.
- 이 zip 파일에는 jzos.pax로 이름 지정된 파일이 있다. 2진 모드에서 Unix System Services를 사용하여 JZOS를 설치하려는 디렉토리로 이 파일을 FTP 전송한다.
- .pax 파일을 저장한 디렉토리로 변경한다.
pax -rvf명령을 실행한다. 그러면 현재 작업 디렉토리에 jzos라는 서브디렉토리가 작성된다. 이 서브디렉토리를 <JZOS_HOME>이라 지칭하겠다.- 사용자의 홈 디렉토리에서 z/OS DB2 설치에 따른 변경 작업을 수행하여 주어진 템플리트를 바탕으로 .profile로 이름 지정되는 파일을
작성한다.
export JZOS_HOME=$HOME/jzos export JAVA_PATH=/usr/lpp/java/J1.5 export PATH=$JAVA_HOME/bin:$PATH export CLPHOME=/usr/lpp/db2/db2910/db2910_base/lib/IBM export CLASSPATH=$CLASSPATH:/usr/lpp/db2/db2910/db2910_base/lib/clp.jar export CLPPROPERTIESFILE=$HOME/clp.properties export LIBPATH=$LIBPATH:<JZOS_HOME< alias db2="java com.ibm.db2.clp.db2"
- 환경에 따라 CLPHOME 및 CLASSPATH를 수정해야 할 수도 있다. <JZOS_HOME>을 알맞은 디렉토리로 바꾼다.
- 사용자의 홈 디렉토리에서 아래에 주어진 템플리트를 바탕으로 clp.properties라는 파일 이름을 작성한다.
#Specify the value as ON/OFF or leave them blank DisplaySQLCA=ON AutoCommit=ON InputFilename= OutputFilename= DisplayOutput= StopOnError= TerminationChar= Echo= StripHeaders= MaxLinesFromSelect= MaxColumnWidth=20 IsolationLevel= <SUBSYSTEM_NAME>=<IP address>:<port number>/<location name>,USER,PASSWD Replace items on the last line as appropriate.
- chmod 777 <JZOS_HOME>/*.so 명령을 실행한다.
- IBMDataMovementTool.sh -console 명령을 실행하고 대화식 사용자 응답을 통해 매개변수의 값을 지정한다.
- IBMExtract.properties, geninput 및 unload 스크립트가 자동으로 작성된다.
- IBMExtract.properties의 zdb2tableseries 매개변수는 PS 데이터 세트 시리즈의 이름을 지정하기 위한 것이다. 예를 들어, TSO ID가 DNET770이고 이 매개변수가 R로 설정되는 경우 첫 테이블에 대해 작성되는 PS 데이터 세트의 이름은 DNET777.TBLDATA.R0000001이 된다.
- LOAD 문에서 NOCOPYPEND 매개변수를 추가하기 위해 znocopypend 매개변수가 사용된다. 이 매개변수를 사용하면 테이블이 COPY 보류 중 모드로 전환되지 않을 것이므로 z/OS DB2 DBA가 백업을 수행할 수 있다.
- zoveralloc 매개변수는 파일 할당 요청의 크기를 얼마나 초과할 것인지 지정한다. 값이 1이면 크기를 초과하지 않을 것이라는 뜻이다. 사용 가능한 스토리지가 충분한 환경에서는 이렇게 하는 것이 효과를 발휘할 수 있다. 실제 환경에서는 15/11(1.3636) 정도가 적당할 것이다. 1.3636(15/11)에서 시작하여 파일 쓰기 오류가 발생할 때까지 값을 점점 낮춘 다음 약간 증가시키는 것이 좋다. SMS 매개변수 REDUCE SPACE UP TO의 값을 알고 있으면 overAlloc를 1 / (1 - (X/100))으로 설정하여 overAlloc의 완벽한 값을 계산할 수 있어야 한다. 여기서 X는 0에서 100 사이의 정수로 주어지는 REDUCE SPACE UP TO의 값이다. REDUCE SPACE UP TO는 백분율을 나타낸다.
- 매개변수 zsecondary는 고정된 보조 익스텐트를 할당하는 데 사용된다. 0의 값부터 시작하여 파일 오류가 발생할 때까지 값을 서서히 증가시킨 다음 다시 감소시킨다.
- geninput 스크립트를 실행하여 로드 해제 프로세스를 위한 입력 파일을 작성한다.
- unload 스크립트를 실행하여 DDL 및 DATA를 생성한다.
- 생성되는 스크립트를 실행하여 DDL을 작성하고 z/OS DB2에 데이터를 로드한다.
- 이런 데이터 세트를 삭제하지 않으면 DSNUTILS가 실패한다. 다음 Java 프로그램에서는 그와 같은 중간 데이터 세트를 삭제할 수 있다.
java -cp /u/dnet770/migr/IBMDataMovementTool.jar:$JZOS_HOME/ibmjzos.jar \ -Djava.ext.dirs=${JZOS_HOME}:${JAVA_HOME}/lib/ext ibm.Cleanup
- z/OS의 DB2 테이블로 데이터 로드가 완료된 후 삭제할 필요가 있는 데이터 세트를 찾을 수 있다. 다음 Java 프로그램을 사용하여 그런 데이터
세트를 정리 프로세스의 일부로 삭제한다.
아래에 표시된 것처럼 스크립트 jd를 작성한다.
JZOS_HOME=$HOME/jzos JAVA_HOME=/usr/lpp/java/J1.5 CLASSPATH=$HOME/migr/IBMDataMovementTool.jar:$JZOS_HOME/ibmjzos.jar LIBPATH=$LIBPATH:$JZOS_HOME $JAVA_HOME/bin/java -cp $CLASSPATH \ -Djava.ext.dirs=${JZOS_HOME}:${JAVA_HOME}/lib/ext ibm.Jd $1
파일 권한을 755로 변경하고 실행하면 아래와 같은 결과가 출력된다.
DNET770:/u/dnet770/migr: >./jd USAGE: ibm.Jd <filter_key> USAGE: ibm.Jd "DNET770.TBLDATA.**" USAGE: ibm.Jd "DNET770.TBLDATA.**.CERR" USAGE: ibm.Jd "DNET770.TBLDATA.**.LERR" USAGE: ibm.Jd "DNET770.TBLDATA.**.DISC"
그래서 "DNET770.TBLDATA"에서 모든 데이터 세트를 삭제하려면 다음 명령을 사용한다.
DNET770:/u/dnet770/migr: >./jd "DNET770.TBLDATA.**"
이 도구의 강점은 대규모 데이터 이동에서 잘 드러난다. 면밀한 계획을 세우고 올바른 절차에 따라 이 도구를 사용하여 단 사흘 만에 4TB의 Oracle 데이터를 이동한 적도 있다. 다음은 시간이 제한되어 있는 상황에서 대규모의 데이터 이동을 수행하는 데 도움이 될 팁과 기술에 대한 설명이다.
하드웨어 요구사항과 데이터베이스 용량 계획에 대한 논의는 본 기사의 범위를 벗어나지만, 대규모 데이터 이동을 완료하기 위한 소요 시간을 예상하려면 다음 고려사항을 염두에 두는 것이 중요하다.
- 원본 서버와 DB2 서버 간에 우수한 성능의 네트워크 연결이 필요하며, 1GBPS 이상으로 하는 것이 좋다. 데이터 이동을 완료하기 위한 기간 동안 네트워크 대역폭이 제한될 것이다.
- 원본 서버에 있는 CPU의 수에 따라 여러 테이블을 병렬로 로드 해제할 수 있는 능력이 결정된다. 데이터베이스 크기가 1TB를 넘는 경우, 원본 서버에 최소 4개의 CPU가 있어야 한다.
- DB2 서버의 CPU 수에 따라 LOAD 프로세스의 속도가 결정된다. 경험칙에 따르면, 데이터를 로드하는 데 전체 시간의 1/4 ~ 1/3 정도의 시간이 소요되고 나머지 시간은 로드 해제 프로세스에 소요된다.
- DB2 데이터베이스 레이아웃을 미리 계획한다. DB2에 대한 IBM의 우수 사례 모음을 참조한다.
- 명령행 모드에서 이 도구에 대해 파악한다. 데이터 이동 스크립트(geninput 및 unload)를 생성하려면 GUI를 사용하고 명령행에서 unload 스크립트를 실행하여 데이터 로드 해제를 실습한다.
-
unload스크립트에서GENDDL=true및UNLOAD=false를 설정하여 원본에서 DDL만 추출한다. 생성되는 DDL을 사용하여 테이블스페이스 및 테이블 맵핑을 계획한다.unload스크립트에서-DOUTPUT_DIR매개변수를 사용하여 대상 디렉토리를 지정함으로써 별도의 출력 디렉토리를 사용하여 생성되는 DDL과 데이터를 저장한다. 최종적으로 데이터를 이동하기 전에 DDL 생성을 완료해야 한다. -
geninput스크립트를 사용하여 원본에서 DB2로 이동할 테이블의 목록을 생성한다. geninput 스크립트에서SRCSCHEMA=ALL및DSTSCHEMA=ALL매개변수를 사용하여 모든 테이블의 목록을 생성한다. 파일을 편집하여 불필요한 테이블을 제거하고 원본에서의 로드 해제 및 대상으로의 로드 작업을 병렬로 수행하는 지그재그형 이동 접근 방식을 사용할 수 있도록 파일을 여러 개의 입력 파일로 분할한다. - (
geninput스크립트에서 생성되는) 테이블 입력 파일을 여러 파일로 구분한 후,unload스크립트를 똑같은 다른 파일로 복사하고 입력 파일의 이름을 변경하고 각 로드 해제 프로세스마다 다른 디렉토리를 지정한다. 예를 들어, 10개의 unload 스크립트를 작성하여 각각의 unload 스크립트에서 500개의 테이블을 로드 해제하여, 총 5,000개의 테이블을 로드 해제할 수 있다. - 별도의 단계에서 DDL 및 DATA를 수행해야 한다. 그런 대규모의 데이터 이동을 위해 이 두 가지를 단일 단계로 혼합하면 안 된다.
- 이 도구는
unload스크립트에서NUM_THREADS매개변수에 의해 제어되는 원본 테이블에서 데이터를 병렬로 로드 해제한다. 기본값은 5이며, 원본 서버에서의 CPU 사용률이 약 90%가 되는 레벨까지 값을 늘릴 수 있다. - 입력 테이블 파일에 나열된 테이블에 각별히 주의한다.
geninput스크립트에는 테이블을 특정 순서대로 배치하는 기능이 없지만, 로드 해제 시간을 최소화할 수 있는 방법으로 테이블 순서를 지정해야 한다. 입력 파일에 나열된 테이블은 라운드 로빈 방식으로 스레드 풀로 피드된다. 모든 스레드가 로드 해제 프로세스를 완료했지만, 한 스레드가 계속 실행하는 일이 일어날 수도 있다. 모든 스레드를 사용 중인 상태로 유지하기 위해, 행 수가 점점 늘어나는 테이블을 위한 입력 파일을 구성한다. - 모든 테이블이 로드 해제되고 몇몇 스레드가 계속 매우 큰 테이블을 로드 해제하는 과정이 계속될 수 있다. 입력 파일에서 WHERE 절을 올바로
지정할 수 있는 경우 여러 스레드에서 같은 테이블을 로드 해제할 수 있다. 예를 들면, 다음과 같다.
"ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 1 and 1000000 "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 1000001 and 2000000 "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 2000001 and 3000000 "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 3000001 and 4000000
기본 키 또는 고유 인덱스가 되어야 하는 WHERE 절에서 적당한 키를 사용해야 한다. 이 도구는 도구에서 생성되는 여러 파일에서 데이터를 로드하기 위해 알맞은 DB2 LOAD 스크립트를 만든다. 설명에 따라 다른 WHERE 절을 추가하는 경우를 제외하고, 여러 스레드에서 같은 테이블을 로드 해제하는 데는 다른 설정이 필요하지 않다.
- 로드 해제 프로세스를 여러 단계로 구분한 후, 일괄처리를 통해 데이터 로드 해제를 완료했을 때 DB2에서 데이터 동시 배치를 시작할 수
있다. 여기서 핵심은 각각의 로드 해제 일괄처리에 대해 별도의 출력 디렉토리가 있다는 점이다. 출력 디렉토리에는 DB2에 데이터를 배치하기 위해 필요한 모든
파일이 생성된다. DDL의 경우 생성된
db2ddl스크립트를 사용하여 테이블 정의를 작성한다. 데이터의 경우db2load스크립트를 사용하여 DB2에 데이터를 로드한다. 단 한 단계에서 DDL과 데이터를 결합하면 스크립트의 이름이db2gen이 된다. - 로드 해제 및 로드 프로세스가 동기화되도록 쉘 스크립트에서 전체 프로세스를 자동화한다. Oracle이나 다른 데이터베이스에서 DB2로의 모든 대규모 데이터 이동은 제각기 고유하다. 이런 작업을 모두 자동화할 방법을 결정하는 스킬을 테스트해보게 될 것이다. 진행 상태를 계속 지켜볼 수 있고 출력이 로그 파일에 저장되도록 tee 명령을 사용하여 파일에 작업의 출력을 저장한다.
자동화를 테스트하고 원본에서 지그재그형으로 로드 해제하고 DB2에 로드하는 작업의 계획 방식을 유효성 검증하기 위한 모의 이동을 수행하지 않겠다는 것은 좋은 생각이 아니다. 사용자 정의 레벨은 쉘 스크립트를 작성할 때 이런 태스크를 올바른 순서대로 실행하는 것일 뿐이다. 모의 테스트를 실행하려면 다음 단계를 따른다.
- 데이터 이동 스크립트와 자동화 쉘 스크립트를 모의 디렉토리로 복사한다.
- 몇몇 스레드에 몇몇 큰 테이블을 로드 해제하여 시간을 예상해보고, 그에 따라 적절히 데이터 이동을 지그재그 방식으로 수행한다.
- 행 수를 제한하기 위한 WHERE 절을 추가하여 데이터 이동을 테스트한다. 예를 들어, Oracle에서 행 수를 제한하기 위한 ROWNUM 절을 추가하거나
SQL Server에는 TOP 절을 사용할 수 있다.
"ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE rownum < 100 "ACCOUNT"."T2":SELECT * FROM "ACCOUNT"."T2" WHERE rownum < 100 "ACCOUNT"."T3":SELECT * FROM "ACCOUNT"."T3" WHERE rownum < 100 "ACCOUNT"."T4":SELECT * FROM "ACCOUNT"."T4" WHERE rownum < 100
- 스크립트를 시험 삼아 실행해보면서 필요에 따라 적절히 변경하고, 최종 실행을 준비한다.
- 이미 DDL을 추출했고 필요한 경우 테이블과 테이블스페이스 간의 맵핑을 위해 필요한 수동 변경 작업을 수행했다.
- 데이터 이동을 위한 가동 중지 시간을 고려한다.
- Oracle 데이터베이스가 원본인 경우 이 데이터베이스에 대해 열린 커서가 약 10,000개로 설정되어 있는지 확인한다.
- 로그 파일에서 출력을 살펴본다.
데이터를 대규모로 이동하려면 계획, 훈련 및 작업 자동화 능력이 매우 중요하다. 이 도구는 그런 이동에 필요한 모든 기능을 제공한다. 이 작은 도구로 원본에서 DB2로 매우 큰 규모의 데이터베이스를 이동할 수 있었다.
IBM 지원 조직에서는 이 도구를 지원하지 않는다. 하지만, 지원 포럼에서 버그, 문제, 제안, 기능 향상 요청을 보고할 수 있다.
표 3. FAQ
| 질문/문제 | 대답/해결책 |
|---|---|
| 이 도구를 올바로 사용하려면 원본 데이터베이스 서버에 뭔가 설치해야 하는가? | 이 도구를 위해 원본 데이터베이스에 설치해야 하는 것은 아무 것도 없다. |
| 이 도구에 지원되는 플랫폼은 무엇인가? | Windows, z/OS, AIX, Linux, UNIX, HP-UX, Solaris, Mac 및 JVM이 있는 기타 모든 플랫폼 |
| Linux/Unix 플랫폼의 SSH(Secure Shell) 창에서 이 도구를 실행 중인데, GUI에는 표시되지 않지만 명령행 쉘에서는 가끔 도구가 정지된 것처럼 보이는 메시지가 표시된다. | DISPLAY 설정에 따라 GUI 창이 표시 가능 서버에서 열려서 그런 것이다. DISPLAY 설정을 올바로 내보낼 필요가 있다. Unix 시스템 관리자에게 문의하기 바란다. |
| PostgreSQL에서 데이터를 이동하려고 하는데 도구에 연결된 PostgreSQL JDBC 드라이버가 보이지 않는다. | 라이센싱 고려사항 때문에 이 도구에서는 JDBC 드라이버를 제공하지 않는다. 라이센스가 부여된 소프트웨어에서 데이터베이스 JDBC 드라이버를 가져와야 한다. |
| Oracle 데이터베이스에서 데이터를 추출하는 사용자에게 DBA 권한을 부여할 수 없다. 어떻게 도구를 사용할 수 있는가? | 최소한 사용자에게 부여되는 SELECT_CATALOG_ROLE과 마이그레이션에 사용되는 테이블에 대한 SELECT 권한이 필요하다. |
| 이 도구가 연결할 수 있는 데이터베이스는 무엇인가? | IV형 JDBC 드라이버가 있는 모든 데이터베이스. 따라서 MySQL, PostgreSQL, Ingres, SQL Server, Sybase, Oracle, DB2 등에 연결할 수 있다. 또한, Access 데이터베이스에서도 이동할 수 있도록 ODBC-JDBC 커넥터가 있는 데이터베이스에도 연결할 수 있다. |
| 이 도구를 실행하려면 어떤 버전의 Java가 필요한가? | 이 도구를 실행하려면 최소한 Java 1.5가 필요하다. Java 1.5에 대한 종속성은 기본적으로 이 도구의 GUI 부분 때문이다. Java 1.4.2에
대한 지원이 정말로 필요하다면 필자에게 이메일을 보내주기 바란다. 그러면 Java 1.4.2에 맞춰 도구를 컴파일해 줄 수 있지만, GUI를 실행하여 데이터 이동 드라이버
스크립트를 작성할 수는 없을 것이다. 다음 명령을 실행하여 Java의 버전을 확인할 수 있다. $ java -version C:\>java -version |
| 도구의 버전은 어떻게 확인하는가? | Windows에서는 IBMDataMovementTool -version, Linux/UNIX에서는
./IBMDataMovementTool.sh -version을 실행한다. |
| 도구를 실행하면 "Unsupported major.minor version 49.0" 또는 "(.:15077): Gtk-WARNING **: cannot open display: " 오류 메시지가 표시된다. 이건 무엇을 뜻하는가? | Java 1.5 이전의 버전을 사용하고 있기 때문에 그런 것이다. 이 문제점을 해결하려면 버전 1.4.2보다 높은 Java를 설치한다. IBM Java를 설치하는 것이 좋다. |
| 이 도구를 실행하기 위해 원본 및 DB2 데이터베이스 서버에 대해 어떤 정보가 필요한가? | 원본 및 DB2 데이터베이스의 IP 주소, 포트 번호, 데이터베이스 이름, 사용자 ID 및 비밀번호를 알고 있어야 한다. 원본 데이터베이스에 대한 사용자 ID에는 DB2 데이터베이스에 대한 DBA 권한과 SYSADM 권한이 있어야 한다. |
| Windows 워크스테이션에서 이 도구를 실행 중인데 실행 속도가 너무 느리다. 어떻게 하면 좋을까? | IBMDataMovementTool.cmd 또는 IBMDataMovementTool.sh 명령 스크립트에서 JVM용 -Xmx 스위치를 사용하여 이 도구에 할당하는 기본 메모리는 990MB이다. 워크스테이션의 메모리가 더 적을지도 모르므로 이 메모리를 줄여보자. |
| SQL Server에서 DB2로 데이터를 이동 중이다. DB2에서 내 TEXT 필드를 어떻게 VARCHAR로 이동할 수 있을까? | IBMExtract.properties 파일에서 mssqltexttoclob=true를 지정한다. |
| Sybase에서 DB2로 데이터를 이동하고 있는데 내 T-SQL 프로시저는 DB2로 이동되지 않았다. | 이 도구의 목적은 DDL 및 DATA 이동에만 있다. 프로시저/트리거 이동을 위해서는 MTK를 사용해야 한다. |
| Sybase에서 DB2로 DDL 이동 작업을 수행 중인데, Sybase 오브젝트는 파일에 들어 있다. DDL 파일을 데이터 소스로 지정하는 방법을 잘 모르겠다. | 이 도구의 목적은 고속으로 데이터를 이동하는 것이며, 그것이 바로 어떤 데이터베이스에서 DB2로 DDL 파일을 변환할 수 있는 기능이 없는 이유이다. 하지만, IBM InfoSphere Data Architect를 사용하여 원본 데이터베이스에서 대상 데이터베이스로 DDL을 변환할 수 있다. |
| MS Access에서 DB2로의 데이터 이동을 수행 중인데 생성되는 DDL에서 인덱스 등이 전부 표시되지는 않는다. | 기본적인 ODBC-JDBC 커넥터를 사용하여 MS Access 데이터베이스에 연결한다. 완전한 DDL 세트를 구하려면 다른 상용 JDBC 드라이버가 필요하다. MS Access에는 HXTT JDBC 드라이버를 사용할 수 있다. HXTT 드라이버를 사용하는 경우 액세스 대신 생성되는 unload 스크립트에서 DBVENDOR=hxtt를 지정해야 한다. |
| 이 도구를 사용하여 Sybase에서 DB2로 데이터를 이동하고 있는데 수많은 오류가 발생한다. | Sybase 데이터베이스가 필수적인 JDBC 지원에 사용되지 않을 가능성이 크다. Sybase 데이터베이스에 올바른 JDBC 스토어드 프로시저가 설치되어 있는지 확인하려면 Sybase DBA에게 문의하기 바란다. |
| MySQL에서 DB2로 데이터를 이동하고 있는데 메모리가 부족하다. | 생성되는 unload 스크립트에서 FETCHSIZE=nnn으로 다른 값을 사용해보고 명령행에서 데이터 이동을 실행한다. GUI 도구를 사용하면 unload 스크립트를 겹쳐쓰게 된다. |
| Oracle에서 DB2로 데이터를 이동하고 있는데 데이터 이동에 3개의 jar 파일이 필요한 것을 알았다. 나는 데이터 이동을 위해 JDBC 드라이버만 필요한 것으로 이해하고 있다. Jar 파일이 추가로 필요한 이유는 무엇인가? | 추가 JAR 파일은 주로 Oracle XML 데이터 유형에 필요하다. Oracle 설치 디렉토리에서 그런 파일을 가져와야 한다. |
| DB2에서 CLOB의 Oracle 데이터 유형을 DBCLOB로 사용하고 싶다. | IBMExtract.properties 파일로 이동하여 DBCLOB=true로 설정한다. |
| 이 도구를 사용하여 Oracle에서 DB2로 데이터를 이동하고 있는데 테이블을 찾을 수 없다는 Oracle SQL 오류가 많이 발생한다. | Oracle에 연결 중인 사용자 ID에는 SELECT_CATALOG_ROLE 권한이 부여되어 있고 테이블에 대해 SELECT 권한이 있어야 한다. |
| DB2에서 NCHAR 및 NVARCHAR2를 GRAPHIC 또는 VARGRAPHIC로 사용하고 싶지 않다. DB2 데이터베이스를 UTF-8로 작성했기 때문에 이들을 CHAR 및 VARCHAR2로 사용하고 싶다. | IBMExtract.properties 파일로 이동하여
GRAPHIC=false로 설정한다. |
| Oracle 데이터베이스에서 V9.7/V9.5 이전의 DB2 버전으로 데이터를 이동할 수 있는가? | 이동할 수 있다. IBMExtract.properties로 이동하여 db2_compatibility=false로 설정한다. |
| 이 도구가 Oracle의 NUMBER(38)를 NUMBER(31)로 이동한 것을 확인했는데, 나는 DB2가 31까지만 지원하는 것으로 알고 있다. 나는 이 수를 내림하지 않고 DOUBLE로 변환하고 싶다. | IBMExtract.properties로 이동하여
roundDown_31=false로 설정한다. |
| 많은 데이터가 거부되고 있다. 거부 이유를 분석할 수 있도록 한 파일에 거부된 데이터를 모으려면 어떻게 하면 되는가? | IBMExtract.properties로 이동하여
dumpfile=true로 설정한다. |
| 워크스테이션에서 DB2 서버로 데이터를 로드하려고 하는데 오류가 발생한다. 서버에서만 도구를 실행해야 하는가? | DB2 서버에서 이 도구를 실행하여 원본 데이터베이스에서 데이터를 추출하고 중간 서버를 피하는 것이 좋다.
하지만, 중간 서버에서 이 도구를 실행하려면 생성되는 unload 스크립트에서 REMOTELOAD=TRUE로 지정할 수
있다. DB2 LOAD 유틸리티를 사용하려면 서버에서 BLOBS/CLOBS/XML 데이터를 사용할 수 있어야 한다는 점을 기억하자. 대상 DB2 서버에서 동일한 이름 지정 규칙으로
해당 디렉토리를 마운트해야 한다. |
| SSH 쉘을 통해 DB2 서버에만 로그인할 수 있으며 DB2 서버에서는 X-Windows 실행을 허용하지 않는다. 이 GUI 도구를 실행하여 DDL과 DATA를 이동하려면 어떻게 하는가? | SSH에서 IBMDataMovementTool.sh를 실행하고, 그래픽 지원 기능이 없는 경우 도구는 자동으로 명령행 입력
모드로 전환된다. 어떤 이유 때문에 명령행 입력 모드로 전환되지 않는 경우 IBMDataMovementTool.sh 명령에 -console 옵션을 지정하면 대화식 명령행 모드에서
도구를 강제 실행하게 된다. 명령행 모드는 단순히 입력을 수집하여 데이터 이동에 필요한 스크립트를 생성하기 위한 방편일 뿐이다. GUI를 사용하는 것은 단순히
스크립트를 생성하기 위한 수단일 뿐이며, 실제 작업은 스크립트를 통해서만 완료된다. |
| 데이터베이스의 이름을 물은 후로 스크립트를 통해 DB2 데이터베이스를 작성하지 않은 이유가 무엇인가? | DBA는 일반적으로 스토리지 경로 정보에 따라 데이터베이스를 작성하는 경향이 있다. 하지만, DB2에서 테이블이 적당한 테이블스페이스에 자동으로 배치되도록 우리는 필요한 테이블스페이스를 작성한다. 데이터베이스에 대한 계획을 신중하게 수립하려면 IBM의 우수 사례 모음을 꼭 읽어보기 바란다. 기본적으로 페이지 크기가 32K인 DB2 데이터베이스를 작성하는 것이 좋다. |
| 왜 Oracle JDBC 드라이버 외에 xdb.jar와 xmlparserv2.jar가 필요한가? | Oracle 데이터에 XML 데이터가 포함된 경우 xdb.jar와 xmlparserv2.jar가 필요하다. xdb.jar는 server/RDBMS/jlib 폴더, xmlparserv2.jar는 lib 폴더에서 찾을 수 있다. 이들 파일을 찾을 수 없는 경우 Java용 Oracle XDK를 다운로드할 수 있다. |
| Pipe Pipe.dll이 유효한 Win32 애플리케이션이 아니라는 java.lang.UnsatisfiedLinkError가 발생한다. 이 오류를 어떻게 수정하는가? | Java 32비트 JVM을 사용하는 Windows 64비트 플랫폼에서 도구를 실행하는 경우 이 오류가 발생한다. Windows 플랫폼에 Java 64비트 JVM을 설치하고 도구를 다시 실행한다. |
전 세계 곳곳의 수많은 IBM 직원들이 이 도구에 대한 소중한 피드백을 주셨으며, 그들의 피드백이 없었더라면 이런 형태의 도구가 나오지 못했을 것이다. 특히 다음과 같은 분들이 많은 도움과 피드백, 제안 및 안내를 해주셨다.
- Jason A Arnold
- Serge Rielau
- Marina Greenstein
- Maria N Schwenger
- Patrick Dantressangle
- Sam Lightstome
- Barry Faust
- Vince Lee
- Connie Tsui
- Raanon Reutlinger
- Antonio Maranhao
- Max Petrenko
- Kenneth Chen
- Masafumi Otsuki
- Neal Finkelstein
본 항목에는 도구가 포함되어 있습니다. IBM은 귀하("라이센스 사용자")에게 본 도구를 사용할 수 있는 비독점적이고 로열티를 부과하지 않는 라이센스를 부여합니다. 그러나 본 도구는 상품성, 특정 목적에의 적합성 및 타인의권리 비침해에 대한 묵시적 보증을 포함하여 어떠한 종류의 명시적 또는 묵시적 보증 없이 "현상태대로" 제공됩니다. IBM 및 IBM의 라이센스 제공자는 귀하가 본 소프트웨어를 사용함으로써 라이센스 사용자에게 발생한 손해에 대해 어떠한 책임도 지지 않습니다. IBM 및 IBM의 라이센스 제공자는 본 소프트웨어의 사용 또는 비사용으로 인한 모든 책임 법리에 따른 직접 손해, 간접 손해, 특별 손해, 징벌적 손해, 결과적 손해 또는 데이터 분실, 이익 손실에 대해 이러한 손해의 발생 가능성을 통지받은 경우라도 일체 책임을 지지 않습니다.
Note
- 버그를 수정하고 새롭게 기능을 향상한 후 새로 빌드된 도구가 매우 자주 업로드된다. GUI에서 Help > Check New Version을 클릭하거나 ./IBMDataMovementTool.sh -check 명령을 입력하여 새 빌드를 다운로드할 수 있는지 확인한다. Help > About 메뉴 옵션을 사용하거나 ./IBMDataMovementTool.sh -version 명령을 입력하여 도구의 빌드 번호를 찾을 수 있다. 이 도구는 GUI 인터페이스를 위해 JGoodies Forms 1.2.1, JGoodies Look 2.2.2 및 JSyntaxPane 0.9.4 패키지를 사용한다.
교육
- "Migrate from MySQL or PostgreSQL to DB2
Express-C"(developerWorks, 2006년 6월)는 이 도구를 주제로 최초로 작성된 기사였다.
- "DB2 Viper 2 compatibility
features"(developerWorks, 2007년 7월)는 호환성 기능을 설명하는 기사이다.
- 데이터 및 프로시저의 마이그레이션을 위해 Migration
Toolkit을 사용할 수도 있다.
제품 및 기술
- 커뮤니티를 위한 DB2 Express 데이터베이스 서버 무료 버전인
DB2 Express-C 9.7을 다운로드할 수 있다.
- DB2 9.7
for Linux, UNIX, and Windows의 무료 평가판을 다운로드하자.
- IBM 제품 평가판을 다운로드하고 DB2, Lotus®, Rational®, Tivoli® 및
WebSphere®의 애플리케이션 개발 도구 및 미들웨어 제품을 사용해 볼 수 있다.
토론
- 포럼에 참여하기.
- developerWorks 포럼 & 블로그를 통해 developerWorks 커뮤니티에 참여하자.