데이터 베이스를 관리하다보면 흔히 받는 질문이 있죠
수행한 쿼리가 끝나지 않는데 언제 끝날까요?
정확한 대답은 '아무도 몰라요'겠지만
유추를 할 수 있게 도와주는 테이블이 있습니다.
바로 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 |
업무에 참고하기에 좋지만 정확하진 않다는 것을 알아둔다.
12.2 환경에서의 adop patch cycle 이력확인 (1) | 2019.09.02 |
---|---|
정상적으로 윈도우에서 Oracle 삭제하는 법(초간단) (0) | 2019.07.17 |
FND debug log 생성방법 (0) | 2019.04.11 |
클라이언트 설치후 plsql developer에서 특정 테이블의 결과값이 0건 (0) | 2019.04.10 |
oracle datafile 삭제 방법 (0) | 2019.04.09 |