본문 바로가기

Oracle263

[unused 와 drop column]컬럼 삭제 매커니즘과 각 명령어 수행 시 용량 비교 테이블의 컬럼을 drop 하는데는 일반적으로 ALTER TABLE DROP COLUMN 명령어를 사용하는데요,해당 명령어는 DDL로써 exclusive TM lock을 잡고 있기 때문에 실시간으로 테이블에 작업이 있는 경우에는 사용하기가 꺼려지는 작업입니다. 그럴때에 alter table set unused column 명령어를 사용하여 미사용컬럼으로 변경하여 처리하는 방법도 있습니다. 저도 메타데이터만 수정하는 작업이라 금방끝난다정도로만 알고 있었는데, 좀더 상세하게 어떻게 동작을 하는지 정리하면서 배우는 시간을 가지려 합니다. DROP COLUMN컬럼을 drop할 때 오라클은 테이블의 모든블록의 모든 row를 읽습니다. 그리고 거기서 drop 될 컬럼을 제거한 후 rewrite하게 됩니다. 여러개의 .. 2025. 12. 10.
data type을 확인하는 dump 함수 사용법 안녕하세요. 오늘은 오라클에서 type을 확인하는 방법 중 하나인 dump 함수 사용을 정리해보겠습니다. 컬럼의data type을 확인하는 방법은 몇가지가 있는데요, 제일 일반적인 것은 desc를 보거나 *_tab_columns를 확인하는 방법인 것같습니다. 저는 오브젝트에 존재하는 데이터타입을 확인하고 싶은게 아니였고, 실시간 함수가 적용된 결과값의 데이터타입을 궁금해서 방법을 찾다가 내장함수로 존재하는 dump라는 함수가 있는것을 확인하였습니다. USAGE dump(column,format,start_position,length) 식으로 간단하게 사용가능합니다. column명만 기입학 나머지는 미입력시 default값으로 입력가능합니다. format은 8,10,16,17이 있으며 8진수 10진수 16.. 2025. 10. 30.
lob 컬럼 move tablespace 명령어 인덱스 rebuild까지 수행 ALTER TABLE MOVE LOB(LOB 컬럼명) STORE AS (TABLESPACE ) UPDATE INDEXES; 병렬로 수행ALTER TABLE MOVE LOB (LOB 컬럼명) STORE AS (TABLESPACE ) PARALLEL n UPDATE INDEXES;테이블과 LOB 동시에 ALTER TABLE MOVE TABLESPACE LOB (LOB 컬럼명) STORE AS (TABLESPACE ) UPDATE INDEXES; 2025. 7. 17.
ORA-04021 timeout occurred while waiting to lock object %s 원인 : 다른 세션의 라이브러리 캐시 락으로 인해 앞선 세션이 락을 해제할때까지 대기하는 이벤트이고, 5분 대기 후에 발생함. 해결 : 앞선 세션이 락을 해제한 후 다시 시도하거나. 앞의 세션이 kill가능한 경우 찾아서 kill session 수행. 참고 : Doc ID 1486712.1 Object를 사용해야 하는 세션은 먼저 Object에 대해 특정모드(null,shared,exclusive)로 라이브러리 락을 획득하려고 시도합니다.라이브러리 캐시 락을 획득하면 다른세션이 해당 캑체를 수정할 수 없습니다. (패키지 또는 뷰를 recomplie할때 exclusive lock이 발생) Object lock은 첫번째 단게이며, 기본적으로 라이브러리 캐시에서 Object를 찾은다음 특정모드로 lock을 거.. 2025. 7. 17.
반응형