database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38542 게시물 읽기
No. 38542
파티션 테이블 TRUNCATE 후 INSERT시 에러
작성자
김진국(kimscom)
작성일
2011-05-06 13:50ⓒ
2011-05-06 14:00ⓜ
조회수
5,940

테이블을 파티션으로 분할하고, 인덱스도 LOCAL 로 만들어서 사용하려고 합니다.

데이터 입력전에 삭제하는 부분이 기존에는 DELETE여서 속도를 좀 높이려고 TRUNCATE로 변경했습니다.

그랬더니 INSERT 단계에서 UNUSABLE 에러가 발생하더군요.

그래서 TRUNCATE 후 아래처럼 PK 재구성을 했더니 에러는 안생깁니다.

 EXEC SQL ALTER INDEX HBRT_L2_PK REBUILD NOLOGGING;

 

그런데 Rebuild 하는데 시간이 넘 오래걸려 속도 단축의 의미가 없어졌습니다.

왜 이런현상이 생기는거죠?   같은 로직을 9i에서 돌릴때는 에러가 안났는데 10g에서는 에러가 나네요 -_-;;

 

아래처럼.. LOCAL 인덱스는 영향이 없으나 PK라서 그런건가요? 

 

Operation

인덱스

UNUSABLE 상태 변경

ADD

LOCAL

새로 생성되므로 영향없음

GLOBAL

파티션만 ADD되므로 영향없음

DROP

LOCAL

함께 DROP되므로 영향없음

GLOBAL

모든 GLOBAL INDEX가 UNUSABLE

SPLIT

LOCAL

SPLIT된 파티션 인덱스 UNUSABLE

GLOBAL

모든 GLOBAL INDEX가 UNUSABLE

MERGE

LOCAL

MERGE되어 남는 파티션 인덱스 UNUSABLE

GLOBAL

모든 GLOBAL INDEX가 UNUSABLE

RENAME

LOCAL

실제 변경이 없으므로 영향없음

GLOBAL

실제 변경이 없으므로 영향없음

MOVE

LOCAL

MOVE된 파티션 인덱스 UNUSABLE

GLOBAL

모든 GLOBAL INDEX가 UNUSABLE

TRUNCATE

LOCAL

남은 ROW가 없으므로 영향없음

GLOBAL

모든 GLOBAL INDEX가 UNUSABLE

EXCHANGE

LOCAL

EXCHANGE 한 파티션 인덱스 UNUSABLE

GLOBAL

모든 GLOBAL INDEX가 UNUSABLE

※ ROWID가 변경되는 Operation의 경우 인덱스가 UNUSABLE되므로 Index Rebuild가 필요

이 글에 대한 댓글이 총 3건 있습니다.

보통 테이블에 PK constraint를 만들면, UNIQUE 인덱스도 함께 만들어 집니다.  따라서, 파티션 테이블에서  보통 테이블에서 하던것 처럼 PK를 만들면 GLOBAL 인덱스가 만들어집니다.  왜냐하면, 테이블의 PK 컬럼에 존재하는 모든 값들에 대해서 UNIQUE INDEX가 만들어 지기 때문입니다.

 

hopper(bunny)님이 2011-05-06 22:08에 작성한 댓글입니다.
이 댓글은 2011-05-06 22:13에 마지막으로 수정되었습니다.

PK 생성하실때 LOCAL로 안하신듯 하네요.

viatoris님이 2011-05-07 16:46에 작성한 댓글입니다. Edit

네.. 질문 올리고 나서 여기저기 확인해보니 PK는 Global 이라서 그랬더군요.

그래서 Unique Index를 먼저 만들고, Contraint를 잡아서 Local PK로 만들었더니 해결되었습니다. ^^

김진국(kimscom)님이 2011-05-11 18:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38545ERWIN r7.3 에서 기존에 만든 ERD에 새로운 DB objects만 받을 수 있을까요? [1]
초보
2011-05-09
3592
38544분할 배분 하는 쿼리 질문입니다. [3]
무심도
2011-05-06
5294
38543속도때문에 union을 빼고 싶은데 잘안되네요... 방법이 없을까요? [3]
이재호
2011-05-06
4673
38542파티션 테이블 TRUNCATE 후 INSERT시 에러 [3]
김진국
2011-05-06
5940
38541트리거 3초에 200-300회 작동시 DB 과부하가 일어날까요? [2]
이민수
2011-05-06
5228
38540문자열이 포함되어 있는 컬럼에 데이터형 셀렉트 질문입니다... [3]
박경배
2011-05-06
3993
38539토드 같은 디비툴에서 다중 디비 접속 재질문...db link 말고는 방법이 없는지요? [1]
아이니
2011-05-04
3644
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다