2011년 12월 11일 일요일

다중 SQL 언어 지원, 특정 DBMS 의존도를 없앤다

다중 SQL 언어 지원, 특정 DBMS 의존도를 없앤다


PL/SQL
지원 등을 통해 Oracle에서 개발된 애플리케이션의 실행을 지원하는 DB2 9.7
'다중 SQL 언어 지원, 특정 DBMS 의존도를 없앤다'



Serge Rielau, SQL Architect, STSM, IBM
출처: IBM developerWorks
http://www.ibm.com/developerworks/kr/library/dm-0907oracleappsondb2/index.html


IBM DB2 9.7 for Linux, UNIX and Windows(DB2) Oracle용으로 작성된 애플리케이션을 DB2에서 사용하는 있어서 걸림돌이 되는 많은 부분을 획기적으로 제거했기 때문에 고객과 공급업체 모두 애플리케이션 히스토리보다는 얻게 되는 장점을 보고 DBMS 선택할 있다.


DB2 9.7 Oracle 호환성 기능

RDBMS용으로 작성된 애플리케이션을 거의 변경하지 않은 채로 다른 RDBMS에서 실행하기 위해서는 많은 부분을 고려해야 한다. 서버에 있는 다양한 잠금 메커니즘, 데이터 유형, SQL 프로시저 언어와 애플리케이션 자체에 사용되는 클라이언트 인터페이스까지도 구문 차원뿐만 아니라 의미 차원에서도 적절하게 조정해야 한다.

DB2에는 이러한 단계가 모두 적용되었다. 변경 사항은 예외이지 규칙이 아니다. (IBM 필요한 애플리케이션 변경 사항에 빠르게 액세스할 있다.) 1에서는 공통으로 사용되는 기능을 간략하게 설명한다.


1. 공통으로 사용되는 기능


Oracle
DB2
동시성 제어
기본 지원
SQL 언어
기본 지원
PL/SQL
기본 지원
PL/SQL 패키지
기본 지원
내장 패키지
기본 지원
JDBC 클라이언트(확장 포함)
기본 지원
SQL*Plus 스크립트
기본 지원

DB2 9.7에서는 애플리케이션을 이상 이식하지 않아도 된다. 단순히 애플리케이션을 활성화하기만 하면 된다. 패키지화된 애플리케이션의 경우에는 하나의 소스 DB2 Oracle에서 공유할 수도 있다.

, Oracle 애플리케이션을 DB2에서 사용할 있도록 만드는 작업은 HP-UX용으로 작성된 C 프로그램을 AIX에서 실행할 있도록 만드는 작업보다 쉽다.


동시성 제어

과거에 Oracle DB2 사이의 가장 차이점 하나는 동시성 제어를 처리하는 방법이었다. 대표적인 문구는 "판독자는 작성자를 차단하지 않고 작성자는 판독자를 차단하지 않는다"이다.


2. Oracle 동시성 동작

보류 중인 트랜잭션
동작
트랜잭션
판독자
차단하지 않음
판독자
판독자
차단하지 않음
작성자
작성자
차단하지 않음
판독자
작성자
차단함
작성자

격리 수준에 대해서는 자세히 다루지 않겠지만 여기에서는 Oracle 기본 명령문 수준 격리 사용하는 거의 대부분의 애플리케이션이 DB2 기본 CS(Cursor Stability) 매우 작동한다는 수준의 언급이면 충분할 것이다.

하지만 지금까지의 CS 작성자가 판독자를 차단하고, 어떤 경우에는 판독자가 작성자를 차단할 있도록 구현되었다. 이렇게 구현한 이유는 CS 격리 하에서의 트랜잭션이 보류 중인 동시 트랜잭션의 변경 "결과를 대기"하기 때문이었다.


3. 지금까지의 DB2 동시성 동작(CS 사용)

보류 중인 트랜잭션
동작
트랜잭션
판독자
차단하지 않음
판독자
판독자
거의 차단하지 않음
작성자
작성자
차단함
판독자
작성자
차단함
작성자

CS 격리 하에서 실행 중인 트랜잭션이 변경된 행을 만났을 결과를 대기 이유가 없다는 사실이 밝혀졌다. 동작은 변경된 행의 현재 커미트된 버전을 읽는 것과 동일한 동작이기 때문이다.

