[궁금] Global Partition Index 관련.... 0 11 9,079

by drakula [기타] Partition Global Index [2010.05.25 21:03:13]



Global Partition Index 일 경우에는 Partition을 Add하거나, Split 하거나, Drop 하면은
무조건 UNUSABLE로 빠지는걸로 알고 있었는데,
테스트 해보니.ㅠ.ㅠ 그렇지 않네요~
제가 잘 못 알고 있었던것일까요?

 
create table scott.t ( gubun
, seq, seq_name, seq_cls
, seq2, seq2_name, seq2_cls
)
partition by range(seq) (
partition p1 values less than(100)
, partition p2 values less than(200)
, partition p3 values less than(300)
, partition p4 values less than(maxvalue)
)
as
select 1
, rownum, dbms_random.string('u', 10), 'A'
, round(dbms_random.value(1, 400)), dbms_random.string('l', 10), 'B'
from dual
connect by level <= 400 ;

create index scott.t_idx01 on scott.t(seq, seq_name) GLOBAL
partition by range(seq) (
partition p1 values less than(200)
, partition p2 values less than(maxvalue)
) ;



select index_name, status from dba_ind_partitions
where index_name = 'T_IDX01'

INDEX_NAME  STATUS
-------------------
T_IDX01   USABLE
T_IDX01   USABLE



--Split 대상에 Index에  해당하는 Row가 있는 경우에는 UNUSABLE로 빠짐

alter table  scott.t
split partition p4 at (400) into (partition p6, partition p4);
INDEX_NAME  STATUS
-------------------
T_IDX01   UNUSABLE
T_IDX01   UNUSABLE



-- Index 다시 생성
DROP INDEX scott.t_idx01;

create index scott.t_idx01 on scott.t(seq, seq_name) GLOBAL
partition by range(seq) (
partition p1 values less than(200)
, partition p2 values less than(maxvalue)
) ;


-- Split 대상에 Index에 해당하는 Row가 없는 경우는 USABLE 상태
alter table  scott.t
split partition p4 at (500) into (partition p6, partition p4);

select index_name, status from dba_ind_partitions
where index_name = 'T_IDX01';
INDEX_NAME  STATUS
-------------------
T_IDX01   USABLE
T_IDX01   USABLE


--Max Value 삭제
alter table scott.t
drop partition p4;

select index_name, status from dba_ind_partitions
where index_name = 'T_IDX01';
INDEX_NAME  STATUS
-------------------
T_IDX01   UNUSABLE
T_IDX01   UNUSABLE


-- 인덱스 다시 생성
DROP INDEX scott.t_idx01;

create index scott.t_idx01 on scott.t(seq, seq_name) GLOBAL
partition by range(seq) (
partition p1 values less than(200)
, partition p2 values less than(maxvalue)
) ;


-- Partition 추가
alter table  scott.t
ADD partition p6 values less than (500)  ;

select index_name, status from dba_ind_partitions
where index_name = 'T_IDX01';


select index_name, status from dba_ind_partitions
where index_name = 'T_IDX01';
INDEX_NAME  STATUS
-------------------
T_IDX01   USABLE
T_IDX01   USABLE


내가 맺은 결론 :
Global Index도 Partition을 Add 하거나 Row에 해당하지 않는 Partition을 Split 해도 UNUSABLE로 빠지지 않는다...맞는 건가요??

by 현 [2010.05.25 22:04:06]
응..마자.
파티션 추가는 괜찮아.

그런데, 데이터를 넣다보면 간혹 600 에러가 떨어질 때가 있어..
그래서 오라클에 얘기하면 리빌드 하라고 한다.
뭐, 오라클도 뜬구름 잡는듯...

로컬인덱스일 경우 TRUNCATE 하면 리빌드 안해도 되잖아.
것두 간혹 600에러 떨어져서 물어보면 리빌드 하라그랴~

by 타락천사 [2010.05.25 23:36:00]
올만에 친구들 만나서.. 술한잔 하구 와서리 ㅎㅎ
이건 신재씨가 정리 잘한게있는제 지금 위키 자료가 보니
이미지가 깨졌네
내 블로그에 신재씨가 정리한거 있음
참고 하삼
http://blog.naver.com/darkturtle/50081249661

by 타락천사 [2010.05.25 23:39:11]
추가로 한가지만 더 말하자면
울 위키에 오라클 관련 거의 모든 지식이 올라와 있음
활용을 어떻게 하냐가 관건...

by 김정식 [2010.05.25 23:55:20]
맞아요..
태길형이 고민하는것을..
지금 제가 가장 많이 고민하고 있어요..
어떻게 쉽게 활용할 수 있게 할 것인지..

by 김정식 [2010.05.25 23:57:36]
아 그런데 작년 대용량 스터디 이미지는 왜 다 깨졌는지..
모르겠네요.. ㅜ.ㅜ

by 김정식 [2010.05.26 01:02:05]
아 다행이도 이미지 복구 할 수 있는 방법을 찾았는데..
모두 복구 하는데 이틀 정도 걸릴꺼 같네요..
우선 아래 파티션 강좌 복구 하였습니다.
http://wiki.gurubee.net/pages/viewpage.action?pageId=3899999

신재야 저 강좌 이미지가 제대로 맞게 들어가 있는지 확인 해 줄 수 있어..
그리고 혹시 Image013.jpg 이미지 가지고 있다면 수정하면 좋은데..

by drakula [2010.05.26 09:09:55]
오호~~~ 감사 해요~!!! 역쉬~ 울 스터디 짱이에요~
우리 위키는 역쉬ㅠ.ㅠ 찾는게 힘들어요.ㅠ.ㅠ

by drakula [2010.05.26 09:11:47]
신재님 자료 보면 drop, split 할 경우에도 그 안에 데이터가 한건도 없는 경우는
usable 이더라구요~ 참고 하세요^^

by maxmania [2010.05.26 10:50:36]
이미지 깨진 부분은 다시 수정해 놓았어요 ~~
정식오빠~ 다른 강좌 이미지는 제대로 들어가 있는것 같아요 ^^

by 김정식 [2010.05.26 12:20:23]
내가 틈틈히 위키 이미지 열심히 복구하고 있어..
아직 약 70개 페이지 이미지 복구해야해..ㅜ.ㅜ

by 승현 [2011.06.23 23:21:09]
네 어찌보면 당연한 결과입니다..인덱스 리프블록에는 인덱스 키 컬럼 데이터와 rowid만 담으니깐요 중요한것은 테이블 구조가 아니라 데이터 입니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입