전체 글486 Delayed block cleanout 발생과 해결법 블록 클린아웃은 트랜잭션에 의해 설정된 로우 락을 해제하고 블록 헤더에 커밋정보를 기록하는 오퍼레이션입니다.사용자가 트랜잭션을 커밋했을 때 블록 클린아웃까지 완료해야 완전한 커밋이라고 할 수 있습니다.DB의 안정적인 사용을 위해서 대량의 갱신작업이 있고나서는 커밋정보를 트랜잭션 테이블에만 기록하고 빠르게 커밋을 끝내버립니다. 블록헤더에는 아직 커밋정보가 기록되지 않은 상태입니다. 해당 블록은 나중에 처음 액세스되는 시점에 다시 커밋정보를 기록하고 클린아웃이 됩니다.무조건적으로 이 방식으로 작동하는것은 아니고, 일반적으로 변경량에 따라 정해지게 됩니다. 종종 업무중에 배치작업이 늦어서 확인을 요청하는 경우가 있습니다. DB에서는 배치정보를 가지고 현재 DB에서 수행중인 상태를 조회해보면 특정부분에서 처리되.. 2026. 1. 6. ORA-01450: Maximum Key Length (6398) Exceeded ORA-01450: Maximum Key Length (6398) Exceeded 원인 : 인덱스 생성시 최대 기준의 bytes가 있는데 각 컬럼의 bytes를 합쳤을때 그것보다 커서 나는 에러해결 : 인덱스 컬럼 재검토 일반적인 8k의 블록사이즈의 경우 최대 사이즈가 6398임. 2025. 12. 19. lob의 용량관리 (deduplicate 와 compress) oracle lob의 기능 중. deduplicate(중복제거)와 compress(압축)기능이 있습니다.securefile형태에서 사용가능한 기능입니다. deduplicate(중복제거)동일한 lob데이터를 한번만 저장하고 포인터로 저장하는 매커니즘입니다.Secure hash index를 사용하여 모든 lob 데이터의 해시값을 계산하고 동일한 내용이면 포인터만 저장합니다. 실제로 1000개 행에 동일한 100kb이미지를 저장한다고 했을때 동작과정은 아래와같습니다. 1. 1 row insert - 한개 row의 image hash값 계산하여 secure hash index에 등록 - 100kb 데이터 저장2.동일 이미지 insert - index조회하여 동일 hash값인거 확인 후 포인터(8bytes)만 .. 2025. 12. 17. [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. 이전 1 2 3 4 ··· 122 다음 반응형