동작은 DB2 9.7에서 구현되었다. , DB2 단순히 로그에서 잠겨 있는 행의 현재 커미트된 버전을 검색한다. 대부분의 경우에는 변경 사항이 아직 커미트되지 않았기 때문에 해당 행이 로그 버퍼에 남아 있다. 하지만 행이 작성된 로그 버퍼에서 다시 겹쳐써졌다고 하더라도 DB2 해당 행의 위치를 정확히 알고 있기 때문에 번의 IO 작업만으로도 원하는 버전을 버퍼풀로 가져올 있다.

사용자가 직원 테이블의 이름을 갱신하고 있고 사용자가 변경 사항을 커미트하기 전에 다른 사용자가 해당 테이블을 검색하고 있는 상황을 가정해 보자(그림 2 참조). 일반적으로 번째 사용자는 번째 사용자가 커미트하거나 롤백할 때까지 기다려야 했었다. 하지만 이제는 현재 커미트된 데이터 읽기 지원되므로 번째 사용자가 수행한 검색의 결과로 번째 사용자의 변경 사항이 포함되지 않은 버전의 행이 로그 버퍼에서 검색된다.


그림 2. 작성자가 판독자를 차단하지 않음


동작의 중요한 특징은 다음과 같다.

  • 롤백 세그먼트와 같은 오브젝트를 사용하지 않는다.
  • 어느 경우에나 로그를 작성해야 하므로 작성자에 대한 성능 오버헤드가 발생하지 않는다.
  • 트랜잭션이 열려 있음에도 불구하고 필요한 로그 파일이 아카이브되는 상황처럼 발생하기 어려운 이벤트가 발생할 경우 DB2 단순히 폴백하여 잠금이 해제될 때까지 기다리므로 "스냅샷이 너무 오래됨" 같은 상황이 발생하지 않는다.

DB2에는 이러한 변경 사항 외에도 CS 격리 하에서 잠금을 유지하는 판독자를 제거하기 위해 추가 잠금 회피 기술이 도입되었다.


4. 새로운 DB2 동시성 동작(CS 사용)

보류 중인 트랜잭션
동작
트랜잭션
판독자
차단하지 않음
판독자
판독자
차단하지 않음
작성자
작성자
차단하지 않음
판독자
작성자
차단함
작성자

표에서 있듯이 이제는 동시성 동작이 Oracle 동시성 동작과 동일하다. 실제로 새로 작성한 DB2 데이터베이스는 기본적으로 동작을 제공한다.


데이터 유형

모든 데이터베이스의 핵심은 해당 데이터베이스에 있는 데이터이다. 유형이 일치하지 않거나 이러한 유형의 의미가 일치하지 않으면 애플리케이션을 다른 RDBMS에서 사용할 있도록 만드는 심각한 영향을 있다. 따라서 Oracle 애플리케이션을 DB2에서 실행할 있으려면 문자열, 날짜 숫자와 같이 표준화되지 않은 기본 유형에 대한 지원이 필요하다. 이러한 기본 유형을 맞추는 부분 외에도 Oracle PL/SQL 일반적으로 사용되는 복잡한 유형들도 DB2 9.7 추가되었다.


5. DB2 데이터 유형
데이터 유형
설명
NUMBER
DECFLOAT(Power6 하드웨어 가속 사용) DECIMAL 기반으로 NUMBER NUMBER(p [, s]) 대한 지원이 추가되었다.
VARCHAR2
VARCHAR2 유형 동작은 NULL 해석되는 문자열과 후행 공백을 구분하는 데이터 정렬을 포함한다.
Oracle DATE
Oracle DATE 모드의 데이터베이스는 달력 날짜와 함께 TIME 구성 요소를 포함한다.
TIMESTAMP(n)
단위의 범위를 0(날짜 + 시간)부터 12(피코초) 사이에서 선택할 있다.
BOOLEAN
유형은 절차적 논리, 변수 루틴 매개변수에서 사용할 있다.
VARRAY
프로시저의 ARRAY 지원이 VARRAY 유형 메소드 구문을 지원하도록 확장되었다.
INDEX BY
DB2에서는 일반 배열과 함께 결합형 배열도 지원된다.
ROW TYPE
복합 유형은 변수 매개변수에서 사용할 있으며 배열 결합형 배열에 대한 요소로도 사용할 있다.
Ref Cursor type
매개변수를 사용하여 커서를 변수에 할당하거나 전달할 있다.



묵시적 캐스팅 유형 확인

"오리처럼 걷고 오리처럼 말한다면 그것은 분명 오리이다."

