제대로 한 것 맞는것 같은데요... 저는 onload 는 한 번도 안해봐서리...
가르쳐 드릴 수는 없고 참고로 제가 정리한거 적어볼께요...
도움되었으면 좋겠습니다...
(16) onload와 onunload 유틸리티
- IDS의 binary 이미지
- disk 또는 tape (-t: tape device name, -b: tape device size, -s: tape size)
- 전체 db 또는 table 한 개
- -l option: 서버에서 onconfig파일에서 LTAPEDEV, LTAPEBLK, LTAPESIZE 설정 파라미터를 주었을 때
- 이기종 시스템은 불가능
(17) onunload 예제
- 1. $ touch faketape
- 2. $ onunload -t faketape stores7
- 3. drop database stores7;
- 4. $ onload -t faketape -d <dbspace> stores7 (Enter!)
(18) Move Data in Binary Format
- IDS page size, 숫자데이터 형식, Byte alignment for structures and unions가 같아야 한다...(?)
- HPL을 제외하곤 가장 빠르다
(19) Locking Issues
- onunload 시 shared lock (각 테이블 unload시)
- onload 시 exclusive lock (각 테이블 load시)
(20) Unloading a Database
- Synonyms, P.K, F.K, 기본값, triggers, SPL 보존됨
- 소유자와 특권을 변경할 수 없다.
- DBA와 informix유저에 의해서만 실행
- ex1) $ onunload -t /dev/rmt0 -b 8096 -s 809600 superstores_demo (Enter!)
ex2) $ onunload -l superstores_demo (Enter!)
ex3) $ onunload -t superstores_demo (Enter!)
(21) Loading a Database
- nologging 으로 만들어짐
- onload를 실행시키는 사람이 소유자가 됨 (create database... 문이 첨가됨)
- ex1) $ onload -t /dev/rmt0 -b 8096 -s 809600 demo_db (Enter!)
ex2) $ onload -l -d <dbspace> demo_db (Enter!)
ex3) $ onload -t demo_db_file demo_db (Enter!)
(22) Unloading a Table
- synonyms, views, constraints, 기본값, trigger는 unload 되지 않는다
- table 소유주여야 하며 DBA 권한을 가지던지 informix 유저이어야 한다
(23) Loading a Table
- logging 상태를 off 해야 한다 -> nologging 이어야 한다
- table dbspace 위치, index dbspace 위치, 인덱스 이름, constraint 이름을 바꿀 수 있다
(24) 예제 (Loading)
- ex1) $ onload -t f1 db1:tab1 -fd dbs1 dbs2 -i ix1 ix2 (Enter!) -> -fd: dbsapce
ex2) $ onload -t f1 db1:tab1 -id ix1 dbs1 dbs2 (Enter!) -> -id: index space
ex3) $ onload -t f1 db1:tab1 -c constr1 constr2 (Enter!) -> -c: constraint
ex4) $ touch customerfile
$ onunload -t customerfile stores7:customer
$ dbschema -d stores7 -t customer -ss customer.sql
drop table customer (-> in dbaccess)
$ ontape -s -N stores7 (-> nologging으로 만들기)
$ onload -t customerfile stores7:customer -fd onl_dbspace new db_space
$ ontape -s -U stores7 (-> 다시 Unbuffered logging 상태로 만들기!)
(25) 성공 조언...^^;
- 같은 binary 저장형실을 다른 머신에서 공유하거나 같은 IDS버전을 돌리고 있으면 매우 유용하다
- 좋은 성능을 내기 위해선
i) db나 table의 unloading에 앞서 logging을 turn off 한다
ii) 가능한 한 Tape 보다는 disk로 하는게 좋다
iii) 아니면 block size를 크게 하고 tape device 가용성을 가장 빠르게 한다
-- mutant 님이 쓰신 글:
>> 제가 오늘 백업 을 했는데여..
>>
>> full 백업이 아니라.. database만 백업 하려구 명령어를 찾다가
>>
>> onunload와 unload란 명령어가 있어서
>>
>> 이거 가지고 백업과 복원을 했습니다.
>>
>> 시스템이 두개가 있었고 각각 시스템에 다른 Database가 있었습니다..
>>
>> 이걸 한 시스템으로 몰아서 시스템 하나에 2개의 Database가 되게 만들려고 했는데..
>>
>> onunload -t /dev/tapedev database
>>
>> 이렇게 백업 받아서
>>
>> unload -t /dev/tapedev database 일케만 하니깐 에러가 생기더군요
>>
>> 첨엔 사이즈 에러가 나서 싸이즈는 적어 줬습니다.
>>
>> unload -t /dev/tapedev database -s 409600 일케여..
>>
>> 근데 또 에러가 나더군요
>>
>> dbspase 이름이 틀리다고 ㅡㅡ;;
>>
>> 시스템1과 시스템2의 dbspace네임이 틀렸거던여.. 그래서
>>
>> 백업한 시스템1의 dbspace네임과 똑같이 시스템2에도 dbspace을 생성해줬습니다. index db도 틀리다고 나와서 그것도 생성했습니다. ㅡㅡ;;
>>
>> 그랬더니 제대로 되더군여..
>>
>> 여기서 질문이여
>>
>> dbspace네임이 틀리면 onload 시킬때 안올라가나여??
>>
>> onunload 백업 받은 dbspace가 A라고 할때
>>
>> onload로 복구 시키려는 시스템에 dbspace가 B이면 B로는 안올라가나여??
>>
>> 그리고 제가 제대로 백업하고 복원한건지 봐주세여.. ㅡㅡ;;
>>
>> 오늘 첨 해봤어여
>>
>> 장황한 질문 끝까지 읽어주셔서 감사함다...
|