본문 바로가기
Developer/DB

[DB] ALTIBASE MIGRATION

by 순수한소년 2015. 1. 15.
728x90
반응형

* 사전작업
aexport.properties 'iloader option' 필요에 맞게 수정해주기


# 다른 버전간의 MIGRATION

* source DB에서의 백업

1. 백업 디렉토리 생성
$HOME> mkdir 백업디렉토리명

2. 사용중인 고객의 모든 서비스 중지 및 세션의 변경 작업 중지

3. 체크 포인트 수행
iSQL> alter system checkpoint;
Alter success.

4. 소스 ALTIBASE의 데이터 건수 확인
iSQL> select count(*) from ...

5. 데이터베이스 객체 다운로드
$HOME> cd 백업디렉토리명
$HOME/백업디렉토리명> aexport

6. 데이터 다운로드
AEXPORT를 실행하면 6 가지의 스크립트 파일이 생성된다.
run_il_out.sh 스크립트를 실행시키면 생성된 모든 데이터를 다운로드 받을 수 있다.
$HOME/백업디렉토리명> sh run_il_out.sh

7. 데이터 확인
백업 받은 디렉토리에 생성된 “테이블명.log” 파일을 확인해보면 해당 테이블의 
전체 데이터 건수와 다운로드 된 데이터 건수, 에러가 발생한 건수를 확인할 수
있다.
# cat 테이블명.log
# cat count_ source_tb.log


* destination DB로의 업로드

1. destination DB로 aexport를 이용해 생성된 백업 디렉토리 복사
(FTP등을 이용한다.)

2. 데이터베이스 객체 생성
소스 ALTIBASE 에서 백업 받은 스크립트인 “run_is.sh” 파일을 실행하여
데이터베이스 객체들을 대상 ALTIBASE 에 동일하게 생성한다.
스크립트를 실행할 시에 다음과 같이 결과 로그를 파일로 저장하고, grep 등의
명령어를 통하여 정상적으로 객체가 생성되었는지 확인하는 것이 좋다.
$HOME/백업디렉토리명> sh run_is.sh > is.out
$HOME/백업디렉토리명>grep ERR is.out
   # 주의!
      버전 4 -> 5에서 table 생성시 (user명_CRT_TBL.sql)
      insert high limit, low limit 부분 삭제 (pct free, used로 변경되었다.)

3. 데이터 생성

기존에 사용하던 데이터베이스 객체를 모두 생성했으면, 해당 객체에 대한
데이터를 생성한다.
$HOME/백업디렉토리명> sh run_il_in.sh

데이터 건수 확인은 SELECT 구문을 사용하여 데이터 건수가 정확한지 확인해야
한다. 대상 ALTIBASE 에서 각 테이블의 데이터 건수를 조회하고, 소스
ALTIBASE에서 확인했던 데이터 건수와 비교하여 정상적으로 마이그레이션이
되었는지 확인한다.
그리고 *.bad 파일의 크기가 0 인지 ls 명령어를 통하여 파일의 크기를 확인해보고,
*.log 파일에도 에러가 없는지 확인을 해봐야 한다.
한글이 입력된 경우에는 한글이 깨지지 않고 정상적으로 업로드 되었는지 Limit
절 등을 사용하여 몇 건의 데이터만 조회하여 확인해본다.

# is ?f count_ target_tb.sql ?o count_ target_tb.log
# diff count_ source_tb.log count_ target_tb.log
iSQL> select * from 테이블명 limit 5;

run_is_index.sh
run_is_repl.sh
run_is_fk.sh 순으로 스크립트 실행하면 끝!!


# 동일 메이저 버전간의 원격 MIGRATION
( ex) 5.3.3 -> 5.5.1 )

(destination DB에서, 새로 디렉토리를 생성하여 실행하는 것이 좋다.)
$ aexport
iLOADER> 원격 접속할 ip / user_id / user_pw 

$ sh run_il_out.sh > is.out
$ grep ERR is.out

$ sh run_is.sh (여기엔 내용 없음. 대신 아래 내용 입력해주기)
해당 .sql 파일 내의 데이터 파일등의 경로 등 적절히 설정해주고 스크립트 실행
isql -s 127.0.0.1 -u SYS -p MANAGER -f ALL_CRT_USER.sql
(ALL_CRT_DIR.sql
ALL_CRT_FK.sql
ALL_CRT_INDEX.sql
ALL_CRT_LINK.sql
ALL_CRT_REP.sql
ALL_CRT_SEQ.sql
ALL_CRT_SYN.sql
ALL_CRT_TBL.sql
ALL_CRT_TBS.sql
ALL_CRT_TRIG.sql
ALL_CRT_USER.sql
ALL_CRT_VIEW_PROC.sql) <- 그대로 쓰지말고 알아서 바꾸기!!

sh run_il_in.sh(ip 등 수정)

sh run_is_index.sh
sh run_is_repl.sh
sh run_is_fk.sh 순으로 실행

-> run_il_out.sh, run_il_in.sh 실행단계에서 iloader에 여러 옵션을 주어 성능을 향상시킬 수 있다.
(스크립트 실행)

ex) -array 100 -commit 100 -parellel 4

- commit : 업로드시 몇건 단위로 삽입후 commit 할 것인지 설정한다.
- split : 파일마다 복사할 레코드의 개수를 설정(out커맨드에서만 적용됨)한다.
- array : 파일에서 읽어들인 데이터를 n개 단위로 정렬하여 전송한다.
- parallel : 병렬로 처리할 수 있는 쓰레드의 개수를 지정한다(max : 32).
array와 병행 사용하지 않고 단독으로 사용하면 성능저하가 일어날 수 있다. 

반응형