ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [펌] UNDOTBS 재생성
    DBMS/Oracle 2009. 1. 14. 12:51

    long transaction등으로 인하여 undo tablespace가 일단 커지면 줄어들지 않음
    이 경우에는 수동으로 삭제 후 재생성해주어야 함
    다음은 해당 절차임

    * undo tablespace 재생성 방법

     . undo tablespace는 이미 늘어난 파일사이즈를 줄일 수가 없으므로 create -> switch -> drop -> switch의 과정을
       거쳐야 한다.
      
     . 처리 과정
      1) 현재 undo tablespace 확인
       . show parameter undo_tablespace

      2) 대체할 undo tablespace 생성 (작게 만들면 extend하느라 성능 저하되므로 적당한 크기로 생성할 것)
       . CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE
         '/SMS_DB09/oradata/SMS/undotbs02.dbf' SIZE 2000M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;
        
      3) 생성된 undo tablespace 확인
       . select tablespace_name, contents, extent_management from dba_tablespaces where contents = 'UNDO';

      4) undo tablespace 설정된 rollback segment 확인
       . select segment_name, tablespace_name, status from dba_rollback_segs where status = 'ONLINE' order by 2;
      
      5) 새로운 undo tablespace 지정
       . ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS2;
       . 1), 4)번 실행 후 다시 확인
        --> undotbs1이 ONLINE인데도 drop이 됨. 문제 없는지 확인 필요
       
      6) 기존 사용하던 undo tablespace drop
       . DROP TABLESPACE UNDOTBS1;
       
     . (참고) dba_free_space에서 확인된 값 이외에 expire된 undo tablespace는 재사용 가능
      --> select status , sum(bytes) from dba_undo_extents group by status;

     

      7) 기존 UNDOTBS 파일 삭제

      8) init.Ora 사용시에는 undo_tablespace parameter 수정해주어야 함

          . 오라클 shutdown immediate

          . $ORACLE_HOME/dbs/init.Ora 수정 완료

          . 오라클 startup

    [출처] UNDOTBS 재생성|작성자 히트


Designed by Tistory.