OS환경 : Oracle Linux4.8 (64bit)
DB 환경 : Oracle Database 9.2.0.4
에러 : ORA-14404: partitioned table contains partitions in a different tablespace
파티션 테이블이 있는 테이블 스페이스 삭제시 발생한 메세지
해결 방법 : 해당 테이블 스페이스 안에있는 파티션 테이블들을 모두 삭제해준뒤 테이블 스페이스 삭제
테스트 시나리오
1. 테이블 스페이스 조회
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | select * from dba_data_files; FILE_NAME -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ---------- ------------------------------ ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- /oradata/ORCL/system01.dbf 1 SYSTEM 629145600 76800 AVAILABLE 1 YES 3.4360E+10 4194302 1280 629080064 76792 /oradata/ORCL/undotbs01.dbf 2 UNDOTBS1 2726297600 332800 AVAILABLE 2 YES 3.4360E+10 4194302 640 2726232064 332792 /oradata/ORCL/users01.dbf 6 USERS 26214400 3200 AVAILABLE 6 YES 3.4360E+10 4194302 1626148864 3192 /oradata/ORCL/xdb01.dbf 7 XDB 47185920 5760 AVAILABLE 7 YES 3.4360E+10 4194302 847120384 5752 /oradata/ORCL/t1.dbf 10 T1 314572800 38400 AVAILABLE 10 NO 0 0 0 314507264 38392 /oradata/ORCL/t2.dbf 11 T2 314572800 38400 AVAILABLE 11 NO 0 0 0 314507264 38392 /oradata/ORCL/t3.dbf 12 T3 314572800 38400 AVAILABLE 12 NO 0 0 0 314507264 38392 /oradata/ORCL/t4.dbf 13 T4 314572800 38400 AVAILABLE 13 NO 0 0 0 314507264 38392 /oradata/ORCL/t5.dbf 14 T5 314572800 38400 AVAILABLE 14 NO 0 0 0 314507264 38392 |
2. 테이블 스페이스 삭제(T1~T5)
1 2 3 4 | drop tablespace T5 including contents and datafiles; * ERROR at line 1: ORA-14404: partitioned table contains partitions in a different tablespace |
바로 삭제가 되지 않음
3. 해당 테이블스페이스 안에있는 테이블 검색
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | col SEGMENT_NAME for a10 col PARTITION_NAME for a12 col OWNER for a10 select SEGMENT_NAME,PARTITION_NAME,OWNER from dba_segments where TABLESPACE_NAME IN ('T1','T2','T3','T4','T5'); SEGMENT_NA PARTITION_NA OWNER ---------- ------------ ---------- COM_OFF COLUMN_P1 SYS COM_OFF COLUMN_P2 SYS COM_OFF COLUMN_P3 SYS COM_OFF COLUMN_P4 SYS COM_OFF COLUMN_P5 SYS COM_ON COLUMN_P1 SYS COM_ON COLUMN_P2 SYS COM_ON COLUMN_P3 SYS COM_ON COLUMN_P4 SYS COM_ON COLUMN_P5 SYS COM_OLTP COLUMN_P1 SYS COM_OLTP COLUMN_P2 SYS COM_OLTP COLUMN_P3 SYS COM_OLTP COLUMN_P4 SYS COM_OLTP COLUMN_P5 SYS |
4. sys 계정으로 접속
conn / as sysdba
5. 해당 테이블 파티션 제거 및 테이블 제거
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | alter table COM_OFF drop partition COLUMN_P1; alter table COM_OFF drop partition COLUMN_P2; alter table COM_OFF drop partition COLUMN_P3; alter table COM_OFF drop partition COLUMN_P4; alter table COM_OFF drop partition COLUMN_P5; drop table COM_OFF; alter table COM_ON drop partition COLUMN_P1; alter table COM_ON drop partition COLUMN_P2; alter table COM_ON drop partition COLUMN_P3; alter table COM_ON drop partition COLUMN_P4; alter table COM_ON drop partition COLUMN_P5; drop table COM_ON; alter table COM_OLTP drop partition COLUMN_P1; alter table COM_OLTP drop partition COLUMN_P2; alter table COM_OLTP drop partition COLUMN_P3; alter table COM_OLTP drop partition COLUMN_P4; alter table COM_OLTP drop partition COLUMN_P5; drop table COM_OLTP; |
6. 에러 발생했던 테이블 스페이스 삭제
1 2 3 4 5 6 7 | drop tablespace T1 including contents and datafiles; drop tablespace T2 including contents and datafiles; drop tablespace T3 including contents and datafiles; drop tablespace T4 including contents and datafiles; drop tablespace T5 including contents and datafiles; Tablespace dropped. |
7. 테이블 스페이스 재조회
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | select * from dba_data_files; FILE_NAME -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ---------- ------------------------------ ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- /oradata/ORCL/system01.dbf 1 SYSTEM 629145600 76800 AVAILABLE 1 YES 3.4360E+10 4194302 1280 629080064 76792 /oradata/ORCL/undotbs01.dbf 2 UNDOTBS1 2726297600 332800 AVAILABLE 2 YES 3.4360E+10 4194302 640 2726232064 332792 /oradata/ORCL/users01.dbf 6 USERS 26214400 3200 AVAILABLE 6 YES 3.4360E+10 4194302 1626148864 3192 /oradata/ORCL/xdb01.dbf 7 XDB 47185920 5760 AVAILABLE 7 YES 3.4360E+10 4194302 847120384 5752 |
제대로 지워진것을 확인할 수 있다.
원인 : 테이블 스페이스가 비어있지 않아서 발생한 메세지
참조 : http://www.ucjmh.com/2015/01/23/ora/
'ORACLE > Trouble Shooting' 카테고리의 다른 글
ORA-01146: cannot start online backup - file 5 is already in backup (0) | 2018.12.19 |
---|---|
sqlplus 접속시 hang 발생할 경우 조치 및 접속 방법 (0) | 2018.12.17 |
ORA-00600 발생 시 확인할 점 (0) | 2018.12.12 |
ORA-21780 ENCOUNTERED WHEN GENERATING SERVER ALERT SMG-350 (0) | 2018.12.12 |
oracle smon을 kill 시키면 어떻게 될까? (0) | 2018.11.29 |