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
'Oracle(DB관련)' 카테고리의 다른 글
Identity Columns in Oracle Database 12c (0) | 2018.05.08 |
---|---|
Invisible Columns in Oracle Database 12c (0) | 2018.05.08 |
oracle rollback (롤백 모니터링) (0) | 2018.02.05 |
Virtual Columns in Oracle Database 11g Release 1 (0) | 2017.12.13 |
Data Magration to Oracle (0) | 2017.11.09 |