태그 보관물: oracle

oracle

데이터베이스 내에서 최신 SQL 문을 찾는 방법은 무엇입니까? 싶습니다. 따라서 CPU /

성능 지표와 함께 데이터베이스 내에서 가장 최근에 실행 된 명령문을 얻고 싶습니다.

따라서 CPU / DISK를 가장 많이 사용하는 SQL 문이 무엇인지 알고 싶습니다.



답변

다음은 작업을 수행하는 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가 반환되었을 수 있습니다. 따라서 웹 인터페이스 등에서이 데이터를 사용하는 방법에 대한 사용자의 선택에 달려 있습니다.


답변

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.


답변

최근 SQL의 경우 :

select * from v$sql

역사를 위해 :

select * from dba_hist_sqltext


답변