태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Snapshot Too Old 에러와 SCN_ASCENDING 힌트

오라클 2009.04.10 15:39
얼마전 영문 블로그를 통해 Snapshot Too Old 에러를 바라보는 새로운(?) 관점을 다룬 바 있었다.

http://dioncho.wordpress.com/2009/04/04/rethinking-on-ora-01555-error/

Snapshot Too Old 에러와 관련해 한 가지 놀라운 소식을 들었다. 11.1.0.7(또는 10.2.0.4)부터는 Table Full Scan에 대해서는 이 에러를 무시할 수 있다는 것이다. 이것을 가능하게 하기 위해 SCN_ASCENDING 힌트가 추가되었다.

아래 블로그에 설명과 함께 상세한 테스트 결과가 공개되어 있다.

http://oracle-randolf.blogspot.com/2009/04/read-consistency-ora-01555-snapshot-too.html

비록 Table Full Scan에 대해서만 사용할 수 있다는 것이 아쉽기는 하지만, 그래도 Oracle 개발팀에서 이런 결정을 했다는 것이 놀라울 뿐이다.

무려 20여년 동안 Oracle은 이 문제를 해결하기 위해 Undo의 관리 기능을 끊임없이 개선시켰을 뿐, Read Consistency의 기본 원칙을 한번도 위배한 적이 없기 때문이다. 이 힌트의 추가로 예외 사항이 생긴 셈이다.

나쁘게 말하면 Oracle의 굴욕이라고 할 수 있지 않을까? 이 참에 아예 Read Dirty Isolation Level을 추가해주는 것은 어떨까?


신고
Trackback 0 : Comments 2
  1. 이민규 2009.05.20 17:40 신고 Modify/Delete Reply

    영문 블로그에서 case A 에서 cr=0 인데... ora-1555 에러가 유발 되려면 실제로 테이블 데이타 블럭에 엑세스 하여 undo 정보를 찾은 다음 해당 undo를 조회 하는 시점에 문제가 발생 되는것으로 알고 있습니다.
    이 경우라면 데이블 데이타 엑세스 없이 undo를 바로 조회한 것인데 이해가 안됩니다.

  2. 욱짜 2009.05.20 19:38 신고 Modify/Delete Reply

    Case A에서 Consistent Read가 0인 이유는 Rollback을 하다가 실패했기 때문입니다.

    Oracle이 Consistent Read가 1 증가했다고 보고하는 것은 Query SCN에 맞는 CR Block을 성공적으로 만들어서, 즉 Rollback을 수행한 후 해당 CR Block을 읽었다는 의미입니다. (단, Rollback할 필요가 없는 경우, 즉 현재 Block이 SCN을 만족하는 경우에는 Rollback 과정없이 Consistent Read가 1증가합니다)

    Case A에서는 CR Block을 만드는 과정에서 ORA-01555 에러를 만났기 때문에 CR=0으로 보고된 것으로 보면 될 것 같습니다.

Write a comment

티스토리 툴바