현상
global index parallel rebuild 수행 시 사용 되는 임시 객체가 recyclebin에 남는 상황이 발생해 결과적으로 recyclebin 내용이 증가하며, 이로 인해 불필요한 공간을 차지하는 현상이 발생하였습니다.
Recyclebin에 임시 테이블이 잔존하는 현상을 아래와 같이 확인할 수 있습니다.
SQL> select * From dba_recyclebin;
TIBERO
_TIBERO_TBL4580000
_TIBERO_TBL4579900
TABLE
USR
2024-01-26:10:58:33 2024-01-26:10:58:35 4444938
TIBERO
_TIBERO_IDX4580100
_TIBERO_IDX4579900
INDEX
USR
2024-01-26:10:58:34 2024-01-26:10:58:35 4444938
45800
SQL
복사
원인
특정 DDL은 내부적으로 임시 객체를 생성한 뒤 이를 삭제(drop)하는 방식으로 동작합니다.
이때 삭제(drop)되는 임시 객체가 Recyclebin에 저장되는 프로세스 때문에 발생하는 현상입니다.
slog에서 임시테이블 drop 및 해당 drop이 rename을 포함한 rescyclebin 처리가 되는 것을 아래와 같이 확인할 수 있습니다.
[2024-01-26T10:58:33.470221] [DDL-208] [I] Executing DDL: alter index idx2 rebuild parallel 8
[2024-01-26T10:58:33.472117] [DDL-208] [I] Executing internal DDL: CREATE INTERNAL TABLE "TIBERO"."_TIBERO_TBL4579900" AS SELECT /*+ DEFAULT_STAT */ * FROM "TIBERO"."TRR" WHERE ROWNUM < 1;
[2024-01-26T10:58:34.138075] [DDL-208] [I] Internal DDL execution succeeded
[2024-01-26T10:58:34.167134] [DDL-208] [I] Executing internal DDL: CREATE INTERNAL INDEX "TIBERO"."_TIBERO_IDX4579900" ON "TIBERO"."_TIBERO_TBL4579900"("C1","C2") GLOBAL PARTITION BY HASH("C1","C2") PARTITIONS 8 PARALLEL 8 TABLESPACE "USR" NOLOGGING;
[2024-01-26T10:58:34.455534] [DDL-208] [I] Internal DDL execution succeeded
[2024-01-26T10:58:34.464742] [DDL-208] [I] create isgmt(idxre) obj_id:45799, sgmt_id:45810
[2024-01-26T10:58:34.946201] [DDL-208] [I] Executing internal DDL: DROP TABLE "TIBERO"."_TIBERO_TBL4579900";
[2024-01-26T10:58:34.986640] [DDL-208] [I] Executing internal DDL: ALTER INDEX "TIBERO"."_TIBERO_IDX4579900" RENAME TO "_TIBERO_IDX4580100";
[2024-01-26T10:58:35.135022] [DDL-208] [I] Internal DDL execution succeeded
[2024-01-26T10:58:35.234862] [DDL-208] [I] Executing internal DDL: ALTER TABLE "TIBERO"."_TIBERO_TBL4579900" RENAME CONSTRAINT "_TIBERO_CON1062100728" TO "_TIBERO_CON1062100690";
[2024-01-26T10:58:35.236782] [DDL-208] [I] Internal DDL execution succeeded
[2024-01-26T10:58:35.239235] [DDL-208] [I] Executing internal DDL: ALTER TABLE "TIBERO"."_TIBERO_TBL4579900" RENAME CONSTRAINT "_TIBERO_CON1062200761" TO "_TIBERO_CON1062200026";
[2024-01-26T10:58:35.240047] [DDL-208] [I] Internal DDL execution succeeded
[2024-01-26T10:58:35.242450] [DDL-208] [I] Executing internal DDL: ALTER TABLE "TIBERO"."_TIBERO_TBL4579900" RENAME CONSTRAINT "_TIBERO_CON1062300783" TO "_TIBERO_CON1062300279";
[2024-01-26T10:58:35.243289] [DDL-208] [I] Internal DDL execution succeeded
[2024-01-26T10:58:35.248145] [DDL-208] [I] Executing internal DDL: ALTER TABLE "TIBERO"."_TIBERO_TBL4579900" RENAME TO "_TIBERO_TBL4580000";
SQL
복사
해결
패치를 적용해 해결합니다. (적용 패치: 317806a)
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.
참고
우회 방안을 설정하여 오류를 해결할 수 있습니다.
•
dba_recyclebin 에서 원래 이름을 통해 임시테이블을 찾아 purge 수행합니다.