2009년 8월 18일 화요일

Resumable

▣ 정의

  • 테이블 복사를 할 때 공간이 부족할 경우 에러가 나지 않고

    멈추어 공간 확보할 수 있는 기화를 부여한다.

   

▣ 시나리오

▶ resumable 사용하지 않을 경우

  1. 테이블 복사 시작
  2. 공간 부족해서 rollback

    => 1시간 이상 걸리는 작업일 경우 시간손실

▶ resumable 사용할 경우

  1. Resumable session에서 테이블 복사 시작
  2. 공간 모자라도 에러 안나고 멈추어 있음
  3. 공간 확보
  4. 질의 성공

   

▣ resumable 사용하지 않을 경우

S SCOTT> create table emp2 tablespace ts1 as select * from emp;

   

Table created.

   

S SCOTT> insert into emp2 select * from emp2;

   

14 rows created.

S SCOTT> /

   

28 rows created.

   

S SCOTT> /

   

56 rows created.

   

S SCOTT> / => 에러 발생할 때까지 실행

------중 략-------

S SCOTT> /

   

28672 rows created.

   

S SCOTT> /

insert into emp2 select * from emp2

*

ERROR at line 1:

ORA-01653: unable to extend table SCOTT.EMP2 by 128 in tablespace TS1 => 에러가 발생하면 지금까지 하던 작업 Rollback

   

▣ resumable 사용할 경우

S SYS> grant resumable to scott;

   

Grant succeeded.

   

S SYS> conn scott/tiger

Connected.

S SCOTT> alter session enable resumable;

   

Session altered.

   

S SCOTT> insert into emp2 select * from emp2;

-----에러가 나지 않고 대기 상태로 바뀜------

   

S SYS> select name,sql_text from dba_resumable;

   

NAME

---------------------------------------------------------------------------------------------------------------------

SQL_TEXT

---------------------------------------------------------------------------------------------------------------------

User SCOTT(54), Session 152, Instance 1

insert into emp2 select * from emp2

   

   

S SYS> alter tablespace ts1 add datafile size 20M;

   

Tablespace altered.

   

Ts1의 크기를 증가시키면 scott에서 대기 상태였던 것이 풀리면서 insert 된다

57344 rows created.

   

※ ALTER SESSION ENABLE RESUMABLE TIMEOUT 3600;

- TIMEOUT 3600 : 1시간만 Suspend 됨

댓글 없음:

댓글 쓰기