문구는 PHP Ruby 같은 같은 여러 언어에서 자주 언급되는 문구이다. 모든 리터럴은 문자열이며 컨텍스트에 따라 다른 유형으로 사용된다. SQL 표준을 준수하고 유형 불일치가 코딩 실수를 나타낼 가능성이 높다는 철학에 따라 지금까지 DB2 문자열과 숫자를 명시적으로 다른 형식으로 캐스팅하지 않는 서로 비교할 없는 강력한 형식의 규칙을 따랐다.

아쉽게도 Oracle 애플리케이션이 SQL에서 약한 형식 지정을 사용할 경우에는 애플리케이션을 DB2 대해 성공적으로 컴파일할 없었다. DB2 9.7에서는 묵시적 캐스팅(약한 형식 지정) 추가되었다. , 문자열과 숫자를 매우 유연한 방식으로 비교, 할당 조작할 있게 되었다.

또한 지연된 준비 인해 형식화되지 않은 NULL 많은 곳에서 사용할 있으며 형식화되지 않은 매개변수 마커를 거의 모든 곳에서 사용할 있다. , DB2 번째 실제 값이 나타날 때까지 매개변수 마커의 유형을 확인하지 않는다.

묵시적 캐스팅을 완성하기 위해 DB2에서는 프로시저 매개변수에 기본값을 지정하는 기능과 매개변수에 대한 인수를 이름별로 연결하는 기능을 지원한다.


DB2 확장된 내장 함수 라이브러리

모든 RDBMS 데이터에 대한 작업을 수행하는 함수 라이브러리를 제공한다. 하지만 이러한 함수에 같은 이름을 사용하는 경우가 없다는 점이 문제이다. 기능이 매우 비슷한 함수조차도 RDBMS마다 이름이 다르다.

DB2 이제 기존 함수 세트뿐만 아니라 Oracle 호환되는 라이브러리도 지원한다. 다음은 이러한 함수 일부를 보여 주는 간단한 목록이다.

  • 변환 캐스팅 함수
    • TO_DATE
    • TO_CHAR
    • TO_CLOB
    • TO_NUMBER
    • TO_TIMESTAMP

이들 함수는 다양한 호환 형식 문자열 세트를 지원한다.

  • 날짜 계산
    • EXTRACT
    • ADD_MONTHS
    • MONTHS_BETWEEN
    • NEXT_DAY
    • 요일 부분을 추가하는 더하기(+) 부호
  • 문자열 조작
    • LPAD
    • RPAD
    • INSTR
    • INITCAP
    • SUBSTR 대한 확장
  • 기타
    • NVL
    • DECODE
    • LEAST
    • GREATEST
    • BITAND

제품에서 동일하게 지원되는 함수가 많아졌다는 것은 Oracle 애플리케이션을 DB2에서 사용할 있도록 만드는 작업의 기본적인 성공률이 높아졌다는 것을 뜻한다.


Oracle SQL 언어 지원

지금까지 동시성, 데이터 유형, 유형 지정 함수에 대해 살펴보았다. 하지만 Oracle DB2 차이점은 정도에서 그치지 않는다. SQL 언어의 핵심인 키워드 의미에서도 차이가 있으며 일부 기능은 제품 제품에서만 지원되기도 한다. 이러한 기능이 많이 사용되는 기능일 경우에는 제품에 공통으로 적용되는 SQL 제출하는 제한이 따르게 된다. 6에서는 여러 가지 크고 작은 언어 기능 가지 중요한 기능을 보여 준다.


6. SQL 지원

기능
설명
CONNECT BY 재귀
DB2에서는 지금까지 ANSI SQL 재귀가 지원되었지만 이제는 LEVEL CONNECT_BY_PATH 같은 다양한 함수 의사 열을 비롯한 Oracle 유형의 CONNECT BY 추가되었다.
조인(+) 구문
구문은 Oracle에서도 실제로 사용되지 않고 있지만 아직까지도 OUTER JOIN 구문 형식을 사용하는 애플리케이션과 개발자가 많이 있다.
DUAL 테이블
단일 행과 단일 열로 구성된 테이블이며 Oracle 애플리케이션에서 더미로 자주 사용된다.
ROWNUM 의사
의사 열은 대개 리턴되는 행의 수를 제한하고 결과 세트의 행을 열거하는 사용된다.
ROWID 의사
Rowid 이전에 가져온 행을 물리적 주소를 기반으로 빠르게 검색하는 사용된다.
MINUS SQL 연산자
Oracle에서는 하나의 결과 세트에서 다른 결과 세트를 제거할 EXCEPT 대신 MINUS 사용한다.
SELECT INTO FOR UPDATE
SELECT INTO 대한 FOR UPDATE 구문은 나중에 커서를 사용하지 않고 수정할 의도로 DB2에서 행을 추출할 사용된다.
Public 동의어
Public 동의어는 스키마 이름이 없는 별명이다. DB2에서는 테이블 오브젝트, 시퀀스 PL/SQL 패키지에 대한 Public 동의어가 지원된다.
CREATE TEMPORARY TABLE
DB2에서는 작성된 전역 임시 테이블과 선언된 전역 임시 테이블이 지원된다.
TRUNCATE 테이블 명령문
명령문은 트리거를 실행하지 않은 채로 전체 테이블의 컨텐츠를 빠르게 삭제한다.
낮은 수준의 이름 확인
DB2 9.7에서는 이상 인라인 보기 이름을 지정할 필요가 없다. 또한 UNION 등의 세트 연산자로부터 이름을 수비게 상속할 있다.

