데이터 변경할 때 오류 발생 0 1 896

by 김정석 [Oracle Admin] [2019.01.20 12:10:37]


오라클 UNDO가 RAC 1,2에 할당되어 있습니다.

질문 1)

그런데 각각 서버에서 조회하면 RAC 2에 할당되어 있는 ACTIVE, EXPIRED, UNEXPIRED 의 용량 차이가 많이 납니다.(총 용량은 동일)

RAC 1에 할당되어 있는 용량 차이는 경미하게 납니다만

질문 2) EXPIRED 된 용량이 많이 남아 있음에도 SNAPSHOT 에러가 나는 건 왜일까요...?

환경

noguarantee 

undo_retention 10000

3) 예전에 마농님이 작성한 글인데, 

A세션이 20분이 소요되는 select문을 던졌습니다. 그리고 16분이 지나고
B세션이 몇개 rows를 update한후에 commit하였습니다.
B세션이 update 할때 undo 가 생성되었겠지요.
A세션은 B세션이 생성한 undo 를 참조합니다.
만약 B세션이 생성한 undo 가 메모리에서 지워졌다면?
snapshot too old 가 발생되겠지요.

undo tablespace 에서 지워지는 게 아니라 메모리에서 

지원지면 발생하는 게 맞는지요..?

 

질문 4) delayed block cleanout

은 snapshot too old 와의 연관성은 어떻게 되는가요 ?

 

감사합니다. 꾸벅

 

 

by 타락천사 [2019.01.20 22:22:17]

1) UNDO는 결국 TRANSACTION 이 ROLLBACK 시 사용하는 정보이니,

   RAC NODE 별 TRANSACTION 량 차이가 나는 거라 자연스러운거예요

2) EXPIRED 는 UNDO 를 쓰는 입장에서 사용 가능하다는 UNDO 내 FREE 공간 부족 시, EXPIRED 공간을 사용하겠다는 의미입니다.

   SNAPSHOT OLD 는 반대로 내 쿼리에서, 보통 장시간 수행되는 쿼리에서 READ 시 필요한 UNDO 정보가 OVERWRITE 되었다는 의미입니다.

나머진 다른분에게 패스 ㅇ.ㅇ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입