답변:
다음은 작업을 수행하는 SQL입니다. 평가판을 엽니 다.
1 단계 : 설치 ID 및 사용자 ID를 결정하십시오.
SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';
2 단계:
SELECT
s.sid
,s.CLIENT_INFO
,s.MACHINE
,s.PROGRAM
,s.TYPE
,s.logon_time
,s.osuser
,sq.sorts
,sq.DISK_READS
,sq.BUFFER_GETS
,sq.ROWS_PROCESSED
,sq.SQLTYPE
,sq.SQL_TEXT
FROM gv$session s
, gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
AND s.inst_id = :inst_id -- replace with instID from above
AND s.sid = :sid -- replace with ID from above
AND sq.inst_id = s.inst_id
여러 ID 및 인스턴스 ID가 반환되었을 수 있습니다. 따라서 웹 인터페이스 등에서이 데이터를 사용하는 방법에 대한 사용자의 선택에 달려 있습니다.
in
튜플을 사용 하여 (어떤 버전 ... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Oracles Enterprise Monitor 콘솔은 어떤 SQL 쿼리가 최대 CPU, 병목 현상, 데이터베이스의 주요 활동, SQL 차단 등을 수행하는지에 대한 모든 정보를 보여줍니다.
역사적 접근 방식의 경우 Oracle의 AWR 보고서를 사용 하여 관련 영역을 찾아 낼 수 있습니다.
당신은 또한 사용할 수 있습니다 V$SQL
, 몇 가지 흥미로운 열이 있습니다 RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
.
이렇게하면 디스크를 읽을 때마다 상위 10 개의 명령문이 제공됩니다 (참고-모든 실행에 누적됩니다).
select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11
명령문이 아직 있으면 V$SQL_PLAN
쿼리에 대한 실제 Explain 계획을 얻을 수 있습니다.
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
또한 V$SQL_PLAN
좋은 정보가 들어 있기 때문에 사용 하고 싶습니다 . 귀하의 경우, statistics_level=ALL
당신은 사용할 수 있습니다 V$SQL_PLAN_STATISTICS
.