행위

"오라클 메모리"의 두 판 사이의 차이

DB CAFE

48번째 줄: 48번째 줄:
 
SQL> shutdown immediate;
 
SQL> shutdown immediate;
 
SQL> startup;
 
SQL> startup;
 +
</source>
 +
 +
=== 사용자별 사용하는 메모리 ===
 +
<source lang=sql>
 +
select sess.username  as username
 +
      ,sess.sid      as session_id
 +
      ,sess.serial#  as session_serial
 +
      ,sess.program  as session_program
 +
      ,sess.server    as session_mode
 +
      ,round(stat.value/1024/1024, 2) as "current_UGA_memory (in MB)"
 +
  from v$session    sess
 +
      ,v$sesstat    stat
 +
      ,v$statname  name
 +
  where sess.sid        = stat.sid
 +
    and stat.statistic# = name.statistic#
 +
    and name.name      = 'session uga memory'
 +
    -- and sess.username  = 'MY_USERNAME' -- your user/schema name
 +
    -- and stat.value      >= 10485760  -- (All Session Usage > 10MB)
 +
order by  value;
 +
 
</source>
 
</source>

2021년 5월 7일 (금) 17:46 판

thumb_up 추천메뉴 바로가기


1 오라클 메모리 확인[편집]

1.1 DB 메모리 (연결된 프로세스가 사용중인 추정치)[편집]

  • SGA + PGA = EST MEMORY REQUIREMENT FOR CURRENT CONNECTIONS

1) SGA

SELECT sum(value)/1024/1024 "TOTAL SGA (MB)" 
  FROM v$sga;

2) PGA

select sum(pga_max_mem)/1024/1024 "TOTAL MAX PGA (MB)" 
  from v$process;

2-1) PGA 상세

SELECT spid, program
     , pga_max_mem      max
     , pga_alloc_mem    alloc
     , pga_used_mem     used
     , pga_freeable_mem free
FROM V$PROCESS;

1.2 미연결된 세션 요청 메모리 추정치[편집]

아래 쿼리는 사용자 세션에 의해 할당 된 최대 메모리 입니다. 이를 사용하여 연결되지 않은 프로세스의 남은 메모리 요구 사항을 계산합니다.

select max(p.pga_max_mem)/1024/1024  PGA_MAX_USER_SESS -- " PGA MAX MEMORY OF USER SESSION(MB)"
  from v$process p
     , v$session s
 where P.ADDR = S.paddr 
   and s.username is not null;

1.3 메모리 변경 후 작업 절차[편집]

1) 메모리 변경 -- 메모리 자동 관리하도록 확인/변경

SQL> show parameter target;

ALTER SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;

2) DB 재시작

SQL> shutdown immediate;
SQL> startup;

1.4 사용자별 사용하는 메모리[편집]

select sess.username  as username
      ,sess.sid       as session_id
      ,sess.serial#   as session_serial
      ,sess.program   as session_program
      ,sess.server    as session_mode
      ,round(stat.value/1024/1024, 2) as "current_UGA_memory (in MB)"
  from v$session    sess
      ,v$sesstat    stat
      ,v$statname   name
  where sess.sid        = stat.sid
    and stat.statistic# = name.statistic#
    and name.name       = 'session uga memory'
    -- and sess.username   = 'MY_USERNAME' -- your user/schema name
    -- and stat.value      >= 10485760   -- (All Session Usage > 10MB)
order by   value;