DBDBDEEP

데이터 베이스를 관리하다보면 흔히 받는 질문이 있죠

수행한 쿼리가 끝나지 않는데 언제 끝날까요?


정확한 대답은 '아무도 몰라요'겠지만

유추를 할 수 있게 도와주는 테이블이 있습니다.

바로  v$session_longops 이것이죠


lock이나 시스템 극심한 부하인경우 정확한 값은 알아내기 어려우나 대략적으로 감은 잡을수 있습니다.

(당연히 트랜잭션이 무한 loop되고 있다면 무의미, lock도 무의미)

 

아래 컬럼에대한 설명을 보면 알겠지만

SOFAR / TOTALWORK로 진행상황을 알 수 있으며

친절하게도 TIME_REMAINING이 초단위로 알려준다.

(물론 초단위가 늘어날때가 있다...)

Column

Datatype

Description

SID

NUMBER

Session identifier

SERIAL#

NUMBER

Session serial number

OPNAME

VARCHAR2(64)

Brief description of the operation

TARGET

VARCHAR2(64)

The object on which the operation is carried out

TARGET_DESC

VARCHAR2(32)

Description of the target

SOFAR

NUMBER

The units of work done so far

TOTALWORK

NUMBER

The total units of work

UNITS

VARCHAR2(32)

The units of measurement

START_TIME

DATE

The starting time of operation

LAST_UPDATE_TIME

DATE

Time when statistics last updated

TIMESTAMP

DATE

Timestamp

TIME_REMAINING

NUMBER

Estimate (in seconds) of time remaining for the operation to complete

ELAPSED_SECONDS

NUMBER

The number of elapsed seconds from the start of operations

CONTEXT

NUMBER

Context

MESSAGE

VARCHAR2(512)

Statistics summary message

USERNAME

VARCHAR2(30)

User ID of the user performing the operation

SQL_ADDRESS

RAW(4 | 8)

Used with the value of the SQL_HASH_VALUEcolumn to identify the SQL statement associated with the operation

SQL_HASH_VALUE

NUMBER

Used with the value of the SQL_ADDRESS column to identify the SQL statement associated with the operation

SQL_ID

VARCHAR2(13)

SQL identifier of the SQL statement associated with the operation

QCSID

NUMBER

Session identifier of the parallel coordinator


업무에 참고하기에 좋지만 정확하진 않다는 것을 알아둔다.


재미있는것은 11g 환경에서 확인하였기때문에 11g의 신기능인가? 싶었지만
놀랍게도(?)  9i (9.2.0.6.0)에서도 v$session_longops 테이블이 있다는것!


이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band