TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-15 |
제목 | TRANSACTION을 ROLLBACK SEGMENT에 할당하는 방법 | ||
---|---|---|---|
8i 이하에서만 쓴다고 보면 된다
TRANSACTION을 ROLLBACK SEGMENT에 할당하는 방법 ============================================== (SET TRANSACTION USE ROLLBACK SEGMENT) Purpose ------- Batch job 등을 사용할 때 특별히 크게 만든 rollback segment를 사용하도록 할 수가 있다. transaction에 특정한 rbs를 지정하는 방법을 알아보자. Explanation ----------- Oracle은 다음과 같은 규칙에 의해 각 Transaction이 사용하는 Rollback segment를 결정한다. 1. Active Transaction의 수가 가장 작은 Rollback Segment에 할당한다. 2. 만약 1의 조건에 만족하는 Rollback segment가 하나 이상이면, 가장 마지막에 할당된 rbs 다음의 rbs를 할당한다. 이것은 undo 기능을 더 오래 지속시키도록 해 준다. 그러나, Application이 큰 rollback segment가 필요하다면 위와 같이 자동적인 rollback segment의 할당이 아닌 Manual하게 특정 rollback segment를 할당 가능하다. 다음의 방법을 사용한다. 1) 큰 rollback segment를 만든다. 큰 rollback segment 를 만들기 위해서는 rbs tablespace에 영역이 충분히 커야 하므로 필요할 경우 tablespace를 확장하는 작업을 한다. $ sqlplus system/manager sql> alter tablespace rbs add datafile '?/rbs1SID.dbf' size 100m; sql> create rollback segment big_rbs storage(initial 10m next 10m) tablespace rbs; sql> alter rollback segment big_rbs online; 2) Transaction 를 assign 한다. SQL> set transaction use rollback segment big_rbs; .... exec sql commit work; exec sql set transaction use rollback segment big_rbs; dbms_transaction.use_rollback_segment('big_rbs'); 이와 같이 지정하면 이후에 commit 또는 rollback이 일어날 때까지 한 transaction에만 해당된다. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |