- undo관련 설정 및 상태 확인
SQL> SELECT SEGMENT_NAME, TABLESPACE_NAME, STATUS FROM DBA_ROLLBACK_SEGS; undo 세그먼트의 상태를 조회한다.
SQL> SELECT N.USN, N.NAME, S.STATUS FROM V$ROLLNAME N, V$ROLLSTAT S WHERE N.USN=S.USN; 현재 사용 중이거나 사용 가능한 undo세그먼트를 조회한다.
|
이전 버전에서는 롤백 세그먼트의 사용에 있어 두가지 문제점이 있다. 하나는 롤백 세그먼트를 사용하기 위해서 반드시 접근해야 하는 롤백 세그먼트의 첫번째 헤더 블록에 대한 경합이 많아서 트랜잭션이 번번히 대기한다는 것이고, 다른 하나는 롤백 세그먼트가 불필요하게 켜진다는 것이였다. 이 두가지 문제의 근본적인 원인은 여러 개의 트랜잭션이 롤백 세그먼트를 공유한다는 데 있었다.
그러나 9I부터는 관리자가 undo용 테이블스페이스를 만들고 이 중에서 사용할 undo테이블스페이스를 지정하면 DBMS가 발생하는 트랜잭션에 따라서 사용할 undo세그먼트를 직접 결정하거나 생성하게 되었다. 이것은 하나의 트랜잭션이 하나의 undo세그먼트를 사용하도록 하는 것으로써 여러 트랜잭션이 하나의 undo세그먼트를 사용함으로 인해 발생하는 대부분의 undo관련 문제에 대한 근본적인 해결책이 되었다. 단, 제한 사항은 system undo세그먼트를 제외하고 사용 가능한 일반 undo세그먼트를 반드시 하나의 테이블스페이스만 사용 가능하다는 것이다.
[UNDO와 ROLLBACK
오라클은 9I버전부터 롤백이라는 용어를 undo라는 용어로 변경하였다.
- undo 테이블스페이스 생성과 현재 사용 중인 undo 테이블스페이스 변경
SQL> CREATE UNDO TABLESPACE <테이블스페이스명> DATAFILE '<undo 데이터파일명>' SIZE <크기>; undo 테아블스페이스를 생성하생성한다. locally management가 디폴트 값이다. segment space management를 AUTO로 지정할 수 없다.
|
현재 사용 중인 undo 테이블스페이스에 대한 오프라인과 삭제가 불가능한 제약이 있다. 그러나 9i부터 물리적인 특성이 분화된 undo테이블스페이스를 도입함으로 인해서 DBA가 undo세그먼트를 자동으로 관리하는 것이 아니라 수동으로 관리해서 undo세그먼트를 직접 생성하는 경우에 8i이전 버전과는 달리 반드시 undo용으로 생성된 테이블스페이스에 undo세그먼트를 생성해야 한다.
- undo 테이블스페이스 확장
9i부터는 물리적인 특성이 다른 undo와 temporary테이블스페이스의 도입으로 인해 4개의 테이블스페이스로 구분해야 한다.
- temporary 테이블스페이스 생성과 default temporary 테이블스페이스 변경
temporary 테이블스페이스느 하나의 temporary 세그먼트르 가진 독특한 테이블스페이스이다. temporary 세그먼트는 정렬 작업 중에 발생하느 임시 정보를 저장하는 용도로만 사용되며 그 외에는 전혀 사용되지 않는다. 그러므로 안전성을 위주로 하는 대부분의 관리 작업에서 temporary 테이블스페이스가 제외되는 경향이 있다.
SQL> CREATE TEMPORARY TABLESPACE <테이블스페이스명> TEMPFILE '<temporary 데이터 파일명>' SIZE <크기>; temporary 테이블스페이스를 생성한다. locally management가 디폴트다. segment space management를 auto로 지정할 수 없다.
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE <테이블스페이스명>; 지정된 테이블스페이스를 default teporary테이블슾이스로 저의한다.
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE '%TEMP%';
|
관리자가 어떤 유저에게 사용할 temporary테이블스페이스를 지정해주지 않는다면?
: temporary테이블스페이스 중에서 하나를 디폴트로 정의해서 temporary 테이블스페이스를 지정받지 못한 사용자들은 이제 더이상 시스템 테이블스페이스가 아니라 지정된 temporary 테이블스페이스를 사용하게 된것 이다. 그러므로 시스템에는 반드시 하나의 default temporary 테이블스페이스가 있어야 한다.
'Oracle > AdminⅠ,Ⅱ' 카테고리의 다른 글
Undo Segment 관리 (0) | 2011.03.11 |
---|---|
Overview of Segments (0) | 2011.03.11 |
External Table (0) | 2011.03.08 |
ORACLE 정보 확인 view (0) | 2011.03.08 |
SQL*Loader (0) | 2011.03.08 |