본문 바로가기
Oracle(DB관련)

Oracle 10g Transaction Rollback Monitoring

by xfree302 2018. 2. 5.
반응형

Oracle 10g Transaction Rollback Monitoring


Oracle 10g 이전에  parallel transaction recovery 시 다음 두 개의 뷰로 monitor할 수 있었다.
      - v$fast_start_servers 

      - v$fast_start_transactions.

 

그러나, 이 뷰들은 normal transaction rollback 이나 SMON에 의해 복구되어지는 transaction 들은  monitor 할 수 없었다.

 

10g 이후, transaction rollback monitoring을 통하여 이제는 realtime normal transaction rollback 과  SMON에 의한 transaction recovery 를 모니터 할 수 있다. 

 

또한, transaction recovery와 transaction rollback 에 대한 historical information 을 볼 수 있다. 

transaction recover에 대한 historical information을 통해, 평균적인 rollback duration을 계산해 볼 수 있다.

 

transaction recovery 가 진행중일 때, 작업이 얼만큼 진행이 되었고, 얼만큼의 작업이 남았는지를 위의 두 뷰를 통해서 좀 더 정확하게 측정할 수 있다.  또한 적절한 FAST_START_PARALLEL_ROLLBACK initialization 파라미터 값 셋팅을 통해 system performance를 최적화할 수 있다.

=================================
In Oracle 10g, Data Dictionary 변경사항

=================================

v$fast_start_transactions

    : Oracle 서버가 recovering 중인 트랜잭션의 progress에 대한 정보를 포함 (STATE => "RECOVERING")

    : Oracle 서버가 recover 했던 트랜잭션에 대한 정보를 포함 (STATE => "RECOVERED")

 

- 단, 제한된 수의 historical 정보만 이 뷰에 유지되며, small transaction들은 track되지 않는다.

 

  (추가된 컬럼)

• xid: The transaction ID of this transaction.
• parentxid: The transaction ID of the parent transaction.
• rcvservers: It is the number of servers working on this transaction (including
the coordinator server). It can be 1 if only SMON is doing the recovery.


v$fast_start_servers

    : parallel transaction recovery를 수행중인 또는 수행했던 모든 recovery server에 대한 정보를 제공

 

  (추가된 컬럼)

  •  XID  :  The transaction ID of the transaction a particular server is working on.


(예제):

SELECT state,undoblocksdone,undoblockstotal,cputime
FROM v$fast_start_transactions;

STATE    UNDOBLOCKSDONE UNDOBLOCKSTOTAL CPUTIME
---------- -------------- --------------- ---------
RECOVERING 574   1945   16

SQL> /
STATE    UNDOBLOCKSDONE UNDOBLOCKSTOTAL CPUTIME
---------- -------------- --------------- ---------
RECOVERING 1300   1945   34

SQL> /
STATE    UNDOBLOCKSDONE UNDOBLOCKSTOTAL CPUTIME
---------- -------------- --------------- ---------
RECOVERED  1945   1945   65

위의 예제 쿼리는 instance startup 이후의 transaction recovery를 track 하기위해 사용될 수 있다.

위의 쿼리 결과에서 볼 수 있듯이, 일단 transaction이 recover 되었으면, 이것에 대한 기록은 
v$fast_start_transactions 뷰를 통해 조회될 수 있으며,  STATE 는 RECOVERED로 바뀐다.

이러한 Historical information은 intance가 shutdown될 때까지  v$fast_start_transactions뷰에 유지된다.


 

(참고)
  v$session_longops

   : 6초 이상 실행된 다양한 operation에 대한 상태를 보여주는 View


SQL> SELECT message FROM v$session_longops;
MESSAGE
---------------------------------------------
Transaction Rollback: xid:0x0001.00a.00000812 : 4600
out of 4600 Blocks done
Transaction Rollback: xid:0x0001.007.00000812 : 4601
out of 4601 Blocks done
2 rows



출처 : http://www.dator.co.kr/dataworld/textyle/91163


반응형