백업전에 다음을 먼저 수행하여 ./명령어 없이 쉘들이 수행되도록 한다
export PATH=./:$PATH
// 데이터베이스 구조 추출
1. 스크립트 생성
# aexport -s 127.0.0.1 -u iscp -p iscp1 -NLS_USE KO16KSC5601
(환경설정에서 ALTIBASE_NLS_USE을 해주면 뒤에 -NLS_USE옵션은 필요없음)
2. 데이터 추출
# sh run_il_out.sh
======================================================
3. 대상 데이터베이스에 데이터베이스 구조 생성
# sh run_is.sh
4. 대상 데이터베이스에 데이터 로딩
# sh run_il_in.sh
5. 대상 데이터베이스에 인덱스 및 외래키 생성
# sh run_is_index.sh
# sh run_is_fk.sh
가장 중요한 것 - 다음을 하지 않으면 한글땜에 개고생함
export ALTIBASE_HOME='/altibase/altibase_home'
export PATH=./:$PATH
export ALTIBASE_NLS_USE='KO16KSC5601'
- 케릭터셋 조회법
select * from v$nls_parameters
- NLS_USE 데이터베이스 저장 또는 검색시 사용되는 클라이언트 캐릭터 셋이다
(US7ASCII,KO16KSC5601, MS949, BIG5, GB231280,UTF8, SHIFT-JIS, EUC-JP).
생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 캐릭터 셋(US7ASCII)을 사용한다.
즉 다음과 같다
a. NLS_USE 옵션을사용하지않는경우US7ASCII를사용한다.
b. UTF8을쓰는 경우 NLS_USE 옵션을지정해야한다.
우선순위
|
방법
|
1
|
-NLS_USE 옵션
|
2
|
환경변수등록
|
3
|
altibase.properties 파일수정
|
다음은 데이터 백업시 쉘 스크립트에 대한 설명이다
스크립트
|
용도
|
사용구분
|
run_il_out.sh
|
데이터다운로드스크립트
|
백업
|
run_il_in.sh
|
데이터업로드스크립트
|
업로드
|
run_is.sh
|
스키마생성스크립트
|
업로드
|
run_is_fk.sh
|
외래키생성스크립트
|
업로드
|
run_is_index.sh
|
인덱스생성스크립트
|
업로드
|
run_is_repl.sh
|
이중화생성스크립트
|
업로드
|
run_il_out.sh 스크립트만백업절차에서사용하고나머지는업로드절차에서사용된다.
이장의내용은ALTIBASE_버전간_마이그레이션_가이드의내용을정리한것으로보다자세한내용은마이그레이션가이드를참고한다.
data migration의대략적인절차는다음과같다.
a. 체크포인트수행
b. 데이터건수확인
c. DB 객체다운로드
d. data 다운로드
e. data 확인
f. altibase_home 백업
a. altibase 설치
b. DB 객체확인
c. DB 객체생성
d. 데이터생성
altibase 데이터를백업해둘디렉터리를생성한다. /user1/altibase의하위디렉터리는가급적피한다. root 밑에만들어사용할것을권장한다.
2.2. altibase 중지
a) altibase를stop/start 한다.
# server stop
# server start
|
다음명령으로아직플러쉬되지않은페이지들을디스크에반영한다.
isql> alter system checkpoint;
|
a. 다음쿼리를통해전체table 목록을확인한다.
b. table 목록을이용하여다음과같은스크립트를만든다
# vi count_source_tb.sql
select count(*) from TABLE_NAME;
select count(*) from table1;
select count(*) from table2;
select count(*) from table3;
…..(중략)
select count(*) from tablen;
|
c. 다음명령을통해각table의데이터count를파일에기록한다.
# is -f count_ source_tb.sql -o count_ source_tb.log
|
a. sys 계정으로aexport를수행한다.
b. sys 계정이아닌사용자 계정으로aexport를수행할경우 사용자 계정으로생성한테이블스키마및데이터만백업된다.
c. sys 계정으로aexport를수행하면 사용자계정에대한password는aexport 수행도중따로물어본다. 그때입력한다.
a. aexport를수행하면6가지스크립트파일이생성된다.
b. 이중run_il_out.sh 스크립트를수행하여생성된모든데이터를다운로드받는다.
a. 백업받은디렉터리에생성된“테이블명.log” 파일과count_source_tb.log 파일을비교하여전체데이터가백업되었는지확인한다.
a. server stop 명령으로구동중인altibase를stop 한다.
b. /user1/aitlbase/ 밑의altibase_home 디렉토리의이름을변경하여백업해둔다.
#:/user1/altibase ] mv altibase_home altibase_home_ver4
|
a. altibase는일반적으로/user1/altibase/altibase_home에설치한다. 만약다른경로에설치를했다면 ALL_CRT_TBS.sql 스크립트를수정하여경로를변경한다.
# vi ALL_CRT_TBS.sql
..(전략)
DATAFILE '/user1/altibase/altibase_home/dbs/test.dbf'
..(후략)
|
a. aexport 스크립트에의해생성된run_is.sh 스크립트를이용하여데이터베이스객체를생성한다.
a. aexport 스크립트에의해생성된run_il_in.sh 스크립트를이용하여데이터를생성한다.
b. 백업절차시확인해두었던전체데이터건수와run_il_in.sh 스크립트로생성된데이터건수가일치하는지확인한다.
a. aexport 스크립트에의해생성된다음스크립트를이용하여필요한작업을한다.
run_is_fk.sh
|
외래키생성스크립트
|
run_is_index.sh
|
인덱스생성스크립트
|
run_is_repl.sh
|
이중화생성스크립트
|
4. 주의사항
a. 데이터를암호화해서넣은경우마이그레이션이불가능하다.
b. 암호화된데이터가있을경우복호화하고, 백업/업로드를수행한뒤, 다시암호화를수행해야한다.
a. NLS_USE 옵션을사용하지않는경우US7ASCII를사용한다.
b. UTF8을쓰는 경우 NLS_USE 옵션을지정해야한다.
우선순위
|
방법
|
1
|
-NLS_USE 옵션
|
2
|
환경변수등록
|
3
|
altibase.properties 파일수정
|
a. 기타다른주의사항은altibase에서제공하는마이그레이션가이드를참고한다.