Направление Oracle  
  Заметки про Oracle RAC  


Эти материалы являются объектом авторского права и защищены законами РФ и международными соглашениями о защите авторских прав. Перед использованием материалов вы обязаны принять условия лицензионного договора на использование этих материалов, или же вы не имеете права использовать настоящие материалы

Авторская площадка "Наши орбиты" состоит из ряда тематических подразделов, являющихся моими лабораторными дневниками, содержащими записи за разное, иногда продолжительно отличающееся, время. Эти материалы призваны рассказать о прошедшем опыте, они никого ни к чему не призывают и совершенно не обязательно могут быть применимы кем-то ещё. Это только лишь истории о прошлом

обзор возможностей

Материалы настоящего раздела носят собирательный характер и в настоящее время не являются законченными

Основными понятийными блоками для RAC являются:

  • встроенные в СУБД Oracle средства одновременной работы нескольких экземпляров с одной базой данных, в т.ч. механизм разделяемого кэша (Cache Fusion)
  • специализированное хранилище для базы данных, делающего БД доступной нескольким физическим узлам с запущенными экземплярами
  • специализированный кластерный софт от Oracle, обеспечивающий запуск и остановку отдельных компонент кластера в правильной последовательности с учётом зависимостей
  • использование (под UNIX) средств ОС для соединения между узлами (например, беспарольная авторизация через SSH, используемая, в частности, при установке софта в кластере - установка производится на один хост, после чего тарится, передаётся на другие узлы кластера и растаривается)
  • технология виртуальных интерфейсов, когда при выбытии узла VIP выбывшего поднимается на других узлах без обработки, что позволяет клиентам мгновенно увидеть недоступность и переконнектиться к другим узлам

Эти понятийные блоки позволяют углубляться дальше в тему. Далее - более подробно по понятийным блокам:

Подготовка развёртывания среды

Предварительные требования

  • от 1Gb Ram, swap
  • от 400mb /tmp
  • IP и два интерфейса, причем имена узлов должны совпадать с внешним IP
  • дополнительные пакеты ОС и патчи в соответствии с документацией, для Linux опционально возможен ещё и модуль ядра hangcheck-timer
  • наличие групп oinstall (основная) и dba, пользователя oracle и nobody, выставить для пользователя oracle umask 022, переменные DISPLAY, TMP, TMPDIR, ORACLE_BASE
  • для Linux выставляются в /etc/security/limits.conf лимиты «soft nproc 2047, hard nproc 16384, soft nofile 1024, hard nofile 65536» и применяются включением в /etc/pam.d/login «session required /lib/security/pam_limits.so»
  • настроить беспарольное хождение через ssh или rsh между узлами кластера для пользователя oracle
  • также необходимо выставить параметры ядра, предусмотреть место под TBS, при использовани RAW провести подготовительные мероприятия (описать отдельной темой)

справочно - параметры ядра /etc/sysctl.conf

...
kernel.sem = 25032000 100 128
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
fs.file_max = 65536
rmem.max = 262144
rmem.default = 262144
wmem.max = 262144
wmem.default = 262144
net.ipv4.ip_local_port_range = 1024 65000
...

Важно помнить о специфичных для кластера понятиях файла регистра Oracel (OCR) и файла голосования (voting file). Оба должны быть доступны всем экземплярам, как и единственный spfile, и контрольные файлы, и архивные, и оперативные журналы. Файл регистра до версии 11 не мог располагаться на ASM, с 11 версии всё можно держать в ASM

Условия функционирования

RAC имеет обязательные инициализационные параметры

CLUSTER_DATABASE=TRUE
CLUSTER_DATABASE_INSTANCES=количество экземпляров
CLUSTER_INTERCONNECT=имя, если несколько
DB_NAME=имя_базы
DISPATCHERS=только для MTS
MAX_COMMIT_PROPAGATION_DELAY=однако с 10gR2 устарел
SPFILE=должен быть один и на разделяемом хранилище
THREAD=количество нитей REDO

Также есть параметры, которые должны быть идентичны для всех экземпляров

