Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-13
제목 [ORACLE9I] UNDO TABLESPACE를 변경하는 방법

[ORACLE9I] UNDO TABLESPACE를 변경하는 방법
===================================



PURPOSE
-------
Oracle9i에서 Undo tablespace를 auto mode로 사용할 때, UNDO Tablespace를
변경하는 방법을 알아보자.


Explanation
-----------
종종 UNDO Tablespace를 변경해야 하는 경우가 있다. 예를 들어 Undo
tablespace의 datafile size가 너무 커진 경우는 datafile의 size를 줄일
수 없다. 그래서 새로운 undo tablespace를 만들어서 database에 지정된
undo tablespace를 변경해야 한다.


1. 새로운 undo tablespace를 다음과 같이 생성한다.

CREATE UNDO TABLESPACE UNDOTBS2
DATAFILE '/home/oradata/undotbs.dbf' SIZE 100M;

2. undo tablespace의 이름을 변경하려면 다음과 같이 실행한다.

ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS2;

3. 기존에 사용하던 undo tablespace를 drop 한다.

DROP TABLESPACE UNDOTBS1;

4. spfile이 아니고 initSID.ora file을 사용하는 경우에는 initSID.ora
file에 undo_tablespace parameter의 값을 새로운 undotbs2로 변경시킨다.


Example
-------

예를 들어 기존에 사용하던 UNDO tablespace가 가진 datafile의 size가
너무 크게 늘어나서 새로운 undo tablespace로 변경하는 방법을 알아보자.

1. 우선 현재의 undo tablespace name을 확인한다.

SQL> show parameter undo_tablespace

NAME TYPE VALUE
------------------------------------ ----------- ----------------
undo_tablespace string UNDOTBS


2. UNDOTBS와 대체할 새로운 undo tablespace를 생성한다.
그때 아래와 같이 자동으로 늘어나되, maximum size를 지정할 수 있다.

SQL> create undo tablespace undotbs2
2 datafile '/home/oradata/undotbs2.dbf' size 10m
3 autoextend on maxsize 100m;


3. 생성된 undo tablespace를 확인한다.

SQL> select tablespace_name, contents, extent_management
2 from dba_tablespaces
3 where contents = 'UNDO';


TABLESPACE_NAME CONTENTS EXTENT_MAN
------------------------------ --------- ----------
UNDOTBS UNDO LOCAL
UNDOTBS2 UNDO LOCAL


4. undo tablespace에 설정된 rollback segment를 확인한다.

SQL> select segment_name, tablespace_name, status
2 from dba_rollback_segs
3 order by 2;

SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ---------
SYSTEM SYSTEM ONLINE
_SYSSMU1$ UNDOTBS ONLINE
_SYSSMU2$ UNDOTBS ONLINE
_SYSSMU3$ UNDOTBS ONLINE
_SYSSMU4$ UNDOTBS ONLINE
_SYSSMU5$ UNDOTBS ONLINE
_SYSSMU6$ UNDOTBS ONLINE
_SYSSMU7$ UNDOTBS ONLINE
_SYSSMU8$ UNDOTBS ONLINE
_SYSSMU9$ UNDOTBS ONLINE
_SYSSMU10$ UNDOTBS ONLINE
_SYSSMU11$ UNDOTBS2 OFFLINE
_SYSSMU12$ UNDOTBS2 OFFLINE
_SYSSMU13$ UNDOTBS2 OFFLINE
_SYSSMU14$ UNDOTBS2 OFFLINE
_SYSSMU15$ UNDOTBS2 OFFLINE
_SYSSMU16$ UNDOTBS2 OFFLINE
_SYSSMU17$ UNDOTBS2 OFFLINE
_SYSSMU18$ UNDOTBS2 OFFLINE
_SYSSMU19$ UNDOTBS2 OFFLINE
_SYSSMU20$ UNDOTBS2 OFFLINE

위와 같이 한번에 하나의 UNDO tablespace만 설정할 수 있다.


5. 새로운 undo tablespace를 지정한다.

SQL> alter system set undo_tablespace = undotbs2;

위와 같이 실행한 후에 4번의 sql을 다시 실행해 보면 이번에는
undotbs 의 rollback segment들이 모두 offline되고 undotbs2 의
rollback segment 들은 online된 것을 볼 수 있다.


6. 기존의 undo tablespace를 drop한다.

SQL> drop tablespace undotbs;

7. spfile이 아닌 initSID.ora를 사용하는 경우는 initSID.ora file에
undo_tablespace parameter의 값을 해당 tablespace, 여기서는
undotbs2로 변경시켜 둔다.

Reference Documents
-------------------
Oracle9i Server Reference
Comment
등록된 코멘트가 없습니다.