Oracle SQL History

작가: John Pratt
창조 날짜: 12 1 월 2021
업데이트 날짜: 26 십일월 2024
Anonim
SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial
동영상: SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial

콘텐츠

오라클은 샘플을 수집하고 모든 활성 세션을 데이터베이스에 기록하기 때문에 간단한 쿼리를 통해 주어진 기간 동안 SQL 문 기록을 검색 할 수 있습니다.


오라클은 역사적인 SQL 정보를 v $ active_session_history에 기록합니다. (Fotolia.com에서 .shock으로 15.4 "와이드 스크린 이미지에 데이터베이스 레코드가있는 노트북)

중요성

Oracle은 매 초마다 데이터베이스에서 실행되는 모든 세션의 샘플을 자동으로 수집하고 SQL 내역의 정보를 데이터 사전보기 v $ active_session_history에 저장합니다. 순환 버퍼이므로 꽉 차면 오라클은 dba_hist_active_sess_history 데이터 딕셔너리 뷰에 정보를 자동으로 저장 한 후이를 덮어 씁니다.

기능

이 두 가지보기를 쿼리하여 일정 기간 동안 데이터베이스에서 실행 된 SQL 문의 내역을 가져올 수 있습니다. 예를 들어 다음 쿼리는 2010 년 9 월 30 일 오전 9시에서 오전 9:05 사이에 실행 된 SQL 문의 처음 4000 자 목록을 반환합니다.

dba_hist_active_sess_history a, dba_hist_sqltext b에서 a.sql_id, dbms_lob.substr (b.sql_text, 4000,1)을 선택하십시오.

여기서 to_date ( '20100930 : 09 : 00', 'yyyymmdd : hh24 : mi') 사이의 sample_time

및 to_date ( '20100930 : 09 : 01', 'yyyymmdd : hh24 : mi') 및 b.sql_id = a.sql_id

노조 모두

v $ active_session_history a, v $ sqlarea b에서 a.sql_id, dbms_lob.substr (b.sql_text, 4000,1)을 선택하십시오.


여기서 to_date ( '20100930 : 09 : 00', 'yyyymmdd : hh24 : mi')와

to_date ( '20100930 : 09 : 01', 'yyyymmdd : hh24 : mi') 및 b.sql_id = a.sql_id

고려 사항

또한 Oracle은 Automatic Workload Repository에 SQL 문에 대한 매시간 실행 통계를 생성합니다. dba_hist_sqlstat 및 dba_hist_snapshot 데이터 딕셔너리 뷰를 질의하여 주어진 시간에 더 많은 리소스가 필요한 SQL 문을 볼 수 있습니다.

효과

예를 들어, 다음 쿼리는 CPU 시간, 경과 시간, io_wait 시간 및 디스크 액세스 수 이외에 오전 9 시부 터 오전 10시 사이에 실행 된 SQL 문의 목록을 반환합니다. 출력은 CPU 시간순으로 정렬됩니다.

dba_hist_sqlstat a, dba_hist_sqltext b에서 a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, iowait_delta, iowait_delta, disk_reads_delta를 선택하십시오. 여기서 a.sql_id = b.sql_id 및 snap_id = (db_hist_snapshot에서 distinct snap_id를 선택하십시오. cpu_time에 의해 (begin_interval_time, 'yyyymmdd : hh24 : mi') = '20100930 : 09 : 00'및 to_char (end_interval_time, 'yyyymmdd : hh24 : mi') = '20100930 : 10 : 00'

/