권순용의 DB 이야기
Shared Pool의 Heap0 메모리 1 0 99,999+

by axiom Shared Pool Heap0 [2014.03.03]


데이터베이스를 운영하다 보면 때때로 매우 복잡한 문제가 발생 할 수 있고, 이런 경우에 데이터베이스 인터널은 매우 중요한 역 할을 수행하게 된다.

이와 같이 데이터베이스 인터널 그 자체로 는 실무에 적용하기가 어렵지만 이를 상세히 이해하고 있다면 문 제가 발생할 경우에 좀더 빠르고 정확하게 분석할 수 있게 된다. 이것이야말로 우리가 계속해서 데이터베이스 인터널을 이해해야 하는 이유로 충분하지 않을까?

이번 강의에서는 데이터베이스의 Shared Pool을 구성하는 Heap0 메모리에 대해 좀더 자세히 확인해 보자.

Shared Pool 아키텍쳐

지난 시간에 이미 Heap0 메모리와 관련해 TYPE과 NAME을 언급했다. 지금부터는 FLAGS와 TABLES에 대해 확인해 보자 ([그림 1] 참조).

  • [그림 1] FLAGS와 TABLES
  • FLAGS와 TABLES

FLAGS

FLAGS는 여러 개의 TYPE이 존재한다. 여러 개의 TYPE은 다음과 같이 구성된다.

  • - Public Flag : Object Type에 대한 상세 지정을 하는 부분으로 PL/SQL등을 표시하게 된다.
  • - Status : 해당 Heap0 메모리의 생성, 변경, 제거, 갱신 등을 표시하는 부분이다.
  • - Special Flag : Object Valid, 권한, Compile Error 정보 및 변경 등을 표현하는 부분이다.

위와 같이 FLAGS는 해당 Heap0 메모리의 상태를 다양하게 표시하게 된다. 이중 Public Flag를 제외한 FLAGS는 Latch에 의해 보호를 받게 된다.

TABLES

Heap0 메모리의 TABLE 영역에서의 관리 항목은 다음과 같 이 구성된다.

  • - DEPENDENCY TABLE : 해당 Object가 실제 참조하는 Object 정보, 예를 들면 View는 View 또는 Table을 참조, Procedure는 Table을 참조 등이며 메모리에서의 Physical Location을 Pointer로 관리한다.
  • - CHILD TABLE : Cursor만이 해당 Table을 관리하며 SQL의 대소문자 또는 Schema에 의해 발생한다. 해당 Child Table의 Handle 정보를 관리한다.
  • - TRANSIATION TABLE : Child Cursor만이 해당 Table을 관리하며 Child Cursor에서 관리하는 Table을 Resolve하기 위해 사용한 Base Object를 의미한다.
  • - AUTHORIZATION TABLE : Object에 정의된 권한을 포함한다.
  • - Access Table : Dependency Table에서 참조하는 Table에 대한 정보를 관리한다. 관리하는 항목은 Access Type과 권한에 대한 정보다.
  • - Read-Only Dependency Table : Dependency Table 중 Read-Only Table에 대한 정보를 관리한다.
  • - Schema Name Table : 권한이 있는 Table의 Object에 대한 Schema Name를 저장하며 Cursor에만 존재한다.

위와 같이 TABLES는 해당 Heap0 메모리에서 관리해야 하 는 Object 등의 정보를 저장한다. 이와 같은 Heap0 메모리의 마 지막 구성요소인 Data Block에 대해 살펴보자.

Heap0 메모리의 Data Block

Heap0 메모리에서 다른 Heap 메모리로 주소 값을 가지는 영 역이다. 해당 Data Block이 주소에 따라 서로 다른 의미를 가지 며 각각의 주소는 다음과 같다([그림 2] 참조).

  • [그림 2] Data Block
  • Data Block

  • - 1 Heap : Object
  • - 2 Heap : Source
  • - 3 Heap : Diana
  • - 4 Heap : MCODE
  • - 5 Heap : ERRORS
  • - 6 Heap : SQL Context
  • - 7 Heap : FREE
  • - 8-11 Heap : Subordinate Heaps

위와 같이 Data Block은 구성된다. 예를 들어 SQL에 대한 Heap0 메모리라면 6번 Heap 메모리 주소를 저장하고 해당 6번 Heap 메모리는 SQL Context를 저장하게 된다.

이와 같이 Heap0 메모리가 어떤 내용에 대한 Handler인지에 따라서 서로 다른 Heap 메모리를 저장하게 된다.

이처럼 Heap 메모리는 여러 개가 존재하며 그 가장 중심에는 Heap0 메모리가 존재한다. Heap0 메모리를 중심으로 Data Block에 필요한 Heap 메모리를 주소로 관리하게 되며 해당 주 소로 이동하면 원하는 Heap 메모리가 존재하게 된다.

- 강좌 URL : http://www.gurubee.net/lecture/2698

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

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