본문 바로가기

닷컴's_열공/Database

UNDOTBS 재생성

UNDOTBS 재생성  ORACLE 

2008/01/29 16:24

복사http://blog.naver.com/hyperhit/90027231833

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 재생성|작성자 히트