Oracle10g 롤백 작업 시간에 대한 정확한 평가

Oracle Database 10g에서 장기간 실행 중인 트랜잭션을 롤백할 때 - 병렬 인스턴스 복구 세션이든 사용자가 실행한 롤백 명령이든 - 보기 V$SESSIONLONGOPS 및 평가 소요 시간
Oracle 9i Database 이하 버전에서 질의를 수행할 수 있습니다.
 SELECT USED_UREC FROM V$TRANSACTION;

이 문장은 현재 사무소에서 사용하는 재작업 기록의 수량을 되돌려줍니다. 이 문장을 반복적으로 실행하면, 롤링 프로세스가 처리하는 과정에서 재작업 기록을 방출하기 때문에 연속적으로 감소된 수치를 표시합니다.그 다음에 간격을 스냅샷으로 해서 속도를 계산한 다음에 평가 종료 시간의 결과를 추정할 수 있습니다.
뷰 V$TRANSACTION에 START 라는 이름이 있지만TIME의 열이지만 이 열은 전체 업무의 시작 시간만 표시합니다. 즉, 스크롤이 실행되기 전입니다.따라서, 추측을 제외하고는, 스크롤이 실제로 언제 실행되었는지 알 방법이 없습니다.
사무 스크롤의 확장 통계 정보
Oracle Database 10g에서는 간단합니다.트랜잭션이 롤백되면 이벤트가 뷰 V$SESSION 에 기록됩니다.LONGOPS에서는 장기적으로 실행되는 트랜잭션을 보여 줍니다.롤백에 사용되며 프로세스가 6초 이상 걸리면 기록이 이 보기에 나타납니다.롤백이 수행된 후 모니터 화면을 숨기고 다음 질의를 수행할 수 있습니다.
 select time_remaining from v$session_longops where sid = &;

V$SESSIONLONGOPS의 중요성에 대해 자세히 살펴보겠습니다.이 보기는 Oracle Database 10g의 미리 보기 버전에서 제공되지만 롤백 트랜잭션에 대한 정보는 캡처되지 않았습니다.모든 열을 읽기 쉽게 표시하기 위해서, AskTom에서 Tom Kyte를 사용합니다.com에서 설명한 PRINTTABLE 함수.이 절차는 열을 일반적인 행 대신 표 방식으로 간단하게 표시합니다.
SQL> set serveroutput on size 999999
SQL> exec print_table('select * from v$session_longops where sid = 9')
SID : 9
SERIAL#  : 68
OPNAME:Transaction Rollback
TARGET:
TARGET_DESC  :xid:0x000e.01c.00000067
SOFAR : 20554
TOTALWORK : 10234
UNITS :Blocks
START_TIME:07-dec-2003 21:20:07
LAST_UPDATE_TIME :07-dec-2003 21:21:24
TIME_REMAINING: 77
ELAPSED_SECONDS  : 77
CONTEXT  : 0
MESSAGE  :Transaction Rollback:xid:0x000e.01c.00000067 :
10234 out of 20554 Blocks done
USERNAME :SYS
SQL_ADDRESS  :00000003B719ED08
SQL_HASH_VALUE: 1430203031
SQL_ID:306w9c5amyanr
QCSID : 0

줄을 삭제하고 다시 삽입할 때도 줄에 대한 모든 변경 사항을 보여 줍니다.VERSION_OPERATION 열에는 행에 수행된 작업(Insert/Update/Delete)이 표시됩니다.이 작업을 완성하려면 역사표나 추가 열이 필요하지 않습니다.
우리들은 이 열들 중의 매 열을 자세히 검사할 것이다.특히 뷰에는 이전 세션의 모든 장기 운영 이력이 포함되어 있기 때문에 세션에 여러 개의 장기 운영 작업이 있을 수 있습니다.열 OPNAME은 이 레코드가 트랜잭션 롤백에 사용되는 것을 보여 줍니다. 이것은 올바른 방향을 가리킵니다.열 TIMEREMAINING은 앞서 설명한 대로 평가된 남은 시간 초 수를 표시합니다. 열 ELAPSEDSECONDS는 지금까지 소비된 시간을 표시합니다.
그렇다면 이 표는 어떻게 남은 시간에 대한 평가를 제공합니까?열 TOTALWORK에서 단서를 찾을 수 있습니다. 이 열은 완성할 작업의 총량을 표시하고, SOFAR는 지금까지 얼마나 많은 작업을 완성했는지 표시합니다.작업 단위가 열 UNITS에 표시됩니다.이 예에서 데이터 블록 단위로이에 따라 지금까지 20554개의 블록 중 총 10234개의 블록이 롤백되었습니다.이 조작은 지금까지 77초가 소모되었다.따라서 나머지 블록은 다음과 같이 소모됩니다.
 
77 * ( 10234 / (20554-10234) ) ˜ 77   
 

그러나 이런 방법을 이용해서 이 수치를 얻을 필요는 없습니다. 이미 명확하게 드러났습니다.마지막으로, 열 LASTUPDATE_TIME은 현재 뷰 컨텐트에 대한 시간을 표시합니다. 이 시간은 결과에 대한 설명을 강화하는 데 사용됩니다.
SQL 문
또 다른 중요한 새로운 정보는 롤백 중인 SQL 문의 식별자입니다.이전에 SQLADDRESS 및 SQLHASH_VALUE 는 롤백 중인 SQL 문을 가져오는 데 사용됩니다.새 열 SQLID가 뷰 V$SQL에 해당하는 SQLID:
 SELECT SQL_TEXT FROM V$SQL WHERE SQL_ID = ;

 
이 질의는 롤백된 문을 반환하므로 추가 체크섬 및 SQL 문의 주소 및 해싱 값을 제공합니다.
병렬 인스턴스 복구
DML 작업이 병렬 작업인 경우 열 QCSID는 병렬 조회 서버 세션의 SID를 표시합니다.병렬 스크롤 이벤트에서 예를 들어 실례 복구와 그 후의 고장 사무 복구 기간에 이 정보를 자주 사용합니다.
예를 들어 대형 업데이트 기간에 실례가 이상하게 닫혔다고 가정합니다.실례가 시작되었을 때 고장난 업무가 굴러갔다.병렬 복구에 사용할 초기화 파라미터 값을 사용하면, 일반적인 업무 스크롤에서 발생하는 것처럼, 직렬 스크롤이 아니라 병렬 스크롤로 스크롤됩니다.다음 작업은 롤백 프로세스의 완료 시간을 평가하는 것입니다.
뷰 V$FASTSTART_TRANSACTIONS에는 장애가 발생한 사무소를 롤백하는 데 발생한 트랜잭션이 표시됩니다.유사한 뷰 V$FASTSTART_SERVERS는 롤백을 처리하는 병렬 질의 서버의 수를 표시합니다.두 뷰 모두 이전 릴리즈에서 사용할 수 있지만 트랜잭션 식별자의 새 열 XID를 표시하여 조인을 보다 쉽게 할 수 있습니다.Oracle9i Database 이하 버전에서는 세 열(USN-다시 세그먼트 번호, SLT-다시 세그먼트의 메모리 영역 번호, SEQ-시퀀스 번호)을 통해 보기를 연결해야 합니다.부모 세트는 PARENTUSN, PARENTSLT 및 PARENTSEQ에 표시됩니다.Oracle Database 10g에서는 XID 열에 연결하기만 하면 됩니다. 상위 XID는 PXID라는 직관적인 이름으로 표시됩니다.
가장 유용한 정보 섹션은 V$FASTSTART_TRANSACTIONS 뷰의 RCVSERVERS 열병렬 스크롤이 발생하면, 이 열에는 병렬 조회 서버의 수가 표시됩니다.이 열을 보고 몇 개의 병렬 질의 프로세스가 시작되었는지 확인할 수 있습니다.
select rcvservers from v$fast_start_transactions;
v$fast_start_transactions      :
UNDOBLOCKSDONE , Number of undo blocks completed on the transaction( undo )
UNDOBLOCKSTOTAL , Total number of undo blocks that need recovery   ( undo )

출력이 1이면 트랜잭션이 SMON 프로세스에 의해 직렬 롤백되고 있으므로 작업을 완료하기에는 충분하지 않은 방법임이 분명합니다.RECOVERY 매개변수를 초기화할 수 있습니다.PARALLELISM의 값이 0 또는 1을 제외한 값으로 변경되어 인스턴스를 다시 시작하여 병렬 롤백을 수행합니다.Alter SYSTEM SET FASTSTART_PARALLEL_ROLLBACK = HIGH, CPU의 4배에 달하는 병렬 서버를 만듭니다.
위의 질의의 출력이 1이 아닌 경우 병렬 롤백이 수행됩니다.동일한 뷰(V$FAST START TRANSACTIONS)를 조회하여 상위 및 하위 트랜잭션(상위 트랜잭션 id-PXID, 하위 트랜잭션 id-XID)을 가져올 수 있습니다.XID는 이 뷰와 V$FAST 를 연결하는 데도 사용할 수 있습니다.START_자세한 내용은 SERVERS 를 참조하십시오.
결론
결론적으로 Oracle Database 10g에서 장기간 실행 중인 트랜잭션을 롤백할 때 - 병렬 인스턴스 복구 세션이든 사용자가 실행한 롤백 명령이든 - 보기 V$SESSIONLONGOPS 및 평가 소요 시간
http://database.51cto.com/art/200612/36696.htm

좋은 웹페이지 즐겨찾기