source

ORA-04036: 인스턴스에서 사용하는 PGA 메모리가 PGA_AGGRATE_LIMIT를 초과합니다.

factcode 2023. 11. 5. 15:01
반응형

ORA-04036: 인스턴스에서 사용하는 PGA 메모리가 PGA_AGGRATE_LIMIT를 초과합니다.

팀원 중 한 명이 오라클 텍스트 인덱스를 만드는 중에 ORA-04036(12c)을 우연히 발견했습니다.

ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
ORA-00039: error during periodic action
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 366

저의 경우 지수(또는 다른 병렬 연산)를 생성하는 동안 매우 높은 병렬도 48(너무 많은 세션과 PGA 증가가 필요함)로 인해 실패했습니다.우리는 이것을 피하기 위해 평행성을 줄이려고 노력해야 합니다.DOP 8 스크립트를 성공적으로 실행했습니다.

Oracle Database 12c에서 PGA_AGGRATE_LIMIT라는 새로운 매개 변수는 인스턴스가 차지하는 PGA의 양에 대해 엄격한 제한을 설정합니다.이 경우 모든 세션이 차지하는 전체 PGA가 제한을 초과하면 오라클은 가장 불안정한 PGA 메모리를 보유한 세션을 삭제하고 해당 세션이 보유한 PGA 메모리를 모두 해제합니다.그 살해된 세션은 이 메시지를 받습니다.

새로운 Oracle 오류 ORA-4036을 기록합니다.이것은 조정되지 않은 쿼리를 발행하는 세션을 통해 폭주하는 PGA 소비를 제어하는 데 매우 유용한 기능입니다.매개 변수 pga_aggregate_limit는 명시적으로 정의되지 않은 경우 이 세 가지 숫자 중 큰 값으로 기본 설정됩니다. 2GB 3MB 프로세스 매개 변수 값의 2배 매개 변수 pga_aggregate_target. 그러나 이 제한은 총 SGA 크기를 제거한 후 총 물리적 메모리의 1.2배를 초과하지 않습니다.이 새로운 기능이 마음에 들지 않고 이전(12c 이전)의 동작으로 돌아가고 싶으십니까?물론입니다. pga_aggregate_limit 값을 0으로 설정하면 매개 변수가 아무런 영향을 주지 않습니다.

SO에서 아직 찾을 수 없어서 커뮤니티 독자들에게 도움이 되는 답변을 게시합니다.자세한 내용은 이 을 참조하시기 바랍니다...

저도 비슷한 문제가 있어서 다음과 같이 해결했습니다.

다음을 사용하여 현재 pga_aggregate_limit가 무엇인지 확인합니다(변경 사항을 되돌리려는 경우).

show parameter pga_aggregate_limit;

다음을 사용하여 pga_aggregate_limit를 0으로 설정합니다.

alter system set pga_aggregate_limit = 0; 

자세한 정보는 여기에서 확인할 수 있습니다.

http://www.dba-oracle.com/t_pga_aggregate_limit.htm

https://docs.oracle.com/database/121/REFRN/GUID-E364D0E5-19F2-4081-B55E-131DF09CFDB3.htm#REFRN10328

언급URL : https://stackoverflow.com/questions/42855051/ora-04036-pga-memory-used-by-the-instance-exceeds-pga-aggregate-limit

반응형