표를 보면 데이터베이스에 대해 SQL 제출하는 Oracle 애플리케이션에서 실행할 있도록 DB2 적용된 변경 사항이 많이 바뀌지는 않았다는 것을 있다. 하지만 많은 애플리케이션의 주요 부분이 서버 자체에서 실행되고 있으며 Oracle 애플리케이션에 사용할 있는 서버측 언어는 PL/SQL이다. 따라서 PL/SQL 대한 지원이 없으면 호환성을 이야기할 없다.


PL/SQL 대한 DB2 지원

일반적으로 애플리케이션을 제품에서 다른 제품으로 이식할 경우에는 SQL 프로시저 언어 코드도 다른 SQL 언어 코드로 변환되어야 한다. 이로 인해 가지 문제점이 발생한다.

  • 소스 대상 언어 사이의 자동화 제한 사항 불일치로 인해 변환된 결과 코드의 내용이 복잡해진다.
  • 애플리케이션 개발자가 대상 SQL 언어 코드에 익숙하지 않기 때문에 이식된 코드를 디버그하기가 어렵다. 스킬이 부족하기 때문에 시간이 지날수록 유지보수 부담이 커진다.
  • 패키지된 애플리케이션의 경우에는 애플리케이션이 새롭게 릴리스될 때마다 변환 작업을 수행해야 한다.
  • 결국에는 원본보다 느린 에뮬레이션이 되고 만다.

이러한 문제를 해결하기 위해 DB2 9.7에는 기본 PL/SQL 지원이 포함되었다. 그렇다면 말의 의미가 무엇일까?

그림 3에서 있듯이 이제 DB2 엔진에는 PL/SQL 컴파일러와 SQL PL 컴파일러가 모두 들어 있다. 컴파일러 모두 DB2 SQL Unified Runtime Engine 대한 가상 시스템 코드를 생성한다. 이는 Optim Development Studio 같은 모니터링 개발 도구가 런타임 엔진 수준에서 DB2 연결되기 때문에 중요하다.


그림 3. PL/SQL 컴파일러 지원


PL/SQL DB2 중요한 프로시저 언어로 통합되면서 얻게 되는 효과는 다음과 같다.

  • 변환이 필요하지 않다. 소스 코드가 스키마 카탈로그에 그대로 유지된다.
  • 개발자는 익숙한 언어를 계속해서 사용할 있다. 논리가 SQL PL 작성되었다고 하더라도 논리를 DB2 언어로 이동하지 않아도 된다. 다른 언어를 사용하는 루틴끼리 상호 간에 호출할 있다.
  • 패키지된 애플리케이션 공급업체의 경우 하나의 소스 코드를 Oracle DB2 사용할 있다.
  • PL/SQL SQL PL 모두 DB2 SQL Unified Runtime Engine 대해 동일한 가상 시스템 코드를 생성하므로 동일한 속도로 실행된다.
  • 디버거 인프라가 SQL Unified Runtime Engine 직접 연결되므로 Optim Development Studio에서 PL/SQL 자연스럽게 지원된다.

그림 4에서는 PL/SQL 디버깅 세션을 보여 준다. 디버거는 step into, step over 중단점과 같은 표준 기능을 지원한다. 또한 프로그램 실행 중에 사용자가 로컬 PL/SQL 변수를 변경할 있다.


그림 4. DB2 PL/SQL 디버거 지원


PL/SQL 구문 세부 사항

