TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-02-06 |
제목 | (V8.X ~ V9.X) UNDO/REDO 를 많이 생성시키는 SESSION을 찾아주는 SQL 문 | ||
---|---|---|---|
(V8.X ~ V9.X) UNDO/REDO 를 많이 생성시키는 SESSION을 찾아주는 SQL 문
==================================================================== PURPOSE ------- 이 자료는 운영 중인 Oracle 데이타베이스에서 Redo를 많이 생성시키는 session 정보를 순서 대로 출력해주는 SQL 문에 대한 자료이다. Explanation ----------- 다음 두 가지 SQL 문을 이용하면 Redo와 Undo를 많이 생성시키는 session, transaction 정보를 알 수 있다. 1) V$SESS_IO 뷰와 V$SESSION view를 조인한다. V$SESS_IO 뷰의 BLOCK_CHANGES 라는 컬럼은 얼마나 많은 block들이 그 session에 의해서 변화되었는지를 보여준다. 이 값이 높으면 session이 많은 양의 redo를 생성시켰음을 알 수 있다. SQL> SELECT s.sid, s.serial#, s.username, s.program, i.block_changes FROM v$session s, v$sess_io i WHERE s.sid = i.sid ORDER BY 5 desc, 1, 2, 3, 4; 위 SQL 문을 여러번 수행해서 BLOCK_CHANGES 값의 각 발생 사이의 delta 값을 비교해보면, 그 값이 클 수록 그 session이 많은 양의 redo를 생성시켰음을 알 수 있다. 2) V$TRANSACTION 뷰를 조회하면 해당 transaction에 의하여 액세스된 undo block과 undo record들의 양에 대한 정보를 알 수 있다. 그 정보는 USED_UBLK 컬럼과 USED_UREC 컬럼을 보고 알 수 있다. SQL> SELECT s.sid, s.serial#, s.username, s.program, t.used_ublk, t.used_urec FROM v$session s, v$transaction t WHERE s.taddr = t.addr ORDER BY 5 desc, 6 desc, 1, 2, 3, 4; 위 SQL 문을 여러번 수행해서 USED_UBLK 컬럼과 USED_UREC 컬럼의 각 발생 사이의 delta 값을 비교해보면, 그 값이 클 수록 그 session이 많은 양의 redo를 생성시켰음을 알 수 있다. 위의 query에서 첫번 째 query는 많은 양의 redo를 generate한 program을 check할 필요가 있을 때 사용하고, 두번 째 query는 많은 양의 redo를 generate한 특정 transaction을 찾을 필요가 있을 때 사용하면 도움이 된다. Example ------- none Reference Document ------------------ |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |