티스토리 뷰

참고 :  http://blog.naver.com/it_g_ana?Redirect=Log&logNo=50007846437
 
system 또는 sys 계정으로 로긴하여 다음의 쿼리를 실행해본다.

select sum(pins) "Excutions", sum(reloads) "Cache misses while executing", 
sum(reloads)/sum(pins)*100 "Reload ratio" from v$librarycache;

결과)
< table>
   <tr><td>Excution</td><td>Cache misses while excuting</td><td>Reload ratio</td></tr>
   <tr><td>320871</td><td>549</td><td>0.17(%)</td></tr>
< /table>

*Reload ratio가 0에 가까워야 하고, 1% 이상이면 library cache miss를 줄여야 한다.

sum(reloads)/sum(pins)*100 값을 줄이려면, sum(reloads)수를 줄이거나, sum(pins)수를 늘이면 된다. sum(reloads)를 줄이는 것이 좋겠지만, 맘대로 되지 않는다. sum(reloads)값을 줄이려면, 같은 결과를 얻는 쿼리를 던질때 질의문을 동일하게 사용하는 것이 중요하다.

예를들어,
select * from table;
Select * from table;
select * From table;

등은 모두 같은 결과를 보여주지만, 세개의 쿼리는 모두 다른 것으로 인식되어 캐시에 있는 결과를 이용하지 못하고, 새로 쿼리를 실행하게 된다. 즉, 같은 결과가 예상되는 쿼리는 대소문자를 모두 동일하게 하는 것이 중요하다.

만일, 이렇게 하여 sum(reloads)값을 줄일 수 없는 경우에는 sum(pins)값을 늘려주면 되는데, 이는..
oracle/Admin/SID/pfile 의 initSID.ora 파일에서 shared_pool_size 의 크기를 키워준다. 여기서 SID는 DB마다 다르다. 설치시 정해준 SID를 이용한다.
 
---------------------------------------------------------------------------------------------------------------------------------------------------------
 
참고 : http://damipic.tistory.com/82
 
[ORA-04031] 464 바이트의 공유 메모리를 할당할 수 없습니다.
 
 Oracle SQL Developer로 서버에 접속해서 테이블 정보를 보려고 눌렀더니 계속 ORA-04031이 나오고 있어서 무슨 문제인지 한번 찾아보게 되었다. 

일단 원인은 PL/SQL이나 Procedure 등을 수행할때 shared pool에서 필요한 만큼 연속적인 공간을 찾지 못해서 인 것 같다. sqlplus 로 접속할때도 shared pool 공간이 필요한데 그때도 연속된 공간이 없으면 에러가 나온단다.

관련 파라미터는 SHARED_POOL_SIZE와 SHARD_POOL_RESERVED_SIZE, SHARED_POOL_RESERVED_MIN_ALLOC 등이 있다.

해결방법으로는 
instance restart가 확실하지만 
인스턴스를 내릴 수 없는 상황이면  shared pool flushing 을 해줄 수도 있다.
방법은 alter system flush shared_pool;

-bash-3.2$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 14 13:35:31 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL> alter system flush shared_pool;
System altered.

ㅡㅡ.. 이걸로 안되서 내렸다 올렸습니다.

세크매트  4.데이타베이스의 시작 및 중단은 sqlplus에 접속하여서 수행합니다.($ sqlplus / as sysdba) 
SQL>startup 
중단은 마찬가지로 sysdba로 접속하여서 
SQL>shutdown immediate   

Total
Today
Yesterday
최근에 올라온 글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31