|
DataStage를 사용하여 DB2에서 오라클로 혹은 오라클에서 DB2로 마이그레이션 하기 part 1, 아키텍처 비교
원문 출처 : http://bit.ly/vMEJKJ
시간이 지날수록 대부분의 프로젝트는 요구사항에 따라 새로운 환경으로 이동하거나 노후된 환경에서 업그레이드를 하게 됩니다. 프로젝트에서 데이터베이스를 바꾸는 것은 일반적인 일입니다. 다음과 같은 구조로 된 DWH에서 작업한 필자의 경험을 통해 마이그레이션 과정을 설명드리고자 합니다.
OS-AIX
Database-DB2(DWH Database)
ETL Tool –DataStage
새로운 프로젝트 구현에 아래와 같은 새로운 요구사항을 받았습니다.
OS-AIX
Database-Oracle10G
ETL Tool-DataStage
오라클 DB로만 구성된 OLD 환경과 동일하게 구축하는 것은 처음이였습니다.
코딩을 많이 한다거나 새로운 DataStage 작업 생성 없이 DB2에서 오라클로 DataStage 작업을 전환하는 것은 가장 어려운 과제였습니다.
DB2와 오라클의 상세한 오브젝트 및 차이점을 알아보겠습니다.
|
IBM DB2 UDB
|
Oracle
|
|
Database
|
Database
|
|
Table Space
|
Tablespace
|
|
Schema
|
User
|
|
User
|
User
|
|
Group
|
Role
|
|
Table
|
Table
|
|
Typed Table
|
Object Table
|
|
Temporary Table
|
Temporary Table
|
|
Index
|
Index
|
|
Check Constraint
|
Check Constraint
|
|
Column Default
|
Column Default
|
|
Unique Key
|
Unique Key
|
|
Primary Key
|
Primary Key
|
|
Foreign Key
|
Foreign Key
|
|
UDB SQL Procedure
|
PL/SQL Procedure
|
|
UDB SQL Function
|
PL/SQL Function
|
|
UDB Package
|
PL/SQL Package
|
|
UDB Trigger
|
PL/SQL Trigger
|
|
Table Alias
|
Public Synonym
|
|
Sequence
|
Sequence
|
|
View
|
View
|
|
Typed View
|
Object View
|
|
Identity Column
|
Auto Increment Column
|
|
Structured Data Type
|
Abstract Datatype
|
|
Datalink
|
Binary File
|
|
Tables containing structured data type
|
Table containing abstract datatype
|
|
View containing structured data type
|
View containing abstract datatype
|
|
Stored Procedure
|
Stored Procedure
|
|
Function
|
Function
|
위에서 대부분의 오브젝트를 찾을 수 있으나, 가장 중요한 것은 “users” 입니다. 이는 문제가 어디에 있는지 파악합니다. User 및 스키마에 대해 상세히 다뤄보겠습니다.
오라클 데이터베이스 아키텍처
오라클 데이터베이스는 2개 기본 컴포넌트를 포함하고 있습니다.
1. 인스턴스 : 인스턴스를 구성하는 메모리 구조 및 백그라운드 프로세스
2. 데이터베이스 : 디스크 리소스
인스턴스
위에서 다룬 바와 같이, 인스턴스는 메모리 구조 및 배경 프로세스로 구성됩니다. 메모리 구조는 자체적으로 시스템 글로벌 영역(SGA), 프로그램 글로벌 영역(PGA) 및 선택적으로 설정하는 영역(소프트웨어 영역 코드:SAC)으로 구성되어 있습니다. 반면에 필수 백그라운드 프로세스에는 데이터베이스 작성기(DBWn), 로그 작성기(LGWR), 체크포인트(CKPT), 시스템 모니터(SMON) 및 프로세스 모니터(PMON)가 있습니다. 또한 선택적인 사항 인 백그라운드 프로세스에는 아카이버 (ARCn), 리커버러(RECO) 등이 있습니다. 참고 자료 2에 있는 그림 2는 인스턴스에 컴포넌트에 대한 관계를 표시합니다.
메모리 구조
시스템 글로벌 영역
SGA는 기본 메모리 구조입니다. 오라클 DBA가 말하는 메모리는 일반적으로 SGA를 의미합니다. 이 영역은 일부 메모리로 나눠지며 버퍼 캐시, 공유 풀, 리도 로그 버퍼, 라지 풀 및 자바 풀로 구성되어 있습니다.
l 버퍼 캐쉬
버퍼 캐쉬는 데이터 파일에서 검색된 데이터 블록의 복사본을 저장하는데 사용됩니다. 이는 사용자가 데이터베이스에서 데이터를 검색하는 경우 데이터를 버퍼 캐시에 저장하게 됩니다. 버퍼 캐시의 크기는 init.ora 초기화 매개변수 파일에 있는 DB_CACHE_SIZE 매개변수를 통해 조작할 수 있습니다.
l 공유 풀
공유 풀은 두개 작은 메모리인 라이브러리 캐쉬와 딕셔너리 캐쉬로 나뉩니다. 라이브러리 캐쉬는 공통으로 사용되는 SQL 및 PL/SQL 구분에 대한 정보를 저장하는데 사용되며, LRU(Least Recently Used) 알고리즘으로 관리됩니다. 또한 사용자들 간에 구문을 공유할 수 있습니다. 반면에 딕셔너리 캐쉬는 데이터베이스에 있는 컬럼, 테이블, 인덱스, 사용자, 권한 등과 같은 오브젝트 정의에 대한 정보를 저장하는데 사용됩니다. 공유 풀의 크기는 init.ora 초기화 매개변수 파일에 있는 SHARED_POOL_SIZE 매개변수를 통해 설정할 수 있습니다.
l 리도 로그 버퍼
사용자가 실행한 각 DML 구문(삽입, 수정 및 삭제)이 리도 항목을 생성합니다. 리도 항목이란 사용자가 만든 모든 데이터 변경 사항에 대한 정보입니다. 리도 항목은 리도 로그 파일에 작성되기 전에 리도 로그 버퍼에 저장됩니다. 리도 로그 버퍼의 크기를 조작하는데, init.ora 초기화 매개변수 파일에 있는 LOG_BUFFER 매개변수를 사용할 수 있습니다.
l 라지 풀
라지 풀은 SGA에 메모리를 선택적으로 설정하는 영역입니다. 공유 풀의 부담을 덜어주는데 사용되며, 또한 I/O 프로세스를 위해 사용됩니다. 라지 풀의 크기는 init.ora 초기화 매개변수 파일에 있는 LARGE_POOL_SIZE 매개변수로 설정할 수 있습니다.
l 자바 풀
자바 풀은 자바 명령어의 파싱 서비스를 위해 사용됩니다. 자바 풀의 사이즈는 init.ora 초기화 매개변수 파일에 있는 JAVA_POOL_SIZE로 설정할 수 있습니다.
프로그램 글로벌 영역
SQL 구문 파싱의 결과가 라이브러리 캐시에 저장되어 있더라도 바인딩 변수 값은 PGA에 저장됩니다. 개인용으로 사용하거나 혹은 사용자 간에 공유되지 않아야 하기 때문입니다. PGA는 정렬 영역에도 사용됩니다.
l 소프트웨어 영역 코드
소프트웨어 영역 코드는 Oracle 응용 프로그램 소프트웨어가 상주되어 있는 메모리 위치입니다.
오라클 백그라운드 프로세스
오라클 백그라운드 프로세스는 메모리와 함께 작동하는 뒤에 숨겨진 프로세스입니다.
l DBWn
데이터베이스 작성기(DBWn) 프로세스는 버퍼캐쉬에서 데이터파일로 데이터를 작성하는데 사용됩니다. 오래전에 데이터 작성기는 DBWR 이라고 했습니다. 일부 오라클 버전이 하나 이상의 데이터베이스 작성기를 보유하는 것을 허용한 이후로, 이름이 DBWn으로 변경되었습니다. n의 값은 숫자 0에서 9까지 사용 가능합니다.
l LGWR
로그 작성기(LGWR) 프로세스는 DBWn과 비슷합니다. 리도 로그 버퍼에서 리도 로그 파일로 리도 항목을 작성합니다.
l CKPT
체크포인트(CKPT)는 DBWn에 신호를 보내는 프로세스이며, 데이터파일에 버퍼 캐쉬에 있는 데이터를 작성합니다. 또한 로그 파일 전환이 발생할 때 데이터파일 및 제어 파일 헤더를 업데이트합니다.
l SMON
시스템 모니터(SMON) 프로세스는 데이터파일에 리도 로그 파일에 있는 항목을 적용하여 시스템 크랙 또는 인스턴스 장애를 복구하는데 사용됩니다.
l PMON
프로세스 모니터(PMON)는 프로세스는 트랜잭션 롤 백 및 다른 리소스를 해제하여 작업 실패된 프로세스를 정리하는 데 사용됩니다.
데이터베이스
데이이터베이스는 디스크 리소스를 참조하고 두개의 기본 구조인 논리적 구조 및 물리적구조로 나뉩니다.
논리적 구조
Oracle 데이터베이스는 관리, 저장 및 효율적인 데이터 검색을 위해 작은 논리 단위로 구분 됩니다. 논리적 단위는 테이블스페이스, 세그먼트, 범위 및 데이터 블록입니다. 참고 자료 1에 있는 그림 3은 이러한 단위 사이에 관계를 표시합니다.
l 테이블스페이스
테이블스페이스는 논리적 데이터베이스 오브젝트 그룹입니다. 데이터베이스는 하나 이상의 데이블스페이스가 있어야 합니다. 참고 자료 1에 있는 그림 3에서 3개의 테이블 스페이스인 시스템 테이블스페이스, 테이블스페이스 1 및 테이블스페이스 2가 있습니다. 테이블스페이스는 하나 이상의 데이터파일로 구성됩니다.
l 세그먼트
테이블스페이스는 세그먼트로 다시 나뉩니다. 세그먼트는 동일한 오브젝트 유형을 저장하는데 사용됩니다. 데이터베이스의 모든 테이블은 데이터 세그먼트라고 하는 특정 세그먼트에 저장되고 데이터베이스의 모든 인덱스 또한 인덱스 세그먼트라고 하는 자체 세그먼트에 저장됩니다. 다른 세그먼트 유형으로 임시 세그먼트 및 롤백 세그먼트가 있습니다.
l 범위
세그먼트는 범위로 다시 나뉩니다. 범위는 하나 이상의 데이터 블록으로 구성됩니다. 데이터베이스 오브젝트가 확대되면 범위가 할당됩니다. 테이블 스페이스 또는 세그먼트와 달리 범위는 이름이 지정될 수 없습니다.
l 데이터 블록
데이터 블록은 오라클 데이터베이스 스토리지의 가장 작은 단위입니다. 데이터 블록 크기는 테이블스페이스 내의 특정한 바이트 수이며, 동일한 바이트 수를 가지고 있습니다.
물리적 구조
물리적 구조는 사용자가 직접 조작할 수 없는 오라클 데이터베이스(이 경우 디스크 파일)의 구조입니다. 물리적 구조는 데이터파일, 리도 로그 파일 및 제어 파일로 구성됩니다.
l 데이터파일
데이터파일은 테이블스페이스와 대응하는 파일입니다. 하나의 데이터파일은 하나의 테이블스페이스에서 사용될 수 있으나, 하나의 테이블스페이스는 하나 이상의 데이터파일을 가질 수 있습니다.
l 리도 로그 파일
리도 로그 파일은 DML 구문으로 생성된 리도 항목을 저장하는 파일입니다. 복구 프로세스를 위해 사용할 수 있습니다.
l 제어 파일
제어 파일은 데이터파일 크기 및 위치, 리도 로그 파일 위치 등과 같은 데이터베이스의 물리적 구조에 대한 정보를 저장하는 데 사용됩니다.
DB2 데이터베이스 아키텍처
데이터베이스 관리자 서버(DAS) : 항상 실행 되어야 합니다. 전체 서버에 하나의 사용자만 있으며, 사용자가 다운되면 DB2 서버도 다운될 것입니다.
인스턴스(db2inst1) : 내부에 다수의 데이터베이스를 가질 수 있는 인스턴스입니다. DB2는 하나의 DB2 서버에 하나 이상의 인스턴스를 가질 수 있습니다.
사용자 분리(db2fence) : 데이터베이스에 있는 함수 및 프로시저를 실행하는 데 사용됩니다.
데이터베이스 : 데이터베이스는 디스크 리소스를 참조하고 두개의 기본 구조인 논리적 구조 및 물리적 구조로 나뉩니다.
참고 자료
1. ORACLE 아키텍처 및 용어 http://ugweb.cs.ualberta.ca/~c391/manual/chapt2.html
2. Oracle9i 데이터베이스 개념 http://docs.oracle.com/cd/B10500_01/server.920/a96524/c08memor.htm
3. DB2 아키텍처 소개 http://www.craigsmullins.com/db2intro.htm
4. DB2 아키텍처 및 프로세스 개요 http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topi...
5. 스키마용 데이터 정의 명령문 생성 http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=...
6. DB2 튜토리얼 http://research.cs.queensu.ca/home/cisc332/db2-tutorial.pdf
7. DB2 필수 안내서 : http://www.michael-thomas.com/tech/db2/db2_survival_guide.htm
8. DB2 9.5에서 멀티스레드 아키텍처 구현 방법 : http://www.ibm.com/developerworks/data/library/techarticle/dm-0807k...
 |
KDUG |
|