데이터베이스 내에서 최신 SQL 문을 찾는 방법은 무엇입니까?


답변:


17

다음은 작업을 수행하는 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), ... )
에서든

1
'inst_id'는 인스턴스 ID를 나타내며 설치 ID를 의미하지 않습니다.
miracle173

13

Oracles Enterprise Monitor 콘솔은 어떤 SQL 쿼리가 최대 CPU, 병목 현상, 데이터베이스의 주요 활동, SQL 차단 등을 수행하는지에 대한 모든 정보를 보여줍니다.

역사적 접근 방식의 경우 Oracle의 AWR 보고서를 사용 하여 관련 영역을 찾아 낼 수 있습니다.

대체 텍스트

여기에 이미지 설명을 입력하십시오


1
호기심에서-AWR은 모든 Oracle 라이센스에서 사용할 수있는 도구이며 명령 줄을 통해서만 사용할 수 있습니까?
Sebastian Roth

2
내가 아는 한, AWR에는 Oracle Tuning & Diagnostic Pack 이라는 별도의 라이센스가 필요합니다 . Enterprise Manager 콘솔에서 AWR을 사용하는 것이 좋습니다. Enterprise Manager 콘솔을 사용할 수있는 권한 (!)을 받았습니다. 나는 또한 발견 하면 모니터 SQL을에 SQL Developer를 사용할 수 있지만 그것은 라이선스 위의 요구
Sathyajith 바트

1
Oracle Enterprise Manager (OEM)는 매우 훌륭합니다. 자동 새로 고침 그래프를 사용하여 거의 실시간으로 데이터베이스 상태를 모니터링 할 수 있습니다. 우리는 주요 데이터베이스에 대한 OEM을 24 시간 연중 무휴로 표시하는 벽에 매달려 큰 모니터를 가지고 있으며 문제가 발생할 때이를 식별하는 데 큰 도움이됩니다.
ScottCher

4

당신은 또한 사용할 수 있습니다 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.


2

최근 SQL의 경우 :

select * from v$sql

역사를 위해 :

select * from dba_hist_sqltext
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.