728x90
반응형
테이블스페이스 DROP 중 아래와 같은 오류가 발생했다.
ORA-14404: 분할영역된 테이블이 다른 테이블스페이스에 분할영역것을 포함하고있습니다.
원인
삭제하려는 테이블스페이스 내에 존재하는 파티션 테이블이나 인덱스의 일부가 다른 테이블스페이스에 존재하기 때문에 발생하는 오류이다.
-- 파티션의 일부가 다른 테이블스페이스에 존재하는 파티션 찾는 명령어
select * from dba_tab_partition
where TABLE_NAME in (
select TABLE_NAME
from dba_tab_partitions
where TABLESPACE_NAME = '삭제대상테이블스페이스명'
group by TABLE_NAME
)
and TABLESPACE_NAME <> '삭제대상테이블스페이스명'
;
해결방법 1
해당 파티션의 테이블스페이스를 이동한다.
-- 파티션의 테이블스페이스 변경 명령어
alter table 스키마명.테이블명 move partition 파티션명 tablespace 옮길테이블스페이스명 update indexes;
-- 일부가 다른 테이블스페이스에 존재하는 파티션들의 테이블스페이스 변경 스크립트
select 'alter table ' || TABLE_OWNER || '.' || TABLE_NAME || ' move partition ' || PARTITION_NAME || 'tablespace 옮길테이블스페이스명 update indexes;'
from dba_tab_partition
where TABLE_NAME in (
select TABLE_NAME
from dba_tab_partitions
where TABLESPACE_NAME = '삭제대상테이블스페이스명'
group by TABLE_NAME
)
and TABLESPACE_NAME <> '삭제대상테이블스페이스명'
;
해결방법 2
삭제한다. (어차피 tablespace drop 예정이기 때문에)
-- 파티션 삭제 명령어
alter table 스키마명.테이블명 drop partition 파티션명;
-- 일부가 다른 테이블스페이스에 존재하는 파티션들 삭제 스크립트
select 'alter table ' || TABLE_OWNER || '.' || TABLE_NAME || ' drop partition ' || PARTITION_NAME || ';'
from dba_tab_partition
where TABLE_NAME in (
select TABLE_NAME
from dba_tab_partitions
where TABLESPACE_NAME = '삭제대상테이블스페이스명'
group by TABLE_NAME
)
and TABLESPACE_NAME <> '삭제대상테이블스페이스명'
;
728x90
반응형
'ORACLE > 문제해결' 카테고리의 다른 글
테이블 truncate 중 ORA-02266, ORA-02297 (1) | 2024.05.10 |
---|---|
[ORACLE] 통계정보 생성 시 ORA-20005 Object Statistics Are Locked (Stattype = ALL) (0) | 2024.01.16 |
Shared pool이 계속 커지는 현상 - 메모리 누수 문제? (1) | 2023.12.07 |
ORA-00604 ORA-02429 테이블스페이스 DROP 시 발생한 제약조건 오류 (0) | 2023.09.19 |
ORA-28001 비밀번호 만료 (0) | 2023.08.22 |