[Oracle] 테이블스페이스 타입에 따른 생성방법 (undo)

·2025년 9월 1일

오라클 관리

목록 보기
68/163


[이론1] undo tablespace에서 저장되는 데이터는 무엇인가요?

💡 rollback을 가능하게 해주는 변경 전 데이터들이 저장되어 있음


[이론2] undo tablespace의 공간이 부족해질 때는 언제인가요?

💡 대량으로 데이터를 update 하거나 delete 할 때


[이론3] undo 테이블 스페이스의 공간이 부족하면 발생하는 에러는 무엇인가요?

💡 update, delete, insert 할 때 작업이 실패함


[실습1] 현재 사용되고 있는 undo tablespace 가 무엇인지 확인하시오

SYS @ ora19dw > show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

[실습2] update가 안될 때, 이를 조치하기 위한 새로운 undo tablespace 를 undotbs2 로 생성하시오

create undo tablespace undotbs2
 datafile '/u01/app/oracle/oradata/ORA19DW/undotbs2.dbf' size 1m;
  
select tablespace_name, contents
 from dba_tablespaces;

[실습3] 지금 만든 undotbs2 테이블 스페이스가 현재 사용될 undo tablespace 로 지정하시오

SYS @ ora19dw > alter system set undo_tablespace=UNDOTBS2 scope=both;

시스템이 변경되었습니다.

SYS @ ora19dw > show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS2

[실습4] scottdw 로 접속해서 mcustsum 테이블을 delete 하시오

SYS @ ora19dw > connect scott/tiger
연결되었습니다.
SCOTT @ ora19dw >
SCOTT @ ora19dw > delete from mcustsum2;
delete from mcustsum
            *
1행에 오류:
ORA-30036: 세그먼트를 8만큼 실행 취소 테이블스페이스 'UNDOTBS2'에서 확장할 수 없음

[실습5] undotbs2 테이블 스페이스의 공간을 늘리시오

alter database datafile 
'/u01/app/oracle/oradata/ORA19DW/undotbs02.dbf' resize 200m;


[실습6] 다시 현재 undo tablespace 를 undotbs1 로 변경하시오

SCOTT @ ora19dw > connect / as sysdba
연결되었습니다.
SYS @ ora19dw >
SYS @ ora19dw > alter system set undo_tablespace=undotbs1 scope=both;

시스템이 변경되었습니다.

SYS @ ora19dw > show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1
SYS @ ora19dw >

[실습7] 기존에 만들었던 undotbs2 테이블 스페이스를 drop 하시오

drop  tablespace  undotbs2 including contents and datafiles;

💡 including cotents and datafiles를 써줘야 os 관련된 datafile들도 같이 자동으로 삭제됨

0개의 댓글