JAKARTAPROJECT
JAKARTA TIPJSP TIPJSP 질문&답변DATABASE TIPJAVASCRIPT TIPWEBHACKING TIP기타 TIP
데이터베이스 팁
데이터베이스 팁
데이터베이스 팁 게시판 입니다
ORA-04031 에러 대처법 및 예방법
GoodBug http://www.jakartaproject.com
이미지 슬라이더 보기

ORA-04031 에러

 

Oracle SGA의 Shapred Pool 영역에 Library Cache 가 있습니다

이곳에는 최근 실행된 SQL이나 PL/SQL, PACKAGE 등이 컴파일 된 채로 남아 있습니다

정확히 예기해서 이 하나하나를 Context Area(SQL TEXT + P-CODE(컴팔된 코드) + Execution Plan)이라 부르며 동일한 SQL이 실행시 이영역을 참조해서 동일한 Context Area가 있으면 구문분석 없이 이를 재사용 하는것입니다

 

처음 데이터베이스가 스타트업 된 후로 하나하나 저장된 Context Area는 메모리 단편화를 만들어 내며, 이는 PC 하드디스크의 조각모음될수 있는것과 반대로 한번 단편화 되면 절대 복구되지 않습니다

시간이 지나다 보면 LRU (Least Recently Used 가장 오래동안 사용되지 않은것을 선택) 알고리즘으로 Library Cache가 잘 사용되다가 갑자기 큰 Object가 들어오게 되면 할당할 수 있는 단편화된 공간이 없어서 ORA-04031 에러가 발생합니다

 

간단하게 예기하자면

단편화된 메모리로 인해 공간이 부족해서 나타나는 오류입니다

 

해결방법

 -. 오라클 리부팅

    -> 이는 Shared Pool 자체를 초기화 함으로 단편화된 Library Cache를 clear 한다

 -. ALTER SYSTEM FLUSH SHARED_POOL 명령어

    -> Shared Pool에 KEPT된 대형객체 나 Pinned된 Object들을 제외하고 Shared Pool을 비웁니다

 

대처방안

 -. shared_pool_reserved_size 파라미터를 설정하여 큰 Object들은 큰영역에서 놀도록 유도해야 한다

     크기는 SHARED_POOL_SIZE의 10% 가량이 적당하며 50%를 넘을 수 없다

 -. 대형 오브젝트들은 미리 Keep 시켜 Age out되지 않도록 합니다

 

     EXECUTE dbms_shared_pool.keep('대형객체명');

    

     데이터베이스 시작 시간에 keep 하는것이 좋으며 이를 제거하는것은 unkeep으로 합니다

     dbms_shared_pool 생성 방법은

 

     SQL> @$ORACLE_HOME/rdbms/admin/dbmspool.sql

     SQL> @$ORACLE_HOME/rdbms/admin/prvtpool.plb  (dbmspool.sql 에서 마지막에 호출합니다)  

     SQL> GRANT EXECUTE ON DBMS_SHARED_POOL TO user_name ;

     SQL> exec dbms_shared_pool.keep('객체명');

     등으로 하면 됩니다

 

라이브러리 캐시에서 keep되지않고 유지되지 않은 PL/SQL 객체 찾기

 

SELECT *

FROM v$db_object_cache

WHERE sharable_mem > 100000

AND type in ('PACKAGE', 'PACKAGE BODY', 'FUNCTION', PROCEDURE')

AND kept = 'NO' 

 

 

2007-09-17 18:31:20
211.189.124.***

 

좋은생각 ^^

0점 (0명)
덧글 0개 | 태그 1개 | 관련글보기
태그입력
쉽표(,)구분으로 한번에 여러 태그를 입력할수 있습니다
오라클튜닝 (8)
이름 비밀번호
데이터베이스 팁
데이터베이스 팁 게시판 입니다
! 번호 제목 글쓴이 일자 조회
181 import DB 부분적인 데이터 export / import 방법 2 kaiser 2008-12-29 7,760
180 NOT IN NOT EXISTS not in 과 not exists의 개념 이해 1 kaiser 2008-12-17 19,545
179 IP 접속자 아이피 보기 1 GoodBug 2008-06-27 9,416
178 meta 오라클 스키마 스크립트 받기 1 GoodBug 2008-06-05 19,812
177 ORA-00054 ORA-00054: resource busy and acquire with NOWAIT specified 1 GoodBug 2007-10-27 13,021
176 한글 MYSQL 서버 캐릭셋이 EUCKR이 아닐경우 클라이언트 설정 1 GoodBug 2007-10-09 8,316
175 archive 아카이브 성능 향상 1 GoodBug 2007-10-02 7,910
174 Dictionary Dict table 1 GoodBug 2007-10-02 7,196
173 오라클튜닝 redo log file 구성 모니터 1 GoodBug 2007-09-20 7,874
172 dictionary 자주쓰는 딕셔너리 정보 1 1 GoodBug 2007-09-20 8,315
171 TableSpace Tablespace 별 사용량 확인 1 GoodBug 2007-09-20 8,601
170 오라클 체크포인트 관련 파라미터 2 GoodBug 2007-09-20 7,380
169 오라클튜닝 테이블 스캔 통계 1 GoodBug 2007-09-19 7,233
168 오라클튜닝 v$filestat로 디스크 I/O 를 확인해보자 1 GoodBug 2007-09-19 10,214
오라클튜닝 ORA-04031 에러 대처법 및 예방법 1 GoodBug 2007-09-17 13,682
166 오라클튜닝 DB_FILE_MULTIBLOCK_READ_COUNT 1 GoodBug 2007-09-17 7,242
165 TableSpace TableSpace 관리 (Dictionary, Locally) 1 GoodBug 2007-09-16 7,742
164 오라클튜닝 문제해결 및 튜닝 관련 뷰 2 GoodBug 2007-09-16 7,666
163 segment 오라클 SEGMENT 1 GoodBug 2007-09-16 8,597
162 startup 오라클 startup시 단계별 오픈 파일 1 GoodBug 2007-09-16 7,504
copyright 2005-2018 by Unicorn