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;