Oracle 에서 다음 순서로 실행했을 때 ㉠ 시점 세션 B 의 SEL… | [SQLD] SQL 개발자 기출유형 모의고사 9회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 9회
Oracle 에서 다음 순서로 실행했을 때 ㉠ 시점 세션 B 의 SELECT 결과로 옳은 것은?
-- 예매번호 10 의 인원은 처음에 2 이다
[세션 A] UPDATE 예매 SET 인원 = 5 WHERE 예매번호 = 10;
[세션 B] SELECT 인원 FROM 예매 WHERE 예매번호 = 10;  -- ㉠
[세션 A] COMMIT;
1
잠금 충돌로 오류가 난다
2
변경 전 값 2 를 읽는다
3
A 가 끝날 때까지 기다린다
4
변경 후 값 5 를 읽는다
해설

Oracle 은 읽기 일관성을 보장해 커밋되지 않은 다른 세션의 변경을 보여 주지 않으므로, 세션 B 는 변경 전 값 2 를 읽는다.

조회는 행 잠금을 기다리지 않고 언두(Undo) 정보로 변경 전 데이터를 만들어 돌려준다.

  • 미커밋 값 5 를 읽는 것은 Dirty Read 로 Oracle 에서는 일어나지 않는다.
  • 잠금은 같은 행을 수정하려는 DML 끼리만 기다리게 한다.
  • 단순 조회는 잠금 충돌 오류를 일으키지 않는다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 9회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기