Almost-Native

오라클 MGA (Managed Global Area) 메모리 영역 본문

Java 프로그램 개발, IT

오라클 MGA (Managed Global Area) 메모리 영역

2021. 12. 16. 22:24

Oracle Database 가 사용하는 메모리 영역으로는 전통적으로 SGA 와 PGA 영역이 있습니다.

SGA 는 System Global Area 로 모든 오라클 프로세서들이 공유해서 사용하는 영역으로 Data Buffer Cache 도 이 안에 들어 있습니다.

PGA 는 Private Global Area 로 개별 프로세서들이 사용하는 독립적인 메모리 공간입니다.

 

Oracle 12cR2 버전부터 Global Area 가 하나더 생겼습니다.  MGA (Managed Global Area) !!

별도의 Global Area 이기 때문에 SGA, PGA 와는 별개의 영역입니다.

MGA 의 특징은 DBA가 이 영역을 임의로 설정하는게 아니라 자동으로 프로세서들에 의해 생성되었다가 삭제된다는 것입니다. 병렬처리 프로세서, In-memory 프로세서 등이 사용하는 것으로 알려져 있습니다.

Parallel Hash Join 의 경우 병렬 프로세서들이 이 MGA 영역을 공유해서 사용함으로서 성능을 크게 향상시킨다고 합니다.

 

MGA 는 자동으로 관리되기 때문에 DBA가 명시적으로 메모리를 지정해서 할당할 필요는 없습니다.

하지만, Linux의 경우 /dev/shm (공유메모리) 파일시스템을 사용하기 때문에 /dev/shm 파일시스템이 mount 되어 있어야 하고, 마운트되어 있지 않으면 ORA-27779 에러가 발생합니다.

 

MGA 관련된 에러는 ORA-00461 ~ ORA-00468, ORA-27778, ORA-27779 가 있습니다.

 

$
$ oerr ora 461
0046100000"MGA namespace already opened."
// *Cause: Managed Global Area(MGA) namespace was already opened.
// *Action: None.
$
$ oerr ora 462
0046200000"MGA namespace shared handle not valid."
// *Cause: Managed Global Area(MGA) namespace shared handle was not valid.
// *Action: None.
$
$ oerr ora 468
0046800000"Not attached to MGA handle."
// *Cause: There was no attachement to the Managed Global Area(MGA) handle.
// *Action: None.
$
$ oerr ora 27778
2777800000"MGA namespace is already marked for deletion."
// *Cause: Managed Global Area (MGA) namespace was already marked for deletion.
//         No further attaches are allowed.
// *Action: None.
$
$ oerr ora 27779
2777900000"MGA segment creation failure"
// *Cause: The Managed Global Area (MGA) segment creation failed.
// *Action: Check the other error messages for additional information.
$
 

 

MGA 개념이 12cR2 버전부터 추가되면서 Oracle 18c, 19c 에서는 관련 버그가 꽤 있습니다.

따라서 가급적 최신 버전을 사용하는 것이 좋습니다. 19c 의 경우 최소한 19.9 이상의 버전을 사용하는 것이 좋습니다.

 

Comments