HOME   로그인   회원가입
    
회원가입
비밀번호 찾기 자동로긴
이전게시판
   free_board
   건강게시판
   오라클DB
   Linux
   HTML/javascript
   질문과 답
호서기
   이미지게시판  
   건강게시판  
   음악자료  
   성준이 게시판  
[일반] 오라클 8i ORA-00604 ,ORA-04031 에러 처리
  호석 님께서 쓴 글입니다 - 211.♡.74.31 읽음:7058  
ERROR:
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 4048 bytes of shared memory ("shared
pool","TRIGGER$SYS","sga heap","state objects")
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 4048 bytes of shared memory ("shared
pool","unknown object","sga heap","state objects")

오라클 817의 버그라는 군여
그래서 패치를 해야 한답니다...
아니면.. 파라미터에
_db_handles_cached = 0
을 추가해 주면 해결된다는데요...

*************************************************************************************************************************


ORA-04031 에러 - 2 ORACLE 
2004/12/20 17:05

http://blog.naver.com/simonkbj/40008950855
 
오늘 이 에러땜에 고생했다.(2004년 12월 20일)

에러 원인은 아래로 짐작된다.

 --> BUG 1397603: ORA-4031 / SGA memory leak of PERMANENT memory occurs for buffer handles. (Workaround: _db_handles_cached=0, Fixed: 8172, 901 )

sga_pool_size는 196MB 였으나, 에러시 상황은 shared pool free memory가 10,056,464였고

shared pool miscellaneous은 182,395,936로 free Memory 부족으로 ORA-04031: unable to allocate 4064 bytes of ... 의 에러가 계속 해서 나고 있었다. 결국 Oracle Restart로 일단 상황은 해결했으나 patch 를 하지않는 이상 한달 정도 후에 같은 에러가 다시 날것으로 예상된다. shared pool miscellaneous 가 계속해서 증가 하고 있는 상황이다. 다음 에러시 _db_handles_cached=0 옵션을 적용해 볼 예정이다. T.T (폭탄을 들고 가야하나...)

아래는 ORA-04031에러에 대한 내용

출처 : http://oracle.mania.co.kr/board/content.asp?code=tuning&number=2&page=1&ref=2&startpage=1

----------------------------------------------------------------------------------------

linux든 aix든
oracle 8.1.7에서
간혹 ORA-04031 이란 error를 접했을 수 있습니다.

+++++++++++++++++++++++++++++++++
ORA-04031: unable to allocate 4096 bytes of shared
memory ("shared pool","....

Error accessing package DBMS_APPLICATION_INFO
ERROR:
ORA-04031: unable to allocate 4096 bytes of shared
memory ("shared pool","BEGIN ....
+++++++++++++++++++++++++++++++++
이런 경우에 몇가지 검토해 봐야 합니다.

정말로 shared_pool size가 작은 것인지....

작지 않은데도 이런 문제가 발생한다면
이는 oracle 자체의 bug으로 보셔야 합니다.

즉 8.대에서 8i로 넘어가면서 block handle 방식이 바뀌면서
8i에서는 sh쪽에서 사용한 block을 release시키지 않는
오류가 있어서 부족하다는 메세지가 나오게 됩니다.
이를 위해선
최소 8.1.7.2 로 patch를 적용하는게 제일 좋고,
이게 무리수라면

_db_handles_cached=0

를 이용하면 block handle방식을 8.대의 방식으로 전환하는
것으로 이해하면 됩니다만 release문제를 해결할수 있습니다.

이로 인한 성능 저하는 아직 보고된바 없다고 합니다.

저는 linux에서 2001년도에 발생해 적용해서
아직 재부팅 한번만 할 정도로 안정적으로 운영하고 있고
오늘 aix에서도 발생하여 적용했습니다. 



************************************************************************************

ORA-04031 에러 : 메모리 단편화 | [Q&A]데이터베이스  2005.09.21 11:56 
 
do82ng   http://cafe.naver.com/dbaclub/4 
 
 
 
ERROR:
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 4048 bytes of shared memory ("shared
pool","TRIGGER$SYS","sga heap","state objects")
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 4048 bytes of shared memory ("shared
pool","unknown object","sga heap","state objects")

DB를 관리하면서 다음과 같은 에러를 직면할때가 있느데 이럴 경우에는 신속하게
대처할 수 있는 방법
  1. 오래된 세션을 끊어서 shared pool 에 잡고 있는 메모리를 해제 시켜준다.
  2. alter system flush shared_pool; 명령어를 통해 메모리 조각모임을 해준다.
장기적인 대책은
  단편화 시키는 SQL를 찾아내고 바인딩 변수화 시킨다.

ORA-04031 의 경우 shared pool 내에 메모리 조각화에 따라서 연속된 parsing 공간을 제공하지 못하기 때문에 발생하는 에러입니다.
다시 말해서 parsing 에러가 발생하는 것입니다.

이를 해소 해주기 위한 방법으로
개체가 큰 자주 사용되는 프로시져등을 메모리에 pined 해주면 되며,
shared pool 사이즈를 늘려 주는것이 가장 좋으며,
상황이 여의치 않는 경우 단편화된 shared pool 의 조각화을 다시 flush 해주는 방법
등이 있습니다.



SQL> alter system flush shared_pool;

shared pool 의 hit 율을 잘 분석해 보시고 오라클의 권장사항에 따라서 튜닝 가이드 라인을 정하는게 중요합니다.

너무 크게 줘서 free size 가 너무 많이 남는 경우 즉 hit 율은 좋은데, free size 가 너무 큰 경우는 메모리 낭비를 하게 되며, 각각의 o/s 에 따라서  paging 이나 swap 이 발생할 가능성이 있으니, 튜닝후 적적할 모니터를 통해서 사이즈를 잡아 가는 것이 좋습니다.

SQL> select name, bytes/1024/1024 "Size in MB" from v$sgastat where name='free memory';

NAME                       Size in MB
-------------------------- ----------
free memory                451.496498
free memory                  .5859375
free memory                    .03125

즉 오라클의 동적 뷰들의 대부분은 current 한 내용이 아닌 축적용으로 평균치를 나타 내기 때문에 의미가 없습니다.


목록

분류 선택
69 일반 오라클에서 pfile과 spfile의 특징 호석 07-03-09 4553
70 일반 RHEL4 리눅스에서 오라클설치 ★★★★★ (1) 호석 07-03-09 5003
71 일반 ORA-27123 에러 메타링크 참조 호석 07-03-19 4736
72 일반 ORU-10027 에러 -> dbms_output.enable('10000000000') 사용 호석 07-03-19 4418
73 일반 오라클 커널 shared max 값 적용하기 호석 07-03-26 4272
74 일반 decode 활용쿼리 비교연산자 대용 sign() 호석 07-03-29 4919
75 일반 [펌]롤백 세그먼트 , 템포러리 세그먼트 다루기 호석 07-04-04 4592
76 일반 undotbs01가 너무 커졌을 경우 초기화 오라클 9i 호석 07-04-04 5366
77 일반 오라클에서 임의로 범위의 날짜를 가져오는 쿼리문 호석 07-04-05 4545
78 일반 [sql] select case when then 를 이용한 쿼리문 호석 07-04-26 6566
79 일반 oracle10g + php5.1.2 error [OCIEnvNlsCreate() failed] 호석 07-04-27 7901
80 일반 mysql DB 및 사용자 생성 (1) 호석 07-05-18 4696
81 일반 오라클 8i DB 재시작 호석 07-06-12 4741
일반 오라클 8i ORA-00604 ,ORA-04031 에러 처리 호석 07-06-12 7059
83 일반 개발자가 범하기 쉬운 튜닝 이슈 10가지 유형 분석 호석 07-06-22 5836
처음이전  [1] [2] [3] [4] [5] [6] 7 [8] [9] [10]  다음맨끝

 
Copyright © zenos.pe.kr. All rights reserved.