ACTIVE_INSTANCE_COUNT - аналог горячего стэндбая
ACTIVE_LAG_TARGET - время переключения журналов (принудительное)
CLUSTER_DATABASE - обязателен для кластерной базы
CONTROL_FILES
DB_BLOCK_SIZE
DB_DOMAIN
DB_FILES
DB_NAME
DB_RECOVERY_FILE_DEST - к определению FRA
DB_RECOVERY_FILE_DEST_SIZE - к определению FRA
DB_UNIQUE_NAME - пользуется для DataGuard
MAX_COMMIT_PROPAGATION_DELAY
TRACE_ENABLED
UNDO_MANAGEMENT

И параметры, обязательно уникальные для экземпляров

THREAD - количество нитей оперативных журналов
ROLLBACK_SEGMENTS
INSTANCE_NAME - уникальный для экземпляра
INSTANCE_NUMBER - уникальный для экземпляра
UNDO_TABLESPACE - для каждого экземпляра необходимо своё пространство отмены

Особенности развёртывания

В процессе развёртывания соблюдается последовательность

  • развёртывание Oracle ClusterWare
  • развёртывание Oracle ASM (опционально)
  • развёртывание Oracle DB Engine
  • развёртывание агента
  • развёртывание баз (создавать через dbca, по созданию выверить «srvctl config database -d racdb»

Важной особенностью является исполнение файлов от root в процессе установки - параллельное исполнение не допускается (в том числе на нескольких узлах), необходимо дожидаться окончания работы скриптов

В конце рекомендуется забыкапить файл голосования комангдой «dd if=путь_voting_файл of=бэкап_файл»

Резервирование и восстановление cреды

Мониторинг среды

Добавление и удаление узлов

Управление компонентами среды

ещё не описано

Сводная информация по командам:

dd -f=/dev/zero -of=.../voting bs=1024k
/etc/init.d/rawdevices start - таки сырые устройства - отдельный вид, но будет убран из нового RedHat

$CRS_HOME/bin/cemulto - говорит имя кластера
$CRS_HOME/bin/crsctl - управление кластерным ПО
$CRS_HOME/bin/crsstat
$CRS_HOME/bin/crs_stat -t
$CRS_HOME/bin/ocrconfig

Надо понимать, что sqlplus может одновременно тушить/поднимать только один экземпляр, а вот srvctl работает со всеми. Однако для sqlplus есть исключения, например ALTER SYSTEM CHECKPONIT и ALTER SYSTEM ARCHIVE LOG CURRENT охватят все экземпляры. Для фиксации базы одним экземпляром существует команда ALTER SYSTEM QUIESCE RESTRICTED/ALTER SYSTEM UNQUIESCE

srvctl start/stop instance/database -d имя_базы [-i имя_инстанса] [-c CONNECT_STRING] \
       -o open/mount/nomount/normal/transactional/immediate/abort

Немного об ASM:

Существует две реализации кластерных файловых систем от Oracle - OCFS и ASM, из которых вторая является майнстримом. При установке ASM производится установка отдельного экземпляра Oracle (с фоновыми процессами RBAL - перебалансировка активности групп, ARBx - обработка экстентов данных, GMON - управление метаданными), используемого для управления метаданными, тогда как модификации данных производятся непосредственно экземплярами БД, для чего запускается 2 новых фоновых процесса - ASMB (взаимодействие с ASM экземпляром) и RBAL (открытие файловых групп)

Для ASM экземпляра совместно с RAC необходимо указать CLUSTER_DATABASE = TRUE, ASM_DISKGROUP - различные экземпляры могут иметь разные значения, однако на каждом узле кластера разворачивается свой ASM экземпляр, и все разделяемые дисковые группы должны быть смонтированы для каждого ASM экземпляра, ASM_DISKSTRING должен указывать на некоторые физические устройства, и значение может отличаться, если на разных узлах устройство смапировано на разные файлы устройств, ASM_POWER_LIMIT указывает максимальное количество процессов ребалансировки

ASM в RAC управляется командой srvctl, что позволяет добавить и удалить экземпляр в OCR (ADD/REMOVE), активировать и выключать рестарт ASM экземпляра при рестарте (ENABLE/DISABLE), стартовать и тушить экземпляр (START/STOP immediate/abort/normal/transactional), определять зависимости (MODIFY INSTANCE), получать конфигурацию и статус (CONFIG/STATUS). Примеры:

# стартовать и потушить ASM
srvctl start asm -n имя_узла [-o open|mount|nomount]
srvctl stop asm -n имя_узла -o immediate
# добавить данные о ASM экземпляре в OCR и выставить зависимость DB от ASM
srvctl add asm -n имя_узла -i +ASM1 -o /ora/ora11
srvctl modify instance -d crm -i crm1 -s +ASM1
# отключить авторестарт ASM
srvctl disable asm -n имя_узла -i +ASM1

Немного о резервировании:

При использовании метода размыкания зеркала удобно использовать команды ALTER SYSTEM SUSPEND/RESUME, на время предотвращающими работу БД с дисками. Вообще прои резервировании нужно понимать, что каждый экземпляр имеет свои оперативные и архивные журналы, которые должны быть доступны всем экземплярам или через ASM/OCFS, или через NFS-like. Восстановление подразумевает доступ экземпляра - восстановителя к журналам всех экземпляров

Немного про RAW устиройства:

Как вариант можно использовать сырые устройства. Заметки для варианта для linux описываются здесь

  • после разметки партиций через fdisk нужно подготовить файл с описанием будущих raw-устройств /etc/sysconfig/rawdevices по формату «/dev/raw/raw1/dev/sdc1»
  • для партиции регистра нужно сказать «chmod 640 /dev/raw/rawN ; chown root:dba /dev/raw/rawN»
  • для прочих партиций нужно сказать «chmod 640 /dev/raw/rawN ; chown root:oinstall /dev/raw/rawN»
  • подключить устройства командой «service rawdevices restart»

Посмотреть смонтированные можно командой «raw -qa». Далее необходимо сказать Oracle, как мапировать RAW устройства, для чего создаётся файл мапирования «mkdir -p $ORACLE_HOME/admin/имя_базы ; chmod 755 $ORACLE_HOME/admin/имя_базы ; chown root:oinstall $ORACLE_HOME/admin/имя_базы» по формату объёкт_TBS=RAW_устройство, и далее переменной окружения DBCA_RAW_CONFIG присваивается полный путь к файлу

Также есть требования от Oracle для таких RAW устройств:

SYSTEM = 1 на кластер 500 Мб  минимум
SYSAUX = 1 на кластер 300 Мб  минимум + 250 Мб минимум на каждый экземпляр
UNDOTBSn = 1 на кластер 500 Мб минимум, или RBS= для ручного управления сегментами
EXAMPLE = 1 на кластер 160 Мб минимум
USERS = 1 на кластер 120 Мб минимум
redo logs = по 2 минимум на каждый экземпляр, 120 Мб на каждый журнал 
контрольные файлы = 110 Мб на каждый контрольный файл (минимум 2)
TEMP = 1 на кластер 250 Мб минимум
SPFILE = 1 на кластер 5 Мб минимум
password file = 1 на кластер 5 Мб минимум
OCR vol = 1 на кластер 100/120 Мб минимум
voting disk = 1 на кластер 20 Мб минимум

немного об Oracle ClusterWare:

Продукт после развёртывания стартует при загрузке узла (из /etc/inittab для linux), и может управляться через команду «crsctl start|stop|enable|disable crs», тогда как общий цикл команд может выглядеть так «profile - register - start - stat - relocate - stop - unregister»

Основные утилиты управления - crsctl, crsstat, crs_stat, ocrconfig, ocrcheck, ocrdump, srvctl, oifcfg, crs_profile, crs_register, crs_start, crs_relocate, crs_stop, crs_unregister

Белонин С.С. (С), октябрь 2010 года

(даты последующих модификаций не фиксируются)


 
        
   
    Нравится     

(C) Белонин С.С., 2000-2024. Дата последней модификации страницы:2019-12-04 00:43:28