ROLLBACK SEGMENT 크기를 증가하여 재생성 하는 방법

ROLLBACK SEGMENT 크기를 증가하여 재생성 하는 방법
Bulletin no : 10072

——————————————————————————–

  ROLLBACK SEGMENT 는 LONG TRANSACTION 을 수행하면 크게되는 경우가
있다. 확장된 ROLLBACK SEGMENT 는 줄어들지 않게되므로(OPTIMAL을 지정하지
않는 경우) 주기적으로 재생성 하여 TABLESPACE 의 FREESPACE 영역을 확보한다.

1.  SQLDBA 기동한다.
        $ sqldba lmode=y
        sqldba > connect internal

2.  ROLLBACK SEGMENT 를 OFFLINE 시킨다. ROLLBACK SEGMENT 를 OFFLINE
시키기위해서는 그 ROLLBACK SEGMENT 가 INACTIVE상태여야 하므로 모든
TRANSACTION 을 종료 하고 ROLLBACK SEGMENT r01-r04를  OFFLINE 시켜야  다.

      sqldba > alter rollback segment r01 offline;
      sqldba > alter rollback segment r02 offline;
             ** r03 ~ r04 도 같은 방법으로 OFFLINE 함.                    

3.  ROLLBACK SEGMENT 를 DROP 한다.

      SQLDBA > drop rollback segment r01;
      SQLDBA > drop rollback segment r02;
             ** r03 ~ r04 도 같은 방법으로 DROP 함.
              
4.  ROLLBACK SEGMENT 를 생성한다. SYSTEM ROLLBACK 이외에 모든 ROLLBACK
SEGMENT 를 DROP 한경우는 SYSTEM TABLESPACE 에 ROLLBACK SEGMENT 를 한개
이상 생성후에  NON-SYSTEM TABLESPACE 에 ROLLBACK SEGMENT 를 생성해야한다.

      SQLDBA > create rollback segment r0;
      SQLDBA > alter rollback segment r0 online;

      SQLDBA > create rollback segment r01  tablespace rbs
               storage(initial 512k next 512k minextents 2);
      SQLDBA > create rollback segment r02  tablespace rbs
               storage(initial 512k next 512k minextents 2);
             ** r03 ~ r04 도 같은 방법으로 생성 함.
                
5. 데이타베이스를 재  동 한다.

      SQLDBA > shutdown  
      SQLDBA > startup

  RBS TABLESPACE 를 재생성 후 ROLLBACK SEGMENT 를 생성하는 방법
—————————————————————-
6. RBS TABLESPACE를 DROP 하기 위해서는 1-2 과 같이 ROLLBACK SEGMENT를
    전부 OFFLINE를 한다.
    ROLLBACK SEGMENT 를 OFFLINE할수 있는 다른 방법은
      ORACLE_HOME/dbs/init<ORACLE_SID>.ora 화일의 rollback_segments=r01..
      부분을 #으로 COMMENT 처리하고 DB를 다시 startup 시키면 된다.

7. RBS TABLESPACE를 DROP 한다.
    
    SQLDBA> drop tablespace RBS including contents;
    SQLDBA> ! rm /oracle/dbs/rbs<ORACLE_SID>.dbf

8. RBS TABLESPACE 를 다시 생성한다.
    
    SQLDBA> create tablespace  RBS datafile ‘/../oracle/dbs/rbsORA7.dbf’
            size 50M default storage(initial 512k next 512k);

9. ROLLBACK SEGMENT r0, r01-r04 를 생성 한다.
  
    SQLDBA> create rollback segment r0;
    SQLDBA> alter rollback segment r0 online;

    SQLDBA> create rollback segment r01 tablespace RBS;
          ** r02 – r04 도 같은 방법으로 생성한다.

10.  1 에서 COMMENT 처리했던 부분을 다음과 같이 풀고 DB 를 다시 startup
     한다.

      rollback_segments=r01,r02,r03,r04
    
     SQLDBA> shutdown
     SQLDBA> startup

  ORA-1562 조치 방법
——————————
  RBS TABLESPACE 영역이 부족한경우 8 번 과 같이 TABLESPACE를 더큰 크기로
다시 생성 할수 있지만 DATAFILE을 추가하여 영역을 확장하는 방법이 있다.

11. RBS TABLESPACE 영역 확장
  
    SQLDBA> alter tablespace RBS add datafile ‘/oracle/dbs/rbs2ORA7.dbf’
            size 50M;

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.