그렇다면 PL/SQL 지원이 구체적으로 의미하는 바는 무엇일까? 번째 의미는 핵심 구문이 지원된다는 것이다. , DB2에서 다음과 같은 PL/SQL 공통 구문이 모두 지원된다.

  • if then else
  • while 루프
  • := 할당
  • 로컬 변수 상수
  • #PRAGMA EXCEPTION 예외 처리
  • 다양한 형식의 루프(범위, 커서 쿼리)
  • 변수 매개 변수를 다른 오브젝트에 고정하는 %TYPE %ROWTYPE 앵커링
  • 프로시저를 private 트랜잭션에서 실행할 있도록 지원하는 #PRAGMA AUTONOMOUS 트랜잭션

PL/SQL 오브젝트 지원

프로시저 논리가 허용되는 다양한 오브젝트에서 PL/SQL 사용할 있다.

  • 스칼라 함수
  • 트리거
  • 트리거
  • 프로시저
  • 익명 블록
  • PL/SQL 패키지

PL/SQL 패키지 지원

Oracle 애플리케이션에 사용되는 대부분의 PL/SQL 패키지 포함되어 있다. PL/SQL 패키지(DB2 패키지가 아님) 외부에서 액세스할 있는 오브젝트와 패키지 내에서 사용하기 위한 도우미 오브젝트를 구별하는 기능을 갖춘 개별 오브젝트의 모음이다. ANSI SQL에서 패키지와 동등한 개념으로 사용되는 용어는 모듈이다. DB2 이제 ANSI SQL 모듈 PL/SQL 패키지에 대한 지원을 제공한다. 제공되는 기능 특히 중요한 기능은 다음과 같다.

  • CREATE [OR REPLACE] PACKAGE 외부에서 있는 루틴에 대한 프로토타입을 정의하며 변수 유형과 같이 외부에서 있는 비프로시저 오브젝트도 정의한다.
  • CREATE [OR REPLACE] PACKAGE BODY 모든 private public 루틴과 다른 모든 private 오브젝트를 구현한다.
  • 패키지 또는 패키지 본문 내에서 다음과 같은 오브젝트를 정의할 있다.
    • 변수 상수
    • 데이터 유형
    • 예외
    • 스칼라 함수
    • 프로시저
    • 커서
  • 패키지 초기화
  • 패키지의 public 동의어


DB2 공통 내장 패키지

일부 Oracle 애플리케이션에서는 RDBMS에서 제공하는 패키지를 활용한다. 특히 보고, 이메일 또는 연결 통신을 제공하는 라이브러리는 많이 사용될 있다. 이러한 애플리케이션을 DB2에서 많이 사용할 있도록 DB2에서는 7 나열된 패키지를 제공한다.


7. DB2에서 제공하는 내장 패키지

패키지
설명
DBMS_OUTPUT
명령행에서 설정 또는 해제할 있는 기본적인 보고 기능을 제공한다.
UTL_FILE
DB2 서버에서 파일 작업을 수행하는 필요한 기능을 제공하는 모듈이다.
DBMS_SQL
기존 EXECUTE EXECUTE IMMEDIATE 명령문과 함께 동적 SQL 수행할 있는 SQL API 제공하는 패키지이다.
UTL_MAIL
SQL 이메일 알림을 보낼 있는 모듈이다.
UTL_SMTP
UTL_MAIL 비슷한 하위 수준 API SMTP 통합 기능을 제공한다.
DBMS_ALERT
다른 세션끼리 서로 세마포어를 설정하는 사용할 있는 패키지이다.
DBMS_PIPE
세션 간에 데이터를 보내는 필요한 기능을 제공하는 모듈이다.
DBMS_JOB
DB2 작업 스케줄러와 통합되는 호환 가능한 API 제공한다.
DBMS_LOB
DB2 내장 LOB 함수를 에코하는 LOB 처리를 위한 Oracle API이다.
DBMS_UTILITY
애플리케이션에 사용되는 다양한 프로시저의 모음이다.


Oracle 관련 JDBC 확장

JDBC 표준 Java 클라이언트 인터페이스이다. 하지만 표준이 아닌 특정 데이터 유형을 지원하기 위해 Oracle JDBC 드라이버에 추가된 확장이 있다.

Java 기술 기반 애플리케이션에 대한 호환성 수준을 극대화하기 위해 DB2 9.7 JDBC 드라이버는 무엇보다도 참조 커서 VARRAY 매개변수를 사용하여 프로시저를 호출할 있는 기능을 지원한다.


CLPPlus 사용한 SQL*Plus 스크립트 지원

SQL*Plus 명령행 프로세서를 사용하여 DDL 스크립트 보고서를 작성하는 경우가 자주 있다. 이러한 스크립트뿐만 아니라 스크립트를 작성하는 개발자의 스킬까지도 쉽게 이전할 있도록 지원하기 위해 DB2에서는 CLPPlus라고 하는 SQL*Plus 호환 명령행 프로세서를 제공한다. 도구의 기능은 다음과 같다.

  • SQL*Plus 호환 명령 옵션
  • 변수 대체
  • 형식 지정
  • 보고 함수
  • 제어 변수


그림 5. SQL*Plus 호환 CLPLus 도구



끌어 놓기처럼 쉬운 DB2 사용

DB2 PL/SQL Oracle SQL 맞게 조정한 후에는 복잡한 마이그레이션 툴킷이 필요하지 않다. 대신 IBM Data Movement Tool 사용하여 테이블, 패키지 또는 전체 스키마를 Oracle에서 DB2 끌어 놓기만 하면 된다. 애플리케이션을 DB2 이동하거나 동일한 소스가 DB2 Oracle 대해 작동할 있도록 애플리케이션을 수정할 경우에도 예외에 대한 최소한의 조정만 수행하면 된다.

이를 수행하는 단계도 매우 간단하다.

1. 필요한 레지스트리 변수를 설정한다.

o db2set DB2_COMPATIBILITY_VECTOR=ORA

o db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES

2. 데이터베이스 관리자를 다시 시작한다.

o db2stop

o db2start

3. Oracle 호환 데이터베이스를 작성한다.

o db2 create database mydb pagesize 32 K

o db2 update db cfg for mydb using auto_reval deferred_force

4. IBM Data Movement Tool 시작하고 Oracle DB2 데이터베이스에 연결한다(그림 6 참조). 연결이 설정되면 DDL 추출할지 또는 DDL 데이터를 모두 추출할지 선택할 있다. 마지막으로 생성된 스크립트를 실행하여 직접 전개할지 또는 Interactive Deploy 창을 사용하여 작업을 수행할지 여부를 선택할 있다. (일반적인 대부분의 애플리케이션의 경우에는 번째 방법을 사용하는 것이 좋다.)


그림 6. IBM Data Movement Tool 사용하여 Oracle 스키마를 DB2 끌어 놓기


5. Interactive Deploy 사용하여 원하는 스키마를 Oracle에서 DB2 이동한다(그림 7 참조). Interactive Deploy 모드의 탐색 트리에 Oracle 데이터베이스에서 추출한 모든 오브젝트가 표시된다. 모든 오브젝트를 선택하고 전개 메뉴 옵션을 실행한다. 결과적으로 도구는 오브젝트를 DB2 복사하고 진행 상태를 기록한다. 일부 오브젝트의 경우 전개되지 않을 수도 있으며 이러한 오브젝트에 대한 작업을 수행할 있는 옵션이 제공된다. 오브젝트를 선택하면 DDL 함께 DB2에서 발생한 오류가 표시된다. 이제 내장 편집기를 사용하여 필요에 따라 정의를 수정하고 다시 전개할 있다. 작업의 목표는 예외를 기반으로 모든 오브젝트를 DB2 대화식으로 이동하는 것이다.


그림 7. IBM Data Movement Tool 사용하여 Oracle 스키마를 DB2 끌어 놓기



DB2 대한 호환성 평가하기

그렇다면 애플리케이션을 DB2 9.7에서 실제로 얼마나 쉽게 사용할 있을까? 당연한 말이겠지만 애플리케이션에 따라 다르다고 말할 있다. IBM에는 Oracle 데이터베이스의 모든 오브젝트를 분석하여 점수로 환산해서 보여 주는 MEET DB2라는 내부 도구가 있다. 도구는 기본적으로 사용할 있는 기능과 조정이 필요한 부분에 대한 보고서를 제공한다. IBM 계정 담당자 또는 영업 담당자는 유틸리티를 실행하여 현재 Oracle 데이터베이스와 DB2 호환성에 대한 평가 결과를 빠르게 제공할 있다.


그림 8. 평가를 위한 MEET DB2 보고서 도구


DB2 9.7 베타 단계를 진행했던 1 동안 75 이상의 PL/SQL 코드로 구성된 많은 애플리케이션을 자세히 분석한 결과 평균 90%-99% 기본 전송 속도를 보여 주었다.


그림 9. 지원되는 명령문의 98% 평균 속도

댓글 없음:

댓글 쓰기