Q : 현재 db block size가 16kbytes로 설정된 db가 있다. 이 db의 데이터를 export/import를 이용하여
8kbyte의 db block size를 갖는 db로 마이그레이션을 하려고 한다.
정상적으로 migration이 될까?
반대로 8 kbytes -> 16 kbytes 도 될까?
1. 16 kbytes -> 8 kbytes migration
서버 1 ( db block size = 16kbytes) export
1. 버전 확인
SQL> select * from v$version where rownum <= 1;
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
2. db block size 확인
------------------------------------ ---------------------- ------------------------------
db_block_size integer 16384
3. 유저 생성 / 권한 부여
4. 테이블 생성 / 데이터 입력
2 select level, '16k to 8k test'
3 from dual
4 connect by level <= 100;
SQL> select count(*) from t1;
----------
100
---------- ----------------------------------------
1 16k to 8k test
2 16k to 8k test
3 16k to 8k test
4 16k to 8k test
5 16k to 8k test
6 16k to 8k test
7 16k to 8k test
8 16k to 8k test
9 16k to 8k test
10 16k to 8k test
5. 데이터 export(유저)
$ ls -lrt 16*
-rw-r--r-- 1 oracle oinstall 1241 12월 16 14:57 16k_to_8k_exp.log
-rw-r--r-- 1 oracle oinstall 16384 12월 16 14:57 16k_to_8k.dmp
서버 2 ( db block size = 8kybytes) import
1. 버전 확인
SQL> select * from v$version where rownum <= 1;
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
2. db block size 확인
SQL> show parameter db_block_size
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
3. 유저 생성
SQL> create user test identified by test;
4. 데이터 import
5. 데이터 확인
USER is "TEST"
SQL> select count(*) from t1;
----------
100
---------- --------------------
1 16k to 8k test
2 16k to 8k test
3 16k to 8k test
4 16k to 8k test
5 16k to 8k test
6 16k to 8k test
7 16k to 8k test
8 16k to 8k test
9 16k to 8k test
10 16k to 8k test
2. 8 kbytes -> 16 kbytes migration
서버 1 ( db block size = 8kbytes) export
1 ~ 3은 생략
1. 버전 확인
2. db block size 확인
3. 유저 생성 / 권한 부여
4. 테이블 생성 / 데이터 입력
2 select level, '8k to 16k test'
3 from dual
4 connect by level <= 150;
----------
150
---------- --------------------
1 8k to 16k test
2 8k to 16k test
3 8k to 16k test
4 8k to 16k test
5 8k to 16k test
6 8k to 16k test
7 8k to 16k test
8 8k to 16k test
9 8k to 16k test
10 8k to 16k test
5. 데이터 export
서버 2 ( db block size = 16kbytes) import
1 ~ 3은 생략
1. 버전 확인
2. db block size 확인
3. 유저 생성 / 권한 부여
4. 데이터 import
SQL> drop table t1 purge;
$ imp test/test file=8k_to_16k.dmp log=8k_to_16k_imp.log
5. 데이터 확인
USER is "TEST"
SQL> select count(*) from t1;
----------
150
---------- ----------------------------------------
1 8k to 16k test
2 8k to 16k test
3 8k to 16k test
4 8k to 16k test
5 8k to 16k test
6 8k to 16k test
7 8k to 16k test
8 8k to 16k test
9 8k to 16k test
10 8k to 16k test
A :
테스트의 범위가 조금 협소하긴 하지만 16kbytes -> 8kbytes, 8kbytes -> 16kbytes의 마이그레이션은 잘 되는 것으로 판단됨.
'Oracle > Admin' 카테고리의 다른 글
[펌] 아카이브 로그 파일 자동 삭제 스크립트 (0) | 2011.01.05 |
---|---|
유저의 디폴트 테이블 스페이스 (0) | 2010.12.21 |
index의 테이블스페이스 변경 (0) | 2010.12.15 |
index tree dump 뜨기 (0) | 2010.11.29 |
오라클 자동 기동 (0) | 2010.11.08 |