TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-14 |
제목 | ROLLBACK SEGMENT 크기를 증가하여 재생성하는 방법 | ||
---|---|---|---|
ROLLBACK SEGMENT 크기를 증가하여 재생성하는 방법
=============================================== ROLLBACK SEGMENT 는 LONG TRANSACTION 을 수행하면 크게 되는 경우가 있다. 확장된 ROLLBACK SEGMENT 는 줄어들지 않게 되므로(OPTIMAL을 지정하지 않는 경우) 주기적으로 재생성하여 TABLESPACE의 FREE SPACE 영역을 확보한다. 1. ROLLBACK SEGMENT 를 OFFLINE 시킨다. ROLLBACK SEGMENT 를 OFFLINE 시키기 위해서는 그 ROLLBACK SEGMENT 가 INACTIVE 상태이여야 하므로 모든 TRANSACTION 을 종료하고 ROLLBACK SEGMENT r01-r04를 OFFLINE 시켜야 한다. SELECT usn, xacts FROM V$ROLLSTAT; SELECT * FROM v$rollname; 을 하여 OFFLINE하고자 하는 ROLLBACK SEGMENT의 XACTS 컬럼을 확인하여 이 값이 0일때만 OFFLINE 하도록 한다. XACTS는 그 ROLLBACK SEGMENT를 현재 사용하고 있는 ACTIVE TRANSACTION의 수이다. SQL> alter rollback segment r01 offline; SQL> alter rollback segment r02 offline; ** r03 ~ r04 도 같은 방법으로 OFFLINE 함. 2. ROLLBACK SEGMENT를 DROP한다. SQL> drop rollback segment r01; SQL> drop rollback segment r02; ** r03 ~ r04 도 같은 방법으로 DROP 함. 3. ROLLBACK SEGMENT 를 생성한다. SYSTEM ROLLBACK 이외에 모든 ROLLBACK SEGMENT 를 DROP 한 경우는 SYSTEM TABLESPACE 에 ROLLBACK SEGMENT 를 한 개 이상 생성 후에 NON-SYSTEM TABLESPACE에 ROLLBACK SEGMENT를 생성해야 한다. SQL> create rollback segment r0; SQL> alter rollback segment r0 online; SQL> create rollback segment r01 tablespace rbs storage(initial 512k next 512k minextents 2); SQL> create rollback segment r02 tablespace rbs storage(initial 512k next 512k minextents 2); ** r03 ~ r04 도 같은 방법으로 생성함. RBS TABLESPACE도 재생성하여 datafile 크기도 증가시켜 다시 만들고자 한다면 다음과 같이 한다. ---------------------------------------------------------------- 1. RBS TABLESPACE를 DROP 하기 위해서는 1-2 과 같이 ROLLBACK SEGMENT를 전부 OFFLINE한다. ROLLBACK SEGMENT 를 OFFLINE할 수 있는 다른 방법은 ORACLE_HOME/dbs/init 부분을 #으로 COMMENT 처리하고 DB를 다시 startup 시키면 된다. SQL> drop rollback segment r01; SQL> drop rollback segment r02; ** r03 ~ r04 도 같은 방법으로 DROP 함. 2. RBS TABLESPACE를 DROP 한다. SQL> drop tablespace RBS including contents; SQL> ! rm /oracle/dbs/rbs 3. RBS TABLESPACE 를 다시 생성한다. SQL> create tablespace RBS datafile '/../oracle/dbs/rbsORA7.dbf' size 50M default storage(initial 512k next 512k); 4. ROLLBACK SEGMENT r0, r01-r04 를 생성한다. SQL> create rollback segment r0; SQL> alter rollback segment r0 online; SQL> create rollback segment r01 tablespace RBS; ** r02 - r04 도 같은 방법으로 생성한다. 5. 위에서 rollback_segments = parameter를 comment(#) 처리하였다면, 다음과 같이 풀고 DB 를 다시 startup한다. 만약 # 처리하지 않고 모두 offline 명령을 수행한 것이라면 이 작업은 필요없다. initSID.ora file 내에서 rollback_segments=(r01,r02,r03,r04) svrmgrl SVRMGR> shutdown SVRMGR> startup 출처 : Technical Bulletin (Korean) |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |