반응형
첫번째 질문
1. UNDO Tablespace 의 Datafile size : 15G 2. Status별 Undo Extents 합계 : 약 7G Select a.tablespace_name, a.status, sum(a.bytes)/1024/1024 From dba_undo_extents a, dba_tablespaces b where b.CONTENTS='UNDO' group by a.tablespace_name, a.status order by 1,2; TABLESPACE_NAME STATUS SUM(A.BYTES)/1024/1024 ------------------------------ --------- ---------------------- UNDOTBS1 ACTIVE 67 UNDOTBS1 EXPIRED 4363.67188 UNDOTBS1 UNEXPIRED 2505.46094 이렇게 사이즈가 차이가 나는 이유는 무엇인가요? -- > 상태가 ACTIVE 는 현재 사용중인 롤백세그들이며 EXPIRED 는 undo_retention 시간이 지나 삭제대기중인 롤백입니다 UNEXPIRED 는 commit된 자료지만 retention 할만 한 가치가 있는 세그입니다 7g = 4363+67+2505 가 대략 같을겁니다 ACTIVE + EXPIRED + UNEXPIRED 의 합이 왜 15G가 안되는 걸까요? 15G 는 언두 테이블 스페이스의 총량이며 위의 SQL의 결과 7g 는 언두 사용량을 말하는 겁니다 두번째 질문 select bytes from dba_undo_extents group by bytes; 쿼리 결과가 Bytes ---------- 1 57344 2 65536 3 1048576 4 2097152 5 3145728 6 4194304 7 5242880 8 6291456 9 7340032 10 8388608 위와 같은데 extent의 크기가 왜 이렇게 다른 것인가요? --> 계산상의 차이로 모두 합해서 /1024/1024 로 나누는냐 아니면 각각의 세그들은 /1024/1024 로 나누고 합치느냐의 차이겠죠 extent의 크기가 왜 동일하지않은가요? -- > 각각의 롤백세그멘는 한 트랜잭션의 처리시 변경처리된 자료의 량이 서로 달라 크기가 차이나는겁니다 즉 배치또는 온라인 프로그램에서 자료를 수정 변경시 롤백 세그멘트를 하나씩 DB로 부터 할당받게되는데 그 이후 트랜잭션마다 사용량이 서로 달랐다는 말이죠 ... 위의 SQL 은 세그 크기로 group by 하셨는데 그냥 select * from dba_undo_extents 조회해보세요 그럼 이해하는데 도움이 될듯합니다 세번째 질문 9i에서 UNDO_RETENTION 에 설정한 값을 GUARANTEE 할수 있나요? (10G 부터는 alter tablespace undotbs retention guarantee; 커맨드가 있는데 9i에는 없다) ---> 9i 버전에서 게런티 여부는 확인 안했지만 일반적으로 undo 는 노게런티로 운영합니다 그 이유는 수정되어 적용된 데이타는 언두하기위한 본래 목적보다는 자료수정시 롤백을 위한 운영에 초점이 맞추어져 있기 때문입니다 그래서 UNDO_RETENTION 에 설정한 값에 대한 자료의 게런티 100%는 최대한 하려고한다 이지 운영상황상 할 수 없다는 것이 정답입니다 |
반응형
'ORACLE' 카테고리의 다른 글
[ORACLE] alter table ..... 테이블관련 생성 / 변경 / 삭제 (0) | 2023.04.14 |
---|---|
Oracle Log Switch 발생량 확인 (오라클 로그스위치) DBA 쿼리 (0) | 2022.12.23 |
[Error] ORA-4031 shared memory 부족 현상 오라클 (2) | 2022.12.09 |
[SQL] unusable index 확인 (0) | 2022.11.24 |
[SQL] Tablespace 용량 확인 SQL 쿼리 (0) | 2022.11.16 |
댓글