partition table index 질문입니다. 0 4 2,519

by 퍼품디올 [Oracle Admin] [2016.11.09 00:15:24]


안녕하세요

작업을 하다 보니 궁금한점이 있어서 고수님들꼐 문의드립니다.

대용량테이블로써 partition table입니다.

partition을 split 작업으로 추가했습니다.

작업을 하고 나니 index들이 꺠져버렸습니다. (토드에 X로 뜨고 , 참고로 인덱스는 파티션이 아닌 일반 인덱스 입니다.)

그래서 인덱스 리빌드를 하려고 하니 데이터가 너무 많아서 temporary tablespace를 100기가를 써도 인덱스가 걸리지 않았습니다. (인덱구문은 alter index 인덱스명 rebuild; 이렇게 걸었습니다) 

여기서 궁금한건 인덱스를 삭제하고 다시 거는것도 하나의 방법이 될수 있을까요?

아니면 빨리 걸수 있는 구문들이 있을까요?

데이터는 겁나 대용량입니다.

좋은의견 부탁드립니다.

 

 

by 우리집아찌 [2016.11.09 08:25:06]
글로벌 인덱스 하지마시고 로컬인덱스를 최신 파티션부터 생성하면 낫지 않을까요?

by 포동푸우 [2016.11.09 09:45:17]

우선 저도, local index 로 생성하시는 것을 권해 드립니다. (필요한 column 이 꼭 선두 column 이 아니더라도 index 를 구성하는 column 으로 포함되어 있기만 해도 되어, 대부분 local index 로 cover 가능합니다)

Index rebuild (global 포함) 는 parallel 로 수행 시 속도는 빨라 집니다. 이 경우, online option 은 함께 사용할 수 없고,  temporary tablespace 를 필요로 하는 용량도 일부 증가 됩니다. temporary 사용량은 index 구성 column 의 sort 처리량에 비례하므로 (index 를 drop 하고, 재생성 하시더라도, parallel 로 수행하더라도) temporary 사용량(필요량)이 줄지는 않습니다.  

alter index schema.index_name rebuild parallel 8 ; 
alter index schema.index_name noparallel ; 

속도 향상을 위해, parallel 로 rebuild 한 경우, 반드시 alter 로 원복해 주어야 합니다


by 퍼품디올 [2016.11.09 10:09:23]

네..좋은 조언 감사드립니다.

이번에 partition 테이블의 글로벌 인덱스와 로컬인덱스에 대해 공부하게 되네요

partition 테이블을 자주 쓰지 않으니 지식이 부족했습니다.

앞으로의 유지관리를 위해서는 local 인덱스로 생성을 하는것이 좋을거 같습니다.

create index 인덱스명 on 테이블명(컬럼1,컬럼2) local;

이렇게도 쓰고

parallel 로도 rebuild 테스트 해봐야겠습니다

감사합니다

 


by 미스틱매니아 [2016.11.11 09:02:40]

가까운 시일에 풀백업을 받는다면 nologging 옵션을 같이 쓰는것도 방법입니다. 

윗분들 말대로 로컬로 쓸수 있으면 로컬로 쓰는게 최고지만요. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입