К основному контенту

Диагностика работы дисковой подсистемы БД Oracle

Заказчик подозревает проблемы в работе дисковой подсистемы своих центральных серверов БД.
Задача: подтвердить или опровергнуть подозрение.

Определение проблем в работе подсистеме ввода/вывода.
События ожидания Oracle, свидетельствующие о наличии возможных проблем в дисковой подсистеме:
db file sequential read
db file scattered read
read by other session
db file async i/o submit
direct path read
direct path write / direct path write temp
db file parallel read
async disk IO | ksfd: async disk IO
control file sequential read

Также о проблемах подсистемы ввода вывода могут свидетельствовать следующие события, связанные с обработкой REDO логов:
log file sync
log file switch completion
log file switch (checkpoint incomplete)
{ARCH | LGWR | LNS} wait on ATTACH
{ARCH | LGWR | LNS} wait on SENDREQ
{ARCH | LGWR | LNS} wait on DETACH
LGWR-LNS wait on channel

Основным средством диагностики работы дисковой подсистемы и связанных с ней проблем являются отчеты AWR и ASH. Внимание следует обратить на  разделы: Top 5 Timed Foreground Event (AWR) и Top User Events (ASH).
Пример системы, имеющей проблемы в работе дисковой подсистемы (i/o-bound):
Top 5 Timed Events
                                                      % Total
Event                            Waits    Time (s) Ela Time
--------------------------- ------------ ----------- --------
db file sequential read            2,598       7,146    48.54
db file scattered read            25,519       3,246    22.04
library cache load lock              673       1,363     9.26
CPU time                              44       1,154     7.83
log file parallel write           19,157         837     5.68

Текущее состояние дисковой подсистемы на центральных серверах заказчика.
Фрагмент отчета AWR (Top 5 Timed Foreground Events) по основным событиям ожидания на сервере XP-01 в период пиковой нагрузки.

Event Waits Time(s) Avg.wait (ms) %DB time Wait Class
DB CPU 1342659 70,3
db file sequential read 28217784 186771 7 9,08 User I/O
Replication Dequeue 1058652 58566 55 3,01 Other
SQL*Net message from dblink 869053 25653 30 1,03 Network
latch: shared pool 182601 24521 134 1,03 Concurrency

Из приведенных данных можно сделать вывод, что операции ввода вывода не оказывают существенного влияния на работу центральных серверов. Так, среднее время ожидания дисковых операций составляет от 2 до 7 миллисекунд.

Комментарии

Популярные сообщения из этого блога

Установка и настройка pgAgent(планировщика заданий PostgreSQL)

Установка pgAgent Последняя версия скрипта для установки агента  тут . Перенести инструкцию по агенту в отдельную тему. 1. Создать пользователя ОС, и сделать ему домашний каталог: useradd -s /bin/false -r -M pgagent mkdir /home/pgagent 2. Установить и настроить демон: yum install pgagent_94 При наличии ошибок вида (была на Oracle Linux 6.8) Error: Package: pgagent_94-3.4.0-1.rhel6.x86_64 (pgdg94)            Requires: libwx_baseu-2.8.so.0(WXU_2.8)(64bit) Нужно установить EPEL systemctl enable pgagent_94 chown pgagent:pgagent /var/log/pgagent_94.log 3. Установить схему агента в базе: sudo -u postgres psql -f /usr/share/pgagent_94-3.4.0/pgagent.sql postgres 4. Создать файл паролей для подключения агента к базе. vi /home/pgagent/.pgpass localhost:5432:*:postgres:postgres chown pgagent.pgagent /home/pgagent -R chmod 600 /home/pagent/.pgpass 5. Запустить и проверить работу агента systemctl start pgagent_94.service systemctl status pga

Включение логирования для Haproxy

Изначально логирование в syslog в HaProxy отключено. Ниже пример настройки логирования для ОС Centos 7. Настройка: Добавить строку  log 127.0.0.1 local2 в секцию global файла /etc/haproxy/haproxy.cfg Раскомментировать $ModLoad imudp и $UDPServerRun 514 в файле  /etc/rsyslog.conf Создать файл  /etc/rsyslog.d/haproxy.conf со следующим содержимым:  local2.* /var/log/haproxy.log Перезапустить rsyslog и haproxy.

Использование oraenv для установки окружения.

Для настройки окружения в Linux можно все параметры базы указать в .bash_profile: ORACLE_HOME=/app/oracle/product/11.2.0.4/dbhome_1 export ORACLE_HOME ORACLE_BASE=/app/oracle export ORACLE_BASE ORACLE_SID=orcl export ORACLE_SID PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin export PATH Но лучше использовать для этих целей утилиту oraenv. oraenv берет данные из файла /etc/oratab orcl:/app/oracle/product/12.1.0/dbhome_1:N И на ее основе задает параметры окружения: ORACLE_SID, ORACLE_BASE,ORACLE_HOME и PATH Использовать можно в интерактивном режиме: . oraenv ORACLE_SID = [orcl] ? orcl The Oracle base has been set to /app/oracle И в неинтерактивном режиме. Добавить в  .bash_profile: ORACLE_SID=orcl ORAENV_ASK=NO . oraenv Для ASM ситуация аналогичная. . oraenv ORACLE_SID = [orcl] ? +ASM1 The Oracle base has been set to /u01/app/oracle echo $ORACLE_HOME /app/11.2.0/grid