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

Влияние параметра DB_ULTRASAFE на производительность базы.

Рекомендации по результатам расследования инцидента с повреждёнными блоками на промышленном кластере.

Рекомендации orachk (раздел Maximum Availability Architecture (MAA) Scorecard):
Провести настройку параметров:
DB_BLOCK_CHECKSUM=FULL
DB_LOST_WRITE_PROTECT=TYICAL/FULL
DB_BLOCK_CHECKING=MEDIUM/FULL

To achieve the most comprehensive data corruption prevention and detection , use Oracle Active Data Guard and configure DB_BLOCK_CHECKSUM,DB_LOST_WRITE_PROTECT and DB_BLOCK_CHECKING database initialization parameters on the primary database and all standby databases in a Data Guard environment.

Установку этих параметров по отдельности можно заменить на установку единого параметра DB_ULTRA_SAFE:
DATA_ONLY - эквивалент:
  • DB_BLOCK_CHECKING = MEDIUM.
  • DB_LOST_WRITE_PROTECT = TYPICAL.
  • DB_BLOCK_CHECKSUM = FULL.
DATA_AND_INDEX - эквивалент:
  • DB_BLOCK_CHECKING = FULL.
  • DB_LOST_WRITE_PROTECT = TYPICAL.
  • DB_BLOCK_CHECKSUM = FULL.


Для установки степени влияния указанных параметров на работу БД были проведены следующие проверки:
На двух серверах gamma (Oracle 11.2.0.4) и iota (Oracle 12.1.0.2) произведена тестовая вставка данных:

insert into dbax.test_table select * from dbax.source_table where rownum < 100000;

Тестирование параметров DB_LOST_WRITE_PROTECT, DB_BLOCK_CHECKSUM, DB_BLOCK_CHECKING, установленных вручную.

При применении параметров DB_LOST_WRITE_PROTECT = FULL,DB_BLOCK_CHECKSUM = FULL и DB_BLOCK_CHECKING = FULL отмечено пятикратное снижение скорости операции.

При применении параметров DB_LOST_WRITE_PROTECT = FULL, DB_BLOCK_CHECKSUM = FULL и DB_BLOCK_CHECKING = MEDIUM отмечено снижение скорости в 1,5 – 2 раза.

Подробные результаты
на gamma:

db_lost_write_protect                FULL                           
db_block_checksum                    FULL                           
db_block_checking                    FULL                           
Elapsed: 00:00:30.60

db_lost_write_protect                FULL                           
db_block_checksum                    FULL                           
db_block_checking                    MEDIUM                         
Elapsed: 00:00:09.01

db_lost_write_protect                NONE                           
db_block_checksum                    OFF                            
db_block_checking                    OFF                            
Elapsed: 00:00:06.79

на iota:

db_lost_write_protect                FULL                           
db_block_checksum                    FULL                           
db_block_checking                    FULL                           
Elapsed: 00:00:23.03

db_lost_write_protect                FULL                           
db_block_checksum                    FULL                           
db_block_checking                    MEDIUM                         
Elapsed: 00:00:06.94

db_lost_write_protect                NONE                           
db_block_checksum                    OFF                            
db_block_checking                    OFF                            
Elapsed: 00:00:04.29

Как уже было отмечено, параметр DB_BLOCK_CHECKING = FULL увеличивает время выполнения операции до 5 раз.

Однако, Oracle сообщает, что параметр DB_BLOCK_CHECKING = MEDIUM позволяет обеспечить достаточный уровень обнаружения повреждённых блоков

"With DB_BLOCK_CHECKING=MED or FULL, logical data block corruptions can be detected and prevented on the primary or standby database."

При указанном значении – время выполнения увеличивается в 1,5 – 2 раза.

Тестирование параметра DB_ULTRA_SAFE:
Параметр DB_ULTRA_SAFE требует перезапуска экземпляра (scope=spfile), поэтому тестировался только на никем не занятом сервере gamma.

Внимание: Перед установкой требуется провести 
alter system reset ..
для DB_LOST_WRITE_PROTECT, DB_BLOCK_CHECKSUM, DB_BLOCK_CHECKING, иначе параметр DB_ULTRA_SAFE будет проигнорирован.

При установке на gamma параметра DB_ULTRA_SAFE = DATA_ONLY
время выполнения тестовой вставки составило       00:00:07.64 – замедление в 2 раза
при установке значения в OFF                                  00:00:04.66
при значении DATA_AND_INDEX                                 00:00:29.02 – замедление в 6 раз

Вывод:
Для обеспечения защиты от повреждённых блоков с наименьшим ухудшением производительности можно рекомендовать установить параметры:
DB_ULTRA_SAFE = DATA_ONLY
Либо
DB_LOST_WRITE_PROTECT = FULL                           
DB_BLOCK_CHECKSUM = FULL                           
DB_BLOCK_CHECKING = MEDIUM                      

Комментарии

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

Установка и настройка 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