Database/Oracle2012. 7. 10. 12:58

--undo tablespace
select name, value
from v$parameter
where name in ('undo_management', 'undo_tablespace');

--undo segments
select owner, segment_name, tablespace_name
from dba_rollback_segs
order by 3;

-- undo관련 parameter
SELECT NAME, VALUE, DESCRIPTION
FROM V$PARAMETER
WHERE NAME LIKE '%undo%';

--undo guarantee 확인
select tablespace_name, retention
from dba_tablespaces
where tablespace_name = 'UNDOTBS1';
--undo guarantee mode 변경
--alter tablespace undotbs1 retention guarantee;
--alter tablespace undotbs1 retention guarantee;

--undo 관련 상태 정보
select *
from V$UNDOSTAT;


-- 아래는 초당 생성되는 undo block수를 알 수 있는 공식입니다.
-- 생성되는 전체 block의 수를 계산하여 모니터되는 시간(초)으로 나눕니다.
SELECT (SUM(undoblks)/SUM (((end_time-begin_time)*86400)))
FROM V$UNDOSTAT;
 

-- END_TIME 과 BEGIN_TIME 은 DATE형이기 때문에 뺄셈을 수행하면
-- 결과가 날짜로 표시됩니다. 그러므로 날짜를 초로 변환하려면
-- 하루를 초로 계산한 86400을 곱합니다.


-- 완성된 SQL문장
SELECT ROUND(((UR * (UPS * DBS)) + (DBS * 24)) / 1000000000, 2) AS "GB"
FROM (
    SELECT value AS UR
    FROM V$PARAMETER
    WHERE name = 'undo_retention'),
  (
    SELECT (SUM(undoblks)/SUM(((end_time-begin_time)*86400))) AS UPS
    FROM V$UNDOSTAT),
  (
    SELECT value AS DBS
    FROM V$PARAMETER
    WHERE name = 'db_block_size');
 

 

Posted by 아로나