반응형

-- PENDING OFFLINE 걸린 SEGMENT 조회
  select name, xacts ACTIVE_TRANSACTIONS FROM
  v$rollname, v$rollstat where status = 'PENDING OFFLINE' and v$rollname.usn = v$rollstat.usn;
 
  -- 특정 ROLLBANK 네임으로 검색
  SELECT S.SID
       , S.USERNAME
    FROM V$ROLLNAME R
       , V$TRANSACTION T
       , V$SESSION S
   WHERE R.NAME = '_SYSSMU26_3785803917$'
     AND T.XIDUSN = R.USN
     AND S.SADDR  = T.SES_ADDR;
    
    
  -- 전체 ROLLBACK 검색 (나온 SID를 KILL 해주면 정상 복구)
  SELECT S.SID
       , S.USERNAME
    FROM V$ROLLNAME R
       , V$TRANSACTION T
       , V$SESSION S
   WHERE R.NAME IN
         (
            select name FROM
                v$rollname, v$rollstat where status = 'PENDING OFFLINE' and v$rollname.usn = v$rollstat.usn
         )
     AND T.XIDUSN = R.USN
     AND S.SADDR  = T.SES_ADDR
     ;
    
  -- ROLLBACNK 상태 검색 
  select * from v$rollstat;    
 
  -- 특정 ROLLBACK 세그먼트 ONLINE
  alter rollback segment "_SYSSMU16_678252039$" online;
 
  -- 롤백 세그먼트 rbs 테이블 스페이스 크기 확인
  SELECT FILE_NAME, BYTES
    FROM DBA_DATA_FILES
   WHERE TABLESPACE_NAME = 'RBS';
  
 
 
  SELECT * FROM DBA_ROLLBACK_SEGS;
 
  -- 언두를 1G 추가 
  alter tablespace UNDOTBS1 add datafile '/u02/data/undotbs2.dbf' size 1000M;

반응형
반응형

결정 요소 : UNDO_RETENTION, DB_BLOCK_SIZE, 초당 생성되는 UNDO 데이터 블럭 수

SELECT SUM(UNDOBLKS)/SUM((EDN_TIME-BEGIN_TIME)*86400) FROM V$UNDOSTAT;

==> 초당 UNDO 데이터 블럭 수

 

SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"

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');

반응형
반응형

얼마전 UNDO TABLESPACE SIZE 가 비대하게 늘어나 ONLINE 중에 이를 줄이는 작업이 있었습니다.

다음과 같이 UNDO TABLESPACE 를 추가로 하나 만들고 SWITCH 하는 방법으로 ONLINE 에 영향 없이 UNOD SIZE 를 줄일수 있습니다.

참고하세요

1. UNDO TABLESPACE 생성

create undo tablespace UNDOTBS2 datafile '/dev/vx/rdsk/dg_us2db06/df_pusdb2_16g_0085' size 16384m;

 

2. UNDO DATAFILE 추가

alter tablespace UNDOTBS2 add datafile  '/dev/vx/rdsk/dg_us2db06/df_pusdb2_16g_0085' size 16384m ;

 

3. AUTOEXTED ON 으로 변경

alter database datafile /dev/vx/rdsk/dg_us2db06/df_pusdb2_16g_0085' autoextend on maxsize 16384m;

4. UNDO TABLESPACE SWITCH  

alter system set undo_tablespace = UNDOTBS2

5. 기존 UNDO TABLESPACE 삭제

drop tablespace UNDOTBS1;

6. 기존 이름으로 UNDO TABLESPACE RENAME  ( TABLESPACE RENAME 은 10G 이후에서 가능 )

 alter tablespace UNDOTBS2 rename to  UNDOTBS1;

PS : 만약 기존UNDO TABLESPACE 명이 새로운 UNDO TABLESPACE 로 변경이된다면 반드시 INIT 파라미터에서 UNDO 파라미터값 변경해야합니다.

반응형

+ Recent posts