Сен 272013
 

Режим block change tracking в ORACLE 10g и выше позволяет уменьшить время инкрементального бэкапа за счёт ведения лога изменённых блоков с момента бэкапа предыдущего уровня.

Как это работает?

Continue reading »

Дек 072012
 

Пару дней назад разработчик отлаживал некое приложение и обнаружив в файле трассировки странное явление, обратился ко мне. Приложение тормозило на вставке строк в таблицу, а в трейсе было вот что:

select file#, block# 
from
 seg$ where type# = 3 and ts# = :1


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       48      0.00       0.00          0          0          0           0
Execute     48      0.02       0.01          0          0          0           0
Fetch       48      7.93       7.78          0     699504          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      144      7.95       7.80          0     699504          0           0

Из 8 секунд ожидания 7.78 секунды занимал этот запрос, причём на другой схеме, находящейся в другом табличном пространстве, ничего подобного не происходило. Версия БД - 10.2.0.4. Continue reading »

Мар 232012
 

Статья никоим образом не претендует на детальный мануал по настройке производительности UNIX-систем. Тут будет просто пара советов, как быстро найти проблему и попробовать понять, когда она началась. В целом, администратору баз данных этого будет достаточно. Continue reading »

Янв 272012
 

Обе утилиты экспорта данных, exp и expdp имеют параметр query, который позволяет экспортировать не все строки таблицы, а только те, которые попадают под условие. Беда в том, что в этом параметре допускается использовать только условие WHERE. Это может привести к тому, что план запроса, который будет использовать exp/expdp окажется крайне неоптимальным, и экспорт будет идти неприемлемо долго, хотя результирующий набор не такой уж большой.
Есть любопытный способ заставить утилиту использовать hint, тем самым выбирать оптимальный план выполнения. Continue reading »

Дек 232011
 

Про этот параметр писали уже много где, например, просто и толково на русском языке написано тут и тут. Причём много где утверждают, что установка данного параметра в значение FORCE или SIMILAR - априори хорошо и безвредно. В этой заметке я постараюсь разъяснить, почему это не совсем так. Continue reading »

Мар 282011
 

При анализе вывода утилиты vmstat в Solaris и HP-UX стоит обратить внимание на колонку sr (Scan Rate). Большие значения в этой колонке в течение продолжительного времени - признак того, что у системы начинаются проблемы с памятью. Такое бывает из-за неправильной конфигурации, утечек в приложениях, etc.

Что такое Scan Rate?

Continue reading »

Мар 152011
 

В Solaris и HP-UX есть утилита iostat, которая позволяет посмотреть статистику ввода-вывода по дискам. Но если используется Veritas Volume Manager, то удобнее будет воспользоваться утилитой /usr/sbin/vxstat, т.к. она показывает статистику не только по дискам, но и по томам, субдискам, плексам, и т.д.

Вот, например, как можно посмотреть статистику ввода-вывода в группе test с использованием мегабайт вместо блоков в качестве единицы измерения: Continue reading »

Фев 212011
 

Если на основном сервере в параметре log_archive_dest_n указана опция delay с ненулевым значением, то при выполнении операций, создающих большой объём redo (например, удаление или вставка большого количества данных в таблицы, импорт, пересекционирование крупных таблиц, etc.), возможна ситуация, при которой за этот временной промежуток нагенерится такое количество логов, что заполнится файловая система для их хранения и база остановится. Самое неприятное, что RMAN не бэкапит логи, которые ещё не были применены на standby-сервере.

Решение проблемы:

Continue reading »

Фев 102011
 

Впервые возможность быстрого секционирования (Fast Split Partitioning) появилась в 8 версии Oracle только для таблиц, секционированных стратегией range partitioning. В 9-й версии появилась возможность быстрого секционирования для стратегий LIST, RANGE-HASH и RANGE-LIST (о стратегиях секционирования я писал тут).
Чтобы был задействован механизм быстрого секционирования, нужно, чтобы выполнялись 3 условия: Continue reading »

Фев 032011
 

Секционирование таблиц и индексов в Oracle - неплохой способ повысить производительность базы данных и упростить администрирование. Все секции таблицы или индекса могут располагаться в разных табличных пространствах, что позволит, например, расположить их на разных дисках для увеличения производительности и степени параллелизма выполнения операций.
Oracle 10g поддерживает следующие виды секционирования: Continue reading »