Update: смотри также статью Самые загруженные тома в vxvm

Как определить наиболее «тяжелые» сеcсии по операциям ввода-вывода в Oracle? Или какие из файлов данных имеют наибольшую нагрузку?
Несколько sql скриптов, которые помогут выяснить эту проблему:

Операции чтения по сессиям:
select SID, BLOCK_GETS, PHYSICAL_READS, PHYSICAL_WRITES, BLOCK_CHANGES from V$SESS_IO order by PHYSICAL_READS;

select a.USERNAME, b.PHYSICAL_READS, c.SQL_TEXT from V$SESSION a, V$SESS_IO b , V$SQL c where a.SQL_ADDRESS=c.ADDRESS and b.SID=a.SID order by PHYSICAL_READS;


Операции записи по сессиям:
select SID, BLOCK_GETS, PHYSICAL_READS, PHYSICAL_WRITES, BLOCK_CHANGES from V$SESS_IO order by PHYSICAL_WRITES;

select a.USERNAME, b.PHYSICAL_WRITES, c.SQL_TEXT from V$SESSION a, V$SESS_IO b , V$SQL c where a.SQL_ADDRESS=c.ADDRESS and b.SID=a.SID order by PHYSICAL_WRITES;

Количество физических операций ввода-вывода на конкретных файлах данных:
select a.name,b.PHYRDS,b.PHYWRTS,b.PHYBLKRD,b.PHYBLKWRT,b.SINGLEBLKRDS,b.READTIM,b.WRITETIM, b.SINGLEBLKRDTIM from v$datafile a,v$filestat b where a.file#=b.file# order by PHYRDS

Как использовать полученные сведенья?
На уровне Оракла:

  • прибить самые тяжелые сесии
  • оптимизировать запросы
  • добавить индексы
  • добавить файлы данных и распределить данные между ними

На уровне ОС:

  • Распределить файлы данных на разные физические устройства (диски или дисковые массивы)
  • Сделать страйп на несколько физических устройств
  • Перенести часть данных на другие контроллеры сервера

Один комментарий на запись “Как определить сессии с наибольшим вводом-выводом в Oracle?”

  1. shulpin пишет:

    На уровне ОС:

    Как вариант разнести луны на разные порты массива