Tibero 4 SP1을 사용한지도 벌써 일년이 넘어가고 있다. 그동안 안정화에 꽤 많은 노력을 기울였고, 생각보다 오래 걸렸지만, Tibero를 그럭저럭 사용하고 있다. 문제는 아직까지는 초기에 Tibero 영업에서 얘기한 "Oracle 10g 기준으로 거의 모든(?) 기능이 동일하다"는 얘기에는 많이 모자란 모습이라는 것이다.

 그동안 Tibero에 대해서 몇번 얘기했었는데, 이번에 얘기할 것은 Oracle의 exp, imp에 해당하는 tbexport와 tbimport에 대한 얘기이다. tbexport는 Oracle의 exp와 같이 Online 상태의 DB에서 data를 backup할때 사용하는

 무엇이 문제인가!!
 Oracle에서 export한 덤프 파일을 import할 때에 원본 DB에는 A라는 Tablespace가 존재하지만, import하는 DB에는 A라는 Tablespace가 없다고 가정해보자. 어떻게 되는가. 아래의 이미지를 보면 쉽게 이해가 가지 않을까?
두 DB에 생성된 Tablespace 현황

  DB-1의 ERP라는 유저를 export한 뒤 DB-2의 ERP라는 유저에 import한다고 할 때, 두 DB에 생성된 Tablespace가 서로 다르다면, Oracle에서는 DB-1에서 export한 Table들이 원래 생성되었던 A라는 Tablespace가 DB-2에 없다면 import하는 계정의 default tablespace인 B에 Table을 생성하죠. Tibero에서도 이렇게 될 줄 알았습니다.


 그런데... Tibero에서는 import하는 DB에 원래 DB-1에서 Table이 생성될때 사용했던 Tablespace와 동일한 이름의 Tablespace가 없으면 에러를 발생시키네요. ignore=y 옵션을 주고 시작하면 해당 오류를 그냥 통과하고 나머지를 import합니다만 오류가 발생한 Table은 수작업으로 생성해야 합니다.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


 TmaxData의 Tibero4로 migration을 진행하면서 알게된 몇가지 내용 중 Index rebuild에 대해서 얘기해보고자합니다. 기존에 사용하던 Oracle을 기준으로 하면... (제가 가장 잘 아는게 Oracle이라 이녀석이 기준입니다.) Index를 사용하다가 rebuild 해줄때 몇가지 옵션을 줄 수 있습니다.

SQL> ALTER INDEX IDX01 REBUILD ONLINE;
   * 기존의 인덱스를 계속 유지한채로 REBUILD하고, REBUILD가 끝나면 바꿔치기 하는 옵션이죠.

SQL> ALTER INDEX IDX01 REBUILD ONLINE TABLESPACE TS_IDX2;
   * REBUILD를 하면서 저장하는 TABLESPACE도 바꾸는 옵션이죠.


 사실 DB 관리를 하다보면 tablespace를 바꿔줄 일이 가끔씩 생깁니다. 그래서 Tablespace를 바꿀 수 있는 옵션은 아주 유용합니다. 그런데... Tibero4에서는 이를 지원하지 않고 있네요. ㅡ.ㅡ
[General syntax error]라는 오류가 발생합니다. Tmax에서도 지원하지 않는다고 하네요. 그런데, Tmax에서 제공하는 Tibero 관리/개발용 툴인 tbAdmin에는 인덱스 리빌드창(마법사??)에서 Tablespace를 선택할 수 있도록 되어있습니다. 혹시나 해서 실행시켜보니까 똑같은 오류가 발생하네요.


YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. Favicon of http://powerstudy.tistory.com BlogIcon 경영대학생 2010.02.01 15:02 신고  댓글주소  수정/삭제  댓글쓰기

    글 잘보고갑니당.....ㅎ




Tablespace의 크기를 MB 단위로 조회하고, 관련 정보를 조회하는 쿼리입니다.

select
ts.status
, data.name
, ts.contents
, extent_management
, data.Mbytes "SPACE(MB)", free.free "FREE(MB)"
, trunc((data.Mbytes-free.free)/data.Mbytes*100,2) "Used(%)"
from (select tablespace_name name, trunc(sum(bytes/1024/1024)) Mbytes
from dba_data_files
group by tablespace_name) data,
(select free.tablespace_name, trunc(sum(free.bytes)/1024/1024,1) free
from dba_free_space free
group by free.tablespace_name) free,
dba_tablespaces ts
where data.name = free.tablespace_name
and data.name = ts.tablespace_name
;


select
ts.status
, data.file_name
, data.name
, data.Mbytes "SPACE(MB)", free.free "FREE(MB)"
, trunc((data.Mbytes-free.free)/data.Mbytes*100,2) "Used(%)"
from (select tablespace_name name, file_name, file_id, trunc(bytes/1024/1024) Mbytes
from dba_data_files) data,
(select tablespace_name, file_id, trunc(bytes/1024/1024,1) free
from dba_free_space free) free,
dba_tablespaces ts
where data.name = free.tablespace_name
and data.name = ts.tablespace_name
and data.file_id = free.file_id
and data.name not in ('UNDOTBS1', 'SYSTEM')
;

위의 회색 박스안의 쿼리를 실행하면 아래와 같은 결과가 나옵니다.
사용자 삽입 이미지




참고 자료
Littleworld Encylopedia
오라클 정보공유 커뮤니티 oracleclub
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST