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
Как использовать полученные сведенья?
На уровне Оракла:
- прибить самые тяжелые сесии
- оптимизировать запросы
- добавить индексы
- добавить файлы данных и распределить данные между ними
На уровне ОС:
- Распределить файлы данных на разные физические устройства (диски или дисковые массивы)
- Сделать страйп на несколько физических устройств
- Перенести часть данных на другие контроллеры сервера
21.08.2009 в 18:05
На уровне ОС:
…
Как вариант разнести луны на разные порты массива