Топ-100
 

Oracle TOP SQL

Модуль позволяет определить запросы вносящие максимальный вклад в утилизацию тех или иных ресурсов базы данных Oracle, а так же получить рекомендации по улучшению производительности запросов

Oracle Top SQL - window.jpg

Top type

  • Buffer

  • Physical Reads

  • Executions

  • Parse Calls

  • Sharable Memory

  • Version Count

Последовательность действий

  • Из выпадающего списка "Top type" выбрать тип группировки

  • В поле "Number of displayed rows" указать количество отображаемых строк

  • Нажать кнопку "Show data

Oracle Top SQL - view SQL.jpg

Просмотр информации по запросу

  • Выделить строку в списке "List query"

  • В поле "Query text" отобразится сам запрос

  • На вкладке "Plan" план запроса

  • При переключении на вкладку "Recomendation" формируются рекомендации по оптимизации запроса с помощью DBMS_SQLTUNE

Oracle Top SQL - view recommendation.jpg

Запросы

Buffer

->Запрос для извлечения данных<-

SELECT * FROM
(SELECT sql_fulltext sql,
        sql_id,
        buffer_gets, executions, buffer_gets/(nvl2(executions,1,1)) "Gets/Exec",
        hash_value,address
   FROM V$SQLAREA
  WHERE buffer_gets > 10000
ORDER BY buffer_gets DESC)
WHERE rownum <= 100

-----

Physical read

->Запрос для извлечения данных<-

SELECT * FROM
(SELECT sql_fulltext sql,
        sql_id,
        disk_reads, executions, disk_reads/(nvl2(executions,1,1)) "Reads/Exec",
        hash_value,address
   FROM V$SQLAREA
  WHERE disk_reads > 1000
ORDER BY disk_reads DESC)
WHERE rownum <= 100

-----

Executions

->Запрос для извлечения данных<-

SELECT * FROM
(SELECT sql_fulltext sql,
        sql_id,
        executions,

        эrows_processed,

        rows_processed/(nvl2(executions,1,1)) "Rows/Exec", 
        hash_value,

        address
   FROM V$SQLAREA
  WHERE executions > 100
ORDER BY executions DESC)
WHERE rownum <= 100  

-----

Parse calls

->Запрос для извлечения данных<-

SELECT * FROM
(SELECT sql_fulltext sql,
        sql_id,
        parse_calls,

        executions,

        hash_value,

        address
   FROM V$SQLAREA
  WHERE parse_calls > 1000
ORDER BY parse_calls DESC)
WHERE rownum <= 100 

-----

Sharable memory

->Запрос для извлечения данных<-

SELECT * FROM
(SELECT sql_fulltext sql,
        sql_id,
        sharable_mem,

        executions,

        hash_value,

        address
   FROM V$SQLAREA
  WHERE sharable_mem > 1048576
ORDER BY sharable_mem DESC)
WHERE rownum <= 100 

-----

Version count

->Запрос для извлечения данных<-

SELECT * FROM
(SELECT sql_fulltext sql,
        sql_id,
        version_count,

        executions,

        hash_value,

        address
   FROM V$SQLAREA
  WHERE version_count > 20 
ORDER BY version_count DESC)
WHERE rownum <= 100 

-----

Load recomendation

->Запрос для извлечения данных<-

DECLARE
  my_task_name VARCHAR2 (30);
BEGIN
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK (
  sql_id      => $$SQL_ID,

  task_name   => $$TASK_NAME_GEN);
END;

/
begin

  DBMS_SQLTUNE.EXECUTE_TUNING_TASK ($$TASK_NAME_GEN);

end;

/
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK ($$TASK_NAME_GEN) "SQL" FROM dual;

-----