Направление 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-2018. Дата последней модификации страницы:2018-01-09 13:25:30