Oracle이가 응답하지 않는다. wait, latch, lock and ...

시발점

nexacro(+fsp)+oracle 11g로 돌아가는 시스템이 있는데 종종 아주 느려진다. 무슨일?

상세

  • 가끔 이것저것 조인된 뷰를 땡기면 멈춤
  • 해당 페이지 뿐만 아니라 시스템 전체가 스턱-
  • 시스템 자원(CPU/Memory)가 몹시 많이 남아있음
  • DB자원도 많이 남아 있음
  • 해당 DB를 쓰는 다른 시스템들은 정상 동작 => 추정 : 해당 프로그램에서 쓰는 테이블에 락이 걸리나? => DB락은 무엇인가?

latch

latch는 oracle내부 메모리에 대한 잠금을 보장하는 도구. 하나의 프로세스가 하나의 랫치를 가져서 무결성을 보장함 cache buffers chains latch는 읽기 전용시 공유 가능

IPC vs Latch?

리눅스 IPC와 비교해보면

  • 리눅스 IPC : 프로세스-세마포어-쉐어드메모리
  • 오라클 : 프로세스-랫치-a

메모리 구조

pid(래치를 쥐고 있는 프로세스), memoryaddress(래치가 관리하는 메모리 주소), length(메모리 길인가? 크기?)

주요 대기 이벤트

  • cache buffers chains : shared cache에 대한 이슈

lock

lock도 latch도 아닌

수행 시간이 긴 세션에 대한 데이터를 모을 필요가 있다 lock도 latch도 아닌 상태

  • v$session : 세션 정보
  • v$session_wait : wait 세션에 대한 정보. 현재 세션 뿐만 아니라 전체 통계

참조

  1. latch and lock : https://simpledb.tistory.com/m/3?category=941840