Направление Oracle  
  Мой тезисный перевод разделов руководства по ASM 12  

Как обычно задача этого перевода - заякорить тему в психике достаточно, чтобы она не вымывалась другими темами. Поэтому полностью переводить книгу я не планирую, только ту часть, после перевода которой тема ASM перестанет быть сложной для восприятия. Хотя до сих пор считаю, что ASM нужен только для кластерных конфигураций, ибо здесь Oracle залез на давно окученное операционными системами поле

1 Раздел описывает концепции и возможности ASM

ASM - менеджер томов и файловая система от вендора, альтернатива системным, поддерживающая отдельные БД и RAC, рекомендованная вендором. ASM использует дисковые группы для хранения файлов данных, группы являются коллекциями дисков, управляемых как отдельные юниты. Внутри дисковой группы реализуется интерфейс файловой системы для файлов базы, а содержимое файлов распределяется для реализации горячей замены и производительности, сопоставимой с сырыми устройствами

Вы можете добавлять или удалять диски из файловой группы во время использования её базой данных, при этом файлы автоматически перераспределятся для исключения простоя и обеспечения сропоставимой с сырыми устройствами производительности

ASM обеспечивает гибкое сервер-ориентированное зеркалирование, включая двойную и тройную избыточность, а также внешнее зеркалирпование через RAID, также возможно использование OMF для автоматического размещения и именования файлов. Заявлено уменьшение нагрузки на администратора путём консолидации в небольшом количестве дисковых груп разных дисков для множества баз данных и заявлено увеличение производительности ввода-вывода

Файлы, размещённые в ASM, могут сожительствовать с сырыми устройствами и сторонними файловыми системами, что облегчает переход на ASM

Управление ASM осуществляется через интерфейсы SQLplus, утилиты командной строки ASM и ASMCA (configuration assistent)

Кластерная система Oracle ACFS является масштабируемой и мультиплатформенной файловой системой и технологией управления хранением, и расширяет ASM для поддержки файлов заказчика. Динамический менеджер томов (ADVM) предоставляет сервисы управления томами и и интерфейс стандартного дискового драйвера для клиента

Экземпляр ASM построен на тех же технологиях, что и экземпляр БД, он имеет SGA и фоновые процессы, похожие на БД, однако в силу иных задач размер SGA. существенно меньше, чем у БД. ASM оказывает минимальный эффект на производительность сервера, экземпляр ASM монтирует дисковые группы для предоставления их экземпляру БД, но не монтирует базу

Софт устанавливается в домашний каталог Grid Infrastructure, отличный от каталога СУБД. Экземпляры ASM и БД требуют совместного доступа к дискам - экземпляр ASM управляет метаданными в дисковых группах и обеспечивает информацию о размещении файлов для экземпляра базы

Метаданные - информация для контроля дисковых групп, размещённая внутри дисковых групп, она включает: принадлежность дисков к группе, объём доступного. места в группе, имена файлов, размещение в группе экстентов, опреативные журналы с данными автоматического изменения блоков метаданных, информацию ADVM

Экземпляр ASM может кластеризоваться с помощью Oracle Clusterware, размещая по экземпляру на каждом узле кластера, и если есть несколько экземпляров БД для разных баз, они разделяют единственный экземпляр ASM на узле. Если экземпляр стандартного кластера ASM на узле падает, то падают и все экземпляры БД, но если сконфигурирован ASM FLEX - экземпляры БД могут не упасть, используя экземпляр ASM другого узла

В отличие от отказа файлового драйвера отказ ASM не требует рестарта БД, в RAC окружении экземпляры БД и ASM выживших узлов проводят автоматическое восстановление отказавшего экземпляра ASM

Для разделения дисковой группы по нескольким узлам необходимо установить на всех них Clusterware, независимо от установки или неустановки RAC. Экземпляр ASM ни отдельном узле не требует включения в кластер, но без него не сможет общаться с другими экземплярами. Множественные ноды, не являющиеся частью ASM кластера, не могут разделять дисковые группы

Дисковые группы содержат множество дисков и являются фундаментальным объектом управления ASM. Каждая дисковая группа содержит метаданные для управления местом в группе, компоненты дисковой группы включают диски, файлы, единицы размещения (allocation unit)ю Файлы размещаются в дисковых группах, каждый ASM файл размещён в одной дисковой группе, однако дисковая группа может содержать файлы разных баз, и разные базы могут хранить файлы в нескольких дисковых группах. Для большинства инсталляций нужно немного групп, обычно две и редко больше трёх

Защита целостности данных резервированием заключается в хранении копий данных на нескольких дисках. При создании дисковой группы указывается один из трёх видов избыточности: Normal (2 копии), High (3 копии) или Extertnal (защита внешним решением типа RAID). Уровень избыточности определяет, сколько дисковых ошибок допустимо до размонтирпования группы и потери даных. Тип дисковой группы определяет, как в ней будут создаваться файлы (расширенная информация в разделе о шаблонах дисковых групп). Зеркалирование ASM гибче традиционного RAID. Для дисковой группы с уровнем избыточности NORMAL можно переопределить его для каждого файла

При размещении зеркалируемого экстента ASM размещает основную и зеркальную копии, выбирая для зеркальной копии диск из другой failure группы, чем выбранная для основной копии. Failure (группы отказа) используются для размещения каждой из зеркалируемых копий на дисках разных групп отказа, так что одновременный отказ всех дисков одной failure group не приведёт к потере данных. Гркппы отказа задаются при создании дисковых групп, и после создания изменить уровень избыточности дисковой группы нельзя. Если не указывать явно - каждый диск помещается в свою группу отказа, за исключением дисковых групп, содержащих диски Exadata cells. Группа с уровнем избыточности Normal требует как минимум две группы отказа, High - три, External - не требует ни одной группы отказа

Дисками могут быть диск или партиция массива, диск или партиция диска, логический том, сетевой диск (NFS). Перед добавлением диска в группу нужно назначить ему имя, или оно будет назначено автоматически. Имя должно отличаться от пути, используемого в операционной системе. В кластере диск модет подключаться отличающимися именами операционной системы, но имеет одинаковое ASM имя на всех узлах. В кластере диск должен быть доступен всем экземплярам, разделяющим дисковую группу

ASM распределяет файлы пропорционально по всем дискам, входящим в дисковую группу, что обеспечивает одинаковый уровень заполнения дисков и даёт уверенность в равномерной нагрузке по вводу-выводу. По причине загрузки балансировщиком всех дисков, диски ASM не должны разделять физический даск

Каждый диск размечается на allocation unit (AU, модули размещения) - фундаментальные единицы дисковых групп, из одного или нескольких AU состоят файловые экстенты, файл может включать один или несколько экстентов. Размер allocation unit задаётся при создании дисковых групп параметром AU_SIZE, допустимы величины 1, 2, 4, 8, 16, 32, 64 Мб. Большие величины востребованы в хранилищах данных (DWH)

Сохраняемые в ASM файлы называются файлами ASM. Каждый ASM файл находится в одной файловой группе, база данных общается с ASM в терминах файлов. Это упрощает понятия использования базой любой файловой системы. Сохранять можно разные типы файлов: контрольные файлы, файлы данных, временные файлы и копии файлов данных, SP файлы, оперативные и архивные журналы, журналы Flashback, бэкапы RMAN, конфигурации аварийных восстановлений, битовые карты change tracking, дампы DataPump. ASM самостоятельно генерирует имена файлов при создании файлов и табличных пространств, начиная их с символа плюс и имени дисковой группы, вы можете создать удобные алиасы и выстроить их в иерархическую структуру каталогов для алиасов

Содержимое файлов ASM сохраняется в дисковой группе как набор или коллекция экстентов, расположенных на отдельных дисках группы, каждый экстент находится на одном диске группы, и содержит один или несколько allocation units. Для приспосабливания к увеличивающимся файлам используется переменный размер экстента, включающий поддержку наибольших файлов, уменьшая требования к SGA для очень больших баз и увеличавает производительность при операциях создания и открытия больших файлов. Начальный размер экстента равен размеру заданного для дисковой группы allocation unit и увеличивается с множителем 4 или 16 до заданного порога. Для дисковых групп с AU < 4 Mb для первых 20 тыс. экстентов размер экстента = AU, для следующих 20 тыс. размер экстента равен 4*AU, далее равен 16*AU. Если размер AU для дисковой группы >= 4 Мб, или параметр RDBMS compatiblity больше или равен 11.2.0.4, по количество экстентов каждого вида (AU, 4*AU, 16*AU) вычисляется для обеспечения максимального размера файла. Эта опция включается для новых или изменяемых групп с параметром совместимости 11.1 или выше (про совместимость отдельный раздел)

Распределение в ASM нужно для балансировки нагрузки (крупнозернистый с размером страйпа = размер AU) и уменьшения времени отклика (мелкозернистый с размером страйпа 128 Кб для оптимизации мелких операций ввода/вывода за счёт более широкого распределения нагрузки), при этом файл разбивается на куски (chunk), размещаемые в экстентах на разных дисках. В случае мелкозернистого распределения сначала заполняются по куску на диск первые экстенты, дробя AU на более мелкие куски, переходя ко вторым и т.д., а в случае крупнозернисторо распределение счёт идет на целые AU

Шаблоны являются коллекциями значений атрибутов, определяющих дисковые диапазоны, зеркалирование и страйпинг и существуют для каждого типа файлов по умолчанию, возможна кастомизация. При создании файла можно применить отдельный шаблон вместо шаблона для типа файлов

Процесс обнаружения определяет принятые в операционной системе имена дисков для ASM, и находит все диски, включаемые в дисковые группы или те, что должны быть включены. Экземпляр ASM имеет содержащий строку обнаружения параметр инициализации ASM_DISKSTRING, и только разрешённые пути доступа будут однаружены, причём требования к синтаксису зависят от многих факторов - например платформы и использования Exadata. Пути доступа, принимаемые операционной системой, всегда используются как строка обнаружения (есть больше информации по строке обнаружения и фильтр-драйверу)

Перед получения доступа экземпляром БД обязательно монтирование дисковых групп локальным экземпляром ASM, в т.ч. опеределения всех дисков для дитсковой группы и всех файлов. Вы можете явно размонтировать группу, но если в ней есть открытые файлы и нет опции форсирования - Oracle выдаст ошибку. Возможно иметь дисковые ошибки, превышающие параметны избыточности ASM, при этом дисковая группа принудительно размонтируется и база данных не сможет получить доступ к её файлам

Вы можете добавить диск в существующую группу для расширения ёмкости или увеличения производительности. Строка обнаружения обуславливает диски, которые можно добавить, и добавляемые диски должны обнаруживаться каждым экземпляром ASM через установку инициализационного параметра ASM_DISKSTRING. После добавления диска опреация ребеленсировки перемещает данные на новый диск, и для оптимизации ввода-вывода оптимально добавлять несколько дисков сразу

Также можно удалить диск из группы после отказа или по иным причинам, для чего необходимо использовать ASM имя диска, но не имя строки обнаружения. Если ASM зафиксирует ошибки записи на диск, такой диск будет исключён из группы автоматически

Ребалансировка дисколвой группы приводит к перемещению файлов по дискам группы для того, чтобы быть уверенным в равномерном распределении данных по всем дискам группы. Если файлы равномерно распределены и диски заполнены с одним процентом заполнения, то это обеспечивает балансировку нагрузки. Ребалансировка не перемещает данные на основании статистики ввода/вывода, и не стартует на основании статистики ввода/вывода, операция ребалансировки ASM контролируется размером дисков в группе

ASM автоматически запускает ребалансировку после изменения хранилища - добавления, удаления, изменения размеров дисков. Параметр запуска определяет скорость операции ребалансировки. Можно вручную перезапустить ьребалансировку с новыми параметрами, Ребалансировка перезапускается автоматически при остановке производившего ребалансировку экземпляра, пр этом базы могут продолжать свои операции в процессе ребалансировки. Для минимизации влияния на базу нужно использовать параметр ASM_POWER_LIMIT

2 Особенности хранилища ASM

важные мысли. Перед подготовкой вашего хранилища к ASM определите опции хранения и готовьте дисковое хранилище под окружение вашей ОС. Вы должны учитывать текущую ёмкость и будущие потребности. ASM упрощает задачу, но есть зависимости, например от размера дисков, пропускной способности канала между хранилкой и сервером, также при масштабировании кластера нужно не забыть смасштабировать хранилище

Дисковые группы можно делать на: дисковая партиция на диске или части диска, но диск ASM не может размещаться на партиции с таблицей партииций, ибо таблица партиций может быть переписана; LUN - это диск, презентуемый серверу массивом, рекомендуется RAID0+1/5 или иные; логический том - но из за дублирования функций Oracle не рекомендует использования логических томов и менеджера логических томов; дисковые группы могут быть созданы из NFS файлов (включая Oracle direct NFS), которые могут располагаться на разных серверах для балансировки нагрузки и управления ёмкостью. ADVM ACFS сейчас не поддерживают NFS/CIFS, но файловая система ACFS может быть расшарена как NFS/CIFS, только без ACL на UNIX клиентах. ACFS не поддерживает loopback усройства, а OUI и DBCA не поддерживают сырые и блочные устройства

Процедура подготовки - идентифицировать или создать все устройства по именам, изменить на них владельца, группу (=OSDBA для экземпляра ASM) и права, и обеспечить постоянство (udev может переписать), выставить корректный параметр распознавания ASM_DISKSTRING

Множественный доступ (multipathing) резервирует канал между хранилищем и сервером, увеличивает производительность и реализован на уровне драйвера ОС, создавая суммирующее псевдоустройство. ASM работает со множественным доступом, отдавая всю кухню опреационной системе, при этом псевдоустройство должно обнаруживаться посредством указания корректной строки обнаружения ASM_DISKSTRING. Если будет обнаружено несколько путей к дисковому устройству, будет ошибка

Рекомендуется: создавать две дисковые группы - под данные и FRA; количество LUN (Oracle ASM disks) как минимум вчетверо должно превышать количество активных путей доступа (для 2 путей восемь LUN одинаковой емкости и производительности). Активный путь - это одиночный канал доступа или множественный канал доступа. Убедитесь, что ASM диски имеют равную ёмкость и производительность, иначе производительность будет меряться по самому медленному. Распределение данных в группе зависит от ёмкости - для соблюдения баланса обеспечьте одинаковую ёмкость; сконфигурируйте минимум три группы отказа (failure group) для нормальной избыточности и пять для высокой, чтобы создать требуемое для устойчивости к сбоям количество копий PST (Partner Status Table); минимизируйте использование шпинделей не ASM нагрузкой; выбирайте размер страйпа массива как степень 2 и меньше или равным ASM allocation unit; используйте ASM filter driver (для Solaris также можно использовать опцию множественного доступа) для обеспечения консистентности наименования и постоянства прав доступа

ASM12 поддерживает СУБД от 10.1, но есть нюансы по совместимости в документации. и поддерживаются только опции не выше версии СУБД. Представление V$ASM_CLIENT показывает поля SOFTWARE_VERSION (версия ASM экземпляра) и COMPATIBLE_VERSION (параметр COMPATIBLE базы), доступно из экземпляров БД и ASM. Нужно установить несколько параметров, обычно достаточно по умолчанию. Для конфигурации Oracle Restart (standalone) разделяемый SPFILE и файл паролей лежат в дисковой группе. Но если испольховался PFILE - после обновления он же используется. Требования к этим файлам в БД и ASM одинаковы, для кластеров spfile нужно ложи ть на кластерную ФС. Ищется сначала в профиле grid, потом в $ORACLE_HOME/dbs/spfile+ASM.ora, потом PFILE

3 Администрирование экземпляра

Можно резервировать, копировать или перемещать ASM SPFILE командами ASMCMD spbackup, spcopy, spmove commands. Также можно использовать запрос SQL CREATE SPFILE, или использовать команды ОС. После копирования или перемещения SPFILE или PFILE, для использования новых версий требуется рестартовать экземпляр с SPFILE или PFILE. Если COMPATIBLE.ASM атрибут дисковой группы 11.2 или выше - можно создавать, копировать, перемещать ASM SPFILE в дисковой группе. При использовании CRETE SPFILE ='+...' обновляется также Grid Prifile, данные оттуда можно получить командой ASMCMD spget. Бэкап можно сделать на другую файловую группу через ASMCMD: spget; spcopy откуда куда ; spcopy -u путь_к_бэкапу куда_восстанавливать ;

Память. Даже не установленный явно - по умолчанию используется параметр MEMORY_TARGET (если выставить меньше - автоматически выставит 1Gb). Вендор строго рекомендует использовать его, но если он не установлен, но выставлены другие - экземпляр расчитывает оптимальное значение сам. Можно менять до MEMORY_MAX_TARGET. Не рекомендуется, но можно отключить AMMS через MEMORY_TARGET=0, тогда будет откат на отдельное управление SGA и PGA. Чтобы откатиться до механизма 10 версии, нужно сказать также ALTER SYSTEM SET SGA_TARGET=0

ASM_DISKGROUPS - список монтируемых по команде SQL ALTER DISKGROUP ALL MOUNT групп. При старте монтирование отрабатывает, если не сказать UMOUNT. По умолчанию NULL. Параметр динамический, при успешном создании или удалении имя группы добавляется в параметр или удаляется автоматически. До версии 12с поддерживалось 63 группы, дальше 511 групп

ASM_DISKSTRING - содержит строку определяемых ASM дисков, может содержать маску, диск не должен определяться дважды. Формат зависит от библиотеки ASM и операционки и может содержать шаблоны. Пример если не использовать filter driver и asmlib, звёздочка обязательна: /dev/rdsk/mydisks/*. Символ ?, стоящий первым - раскрывается в ORACLE_HOME, в пути - замещает один символ. Диск может использоваться только после распознавания, что может потребовать динамического изменения параметра для нового распознавания диска. По умолчанию NULL - все диски

ASM_POWER_LIMIT - мощность ребалансировки от 1 (0 отключает) до 1024, чем выше число - тем быстрее ребалансировка за счёт перегрузки ввода-вывода и большего количества процессов ребаланчировки. Для ASC compatibli >= 11.2.0.2 диапазон от 0 до 1024, раньше - до 11, если поставить больше, будет использоваться 11. Тажкже для отдельной группы можно выставить этот параметр через SQL ALTER DISKGROUP ... REBALANCE. Диапазоны те же, если использовать для уровня совместимости меньше 11.2.0.2 значение больше 11, выведется уведомление и будет использоваться значение 11. Значение используется только для ребалансировки - не для размещения новых данных на дисках

ASM_PREFERRED_READ_FAILURE_GROUPS - разделяемый запятой список failure групп, предпочтительно читаемых экземпляром, по умолчанию NULL, используется в основном на кластерах и его значение может отличаться для разных нод

DB_CACHE_SIZE - не нужно выставлять при автоматическом управлении памятью, определяет размер буферного кэша, содержащего блоки метаданных, по умолчанию зависит от окружения

DIAGNOSTIC_DEST - куда писать диагностику, по умолчанию ORACLE_BAS для grid infrastructure

INSTANCE_TYPE - кроме значений asm или rdbms, может использоваться asmproxy для Oracle Flex ASM

LARGE_POOL_SIZE - устанавливается только при ручном конфигурировании и зависити от окружения

PROCESSES - обычно подходит по умолчанию, формула для неЭксадаты (n - количество подключенных к ASM экземпляров) - n < 10 => PROCESSES = 50*n + 50, n >= 10 => PROCESSES = 10*n + 450. Для эксадаты PROCESSES = MAX(450 + 10*n, 1024)

REMOTE_LOGIN_PASSWORDFILE - должен совпадать с таким же у экземпляра БД

SHARED_POOL_SIZE - при автоуправлении памятью не выставляют, определяет память для управления экземпляром, также используется для определения выдеденного для хранилища экстентов места. Параметр зависит от окружения

Oracle рекомендует использовать автоматическое управление памятью в экземпляре БД, иначе придётся немного подстроить параметры для работы с ASM: PROCESSES - добавить к текущему значению 16, LARGE_POOL_SIZE добавить к текущему значению 600K, SHARED_POOL_SIZE определить объём данных и избыточность, потом посчитать значение

SELECT SUM(bytes)/(1024*1024*1024) FROM V$DATAFILE;
SELECT SUM(bytes)/(1024*1024*1024) FROM V$LOGFILE a, V$LOG b WHERE a.group#=b.group#;
SELECT SUM(bytes)/(1024*1024*1024) FROM V$TEMPFILE WHERE status='ONLINE';

external - каждые 100 GB требуют плюс 1 MB в shared pool плюс 2 MB
normal - каждые 50 GB требуют плюс 1 MB в shared pool плюс 4 MB
high - каждые 33 GB требуют плюс 1 MB в shared pool плюс 6 MB

Обычно ASM ставится в каталог инфраструктуры, отличный от каталгога СУБД, и поддерживается один экземпляр на сервер, но есть Oracle ASM Flex позволяет обслуживать несколько физических серверов, когда ASM кластера могут поддерживать больше серверов БД и даёт дополнительные опции для конфигурирования. Управление ASM происходит в каталоге инфраструктуры. Flex требует установки клиента прямого доступа к хранилищу ASM. Flex позволяет объединить требования к хранилищу в одном наборе дисковых групп, управляемых небольшим кластером ASM с уникальным глобальным именем, по умолчанию трёхнодовым. Узлы кластера HUB имеют доступ к хранилищу, кластер имеет как минимум одну приватную и публичную сети, и как минимум одну сеть ASM. Одна сеть может использоваться для приватной и ASM сетей, для безопасности сеть ASM не должна быть публичной. В кластере может быть только одна конфигурация Flex, включающая (1) локальных клиентов ASM для доступа к дискам, при этом поддерживается стандартный доступ через локальный ASM, тогда сеть ASM и другие сервисы Flex не нужны, а также (2) клиенты Flex для прямого доступа к дискам, когда работающие на HUB узлах кластера клиенты БД имеют удалённый доступ к метаданным, но осуществляют операции ввода вывода блоков напрямую. Удалённый ASM сервер и сервер БД должны быть узлами HUB - участниками кластера ASM, соединёнными с другими серверами и имеющими непосредственный доступ к разделяемому диску. Режим прямого доступа только во Flex через Oracle cluster FS. Третий вариант - ACFS получает доступ через экземпляр ASM прокси, запущеном на HUB узле с клиентом прямого доступа, при этом ACFS и ADVM служат прослойкой между хранилищем и экземпляром прокси, отдающим данные экземпляяру ASM

При установке можно выбрать тип кластера, в т.ч. Flex. Клиенты до 12с требуют локального клиента ASM или конфигурации Flex ASM c instance count ALL. Изменение Flex на стандарт не поддерживается. Для размещения Flex ASM: определить сети, для нового выбрать сеть ASM, листенер для каждой сети создаётся автоматически и стартует на всех узлах, а также включить Flex ASM при необходимости через asmca, эта функциональность доступна в конфигурации инфраструктуры grid, не в oracle restart. Проконтролировать можно командой ASMCMD showclustermode. Asmca - графическая утилита, которая отрабатывает также и зависимости, унформирует о дополнительных задачах - например требуемого для конвертации переноса файла паролей и spfile на дисковую группу

Управляется Flex ASM утилитами ASMCA, CRSCTL, SQL*Plus, SRVCTL, тип экземпляра при этом выставляется параметром INSTANCE_TYPE в значения ASMPROXY, ASM или RDBMS. Команда 'asmcmd showclustermode' показывает, включен ли Flex, детали статуса конфигурации показывает 'srvctl status asm -detail', команда 'srvctl config asm' показывает узлы со сконфигурированным Flex, количество узлов ASM (кардинальность) можно сконфигурировать командой 'srvctl modify asm -count 4 ; srvctl modify asm -count ALL'. Соединения отображаются чере sqlplus 'SELECT instance_name, db_name, status FROM V$ASM_CLIENT;' или через 'asmcmd lsct data'. При падении узла ASM клиент переназначается автоматически, или руками командой1 ALTER SYSTEM RELOCATE CLIENT 'client-id';, где client-id есть INSTANCE_NAME:DB_NAME из представления V$ASM_CLIENT (под пользователем sysasm к экземпляру ASM). При этом соединение разорвётся и пересоединится с нужным узлом, или с тем же - если указан он. У каждой БД должен быть бумажник (wallet) с полномочиями к ASM, управляемый утилитой CRSCT, причём имя и пароль генерируются системой. Новых параметров инициализации для Flex нет, но текущие должны быть оптимизированы

Oracle Restart повышает доступность БД и работает из отдельного от HOME СУБД каталога. При установке инфраструктуры на одиночный сервер она включает и ASM, и Restart, позволяющий перезапускать упавшие сервисы и управляемый утилитой srvctl

При старте ASM надо не забыть выставить ORACLE_SID, соответствующий ASM (+ASM для одиночного узла, +ASMnodenumber для RAC) и ORACLE_HOME для инфраструктуры grid, параметр INSTANCE_TYPE = ASM. При команде startup вместо монтирования и открытия БД проводится попытка смонтировать дисковые группы. После старта группы можно смонтировать командой ALTER DISKGROUP ... MOUNT. Модифкаторы startup: FORCE подразумевает SHUTDOWN ABORT перед рестартом, MOUNT или OPEN - монтирует дисковые группы из параметра ASM_DISKGROUPS, это поведение по умолчанию без модификаторов. NOMOUNT - стартует экземпляр ASM, но не монтирует группы, RESTRICT - можно комбинировать с OPEN, MOUNT, NOMOUNT - даёт подключаться только пользователям с обоими привилегиями CREATE SESSION и RESTRICTED SESSION, а базы не могут использовать файлы дисковых групп, а дисковые группы не могут быть смонтированы другими экземплярами кластера, В ограниченном режиме монтирование дисковой группы разрешено только экземпляру ASM - например для починки

Если путь к конфигурационному файлу некорректен, можно создать файл, например /oracle/dbs/spfileasm_init.ora со строчкой SPFILE='+DATA/asm/asmparameterfile/asmspfile.ora' и стартовать экземпляр ASM командой STARTUP PFILE=/oracle/dbs/spfileasm_init.ora. После успешного старта поправить путь командой ASMCMD> spset +DATA/asm/asmparameterfile/asmspfile.ora

При старте экземпляр ASM пытается смонтировать следующие дисковые группы: из параметра ASM_DISKGROUPS, група для файла голосования (voting) Cluster Synchronization Services (CSS), группа с регистром кластера Oracle Cluster Registry (OCR), группа с файлом параметров ASM. Если групп в этом списке нет - ничего не монтируется, а после старта экземпляра смонтировать группы можно командой ALTER DISKGROUP... MOUNT. При старте в RESTRICTED режиме группы из ASM_DISKGROUPS монтируются в ограниченном режиме, что предотвращает их использование базами данных, а также отключает класс RESTRICTED команды ALTER SYSTEM для экземплояра ASM, а команда ALTER DISKGROUP diskgroup MOUNT расширяется для монтирования дисковых групп экземпляром ASM в ограниченном режиме. Если группа монтируется в ограниченном режиме - она может быть смонтирована экземпляром, но недоступна клиентам, что позволяет обслуживать группы без доступа клиентов. Ребалансировка ограниченных групп игнорирует сообщения о блокировке и разблокировке карты экстентов между экземплярами ASM RAC для увеличения производительности задач обслуживания. По их окончании группу нужно явно размонтировать и смонтировать без ограничений

Останавливается ASM командой SHUTDOWN, без Flex рекомендуется потушить перед остановкой все БД и размонтировать ФС ADVM, для Flex клиенты переключатся на другие экземпляры ASM. Дисковые группы с регистром кластера Oracle Cluster Registry (OCR) или файлом голосования (voting) можно размонтировать только при тушении кластерного ПО командой crsctl stop crs. Модификаторы SHUTDOWN: NORMAL - ждёт все SQL команды, перед остановкой экземпляр ASM ждёт отключения всех пользователей, если хоть одна БД подключена - выдает ошибку и не останавливается. IMMEDIATE или TRANSACTIONAL - ждёт завершения всех SQL, но не ждёт пользователей, если хоть одна БД подключена - выдаёт ошибку и не останавливается. ABORT - останавливается сразу без очередности размонтирования дисковых групп, подключенные БД также падают, требует восстановления при следующем старте. Если ФС ACFS с ADMV подключены, сначала их нужно отмонтировать, иначе возможна потеря данных

Также утилитой SRVCTL можно модифицировать ресурсы в кластерном регистре, включать, выключать, останавливать и стартовать экземпляры ASM, запрашивать статус и конфигурацию ASM. Обновление версии для 11.2 возможно только в новый каталог, in-place не поддерживается. После установки запускается заполняющий CRSCONFIG_PARAMS мастер, ASH доступно через V$ACTIVE_SESSION_HISTORY

Прокручиваемое обновление позволяет обновлять отдельные узлы с минимальным временем простоя, используя заложенные возможности эксплуатации нод с разными версиями, рекомендуется обновлять ASM после обновления кластерного ПО. Окружение готовят, кластерное ПО должно быть обновлено до обновления ASM, кластерное ПО должно быть подготовлено rolling обновлению. Этот режим доступен только для кластерной конфигурации с 11.2. Обновляется по обному узлу за раз, команды старта ALTER SYSTEM START ROLLING PATCH; и стопа ALTER SYSTEM STOP ROLLING PATCH; Увидеть статус можно, запросив SYS_CONTEXT, SELECT SYS_CONTEXT('SYS_CLUSTER_PROPERTIES', 'CLUSTER_STATE') FROM DUAL; SELECT SYS_CONTEXT('SYS_CLUSTER_PROPERTIES', 'CURRENT_PATCHLVL') FROM DUAL; версии патчей доступны в V$PATCHES, есть также команда ASMCMD> showclusterstate ; showpatches ; showversion

С версии 12c можно обновить standart ASM до Flex с помощью asmca, что описано в текущем разделе (не перводил скриншоты)

Filter driver (ASMFD) является модулем ядра, перенаправляющим путь ввода вывода. После установки инфраструктуры Grid его можно опционально сконфигурировать, если была сконфигурирована ASMLIB - придётся явно смигрировать. FD упрощает конфигурацию и управление дисковыми устройствами, исключая необходимость переподключения дисков при рестарте, он также отбрасывает некорректные запросы ввода-вывода, что исключает перезапись на диск, которая может привести к разрушению дисков и дисковых групп, в т.ч. фильтрует неоракловый ввод-вывод. ASMFD устанавливается с инфраструктурой, если при этом есть и драйвер библиотеки ASMLIB, возможны варианты - при использовании для упралвения устройствами можно продолжать использовать ASMLIB или мигрировать на FD, или же удалить ASMLIB и использовать FD. В кластерном окружении последовательность конфигурирования - установить

$ $ORACLE_HOME/bin/asmcmd dsget ; $ $ORACLE_HOME/bin/asmcmd dsset old_diskstring, 'AFD:*'
$ $ORACLE_HOME/bin/olsnodes -a # собрать список нод и на каждом HUB:
# $ORACLE_HOME/bin/crsctl stop crs ; # $ORACLE_HOME/bin/crsctl stop crs -f ; # $ORACLE_HOME/bin/asmcmd afd_configure ; $ $ORACLE_HOME/bin/asmcmd afd_state ; # $ORACLE_HOME/bin/crsctl start crs ; $ $ORACLE_HOME/bin/asmcmd afd_dsset old_diskstring

Для Oracle restart
$ $ORACLE_HOME/bin/asmcmd dsget ; $ $ORACLE_HOME/bin/asmcmd dsset old_diskstring, 'AFD:*'
# $ORACLE_HOME/bin/crsctl stop has -f ; # $ORACLE_HOME/bin/asmcmd afd_configure ; $ $ORACLE_HOME/bin/asmcmd afd_state
# $ORACLE_HOME/bin/crsctl start has ; $ $ORACLE_HOME/bin/asmcmd afd_dsset disk_string

В обоих случаях диски с ASMLIB должны подхватиться

Про миграцию - если ASMLIB был установлен, но не использовался ранее - нужно создать дисковые метки для последующей миграции на FD. Oracle рекомендует временно перенести кластерный реестр (OCR) и диск голосования на другую дисковую группу, смигрировать на ASMFD и вернуть их обратно, но можно и не переносить

-------------------------
-- Процедура миграции с предварительным переносом OCR и voting
-------------------------
$ $ORACLE_HOME/bin/asmcmd lsdg
$ $ORACLE_HOME/bin/asmcmd lsdsk -G diskgroup
$ $ORACLE_HOME/bin/srvctl status asm
-- на всех нодах остановить БД и размонтировать дисковые группы
$ $ORACLE_HOME/bin/srvctl stop diskgroup -diskgroup diskgroup -f
-- на каждом Hub узле
$ $ORACLE_HOME/bin/asmcmd afd_label label disk_path --migrate
$ $ORACLE_HOME/bin/asmcmd afd_scan
-- на всех узлах
$ $ORACLE_HOME/bin/srvctl start diskgroup -diskgroup diskgroup

-------------------------
-- Для групп с OCR или voting процедура миграции ASMLIB такова
-------------------------
-- подсмотреть группы
# $ORACLE_HOME/bin/ocrcheck -config
# $ORACLE_HOME/bin/crsctl query css votedisk
-- подсмотреть соответствующие диски
$ $ORACLE_HOME/bin/asmcmd lsdsk -G disk_group 
-- остановить на всех нодах базы и кластер
# $ORACLE_HOME/bin/crsctl stop cluster -all
-- для каждого диска в дискгруппе на всех HUB узлах
$ $ORACLE_HOME/bin/asmcmd afd_label label disk_path --migrate
-- на всех HUB узлах
$ $ORACLE_HOME/bin/asmcmd afd_scan
-- стартовать на всех узлах и смонтировать группы OCR и voting, и БД
# $ORACLE_HOME/bin/crsctl start cluster -all

-------------------------
-- для Oracle restart процедура миграции ASMLIB такова
-------------------------
$ $ORACLE_HOME/bin/asmcmd lsdsk -G diskgroup_name
$ $ORACLE_HOME/bin/srvctl status asm
$ $ORACLE_HOME/bin/srvctl stop database -db db_unique_name
$ $ORACLE_HOME/bin/srvctl stop diskgroup -diskgroup diskgroup_name -f
$ $ORACLE_HOME/bin/asmcmd afd_label label disk_path --migrate
$ $ORACLE_HOME/bin/asmcmd afd_scan
$ $ORACLE_HOME/bin/srvctl start diskgroup -diskgroup diskgroup_name

Статус конфигурирования фильтр драйвера в поле SYS_ASMFD_PROPERTIES.AFD_STATE. Можно увидеть командой $ORACLE_HOME/bin/asmcmd afd_state или запросом SELECT SYS_CONTEXT('SYS_ASMFD_PROPERTIES', 'AFD_STATE') FROM DUAL; О корректном конфигурировании и регистрации драйвера экземпляром ASM говорит значение CONFIGURED. Для FD строка определения задаётся в AFD_DISKSTRING, командами $ $ORACLE_HOME/bin/asmcmd afd_dsset '/dev/rdsk/mydisks/*' и $ $ORACLE_HOME/bin/asmcmd afd_dsget или запросами ALTER SYSTEM AFD_DISKSTRING SET '/dev/disk0','/dev/disk1','/devices/dsk/*'; SELECT SYS_CONTEXT('SYS_ASMFD_PROPERTIES', 'AFD_DISKSTRING') FROM DUAL; Можно также менять парамет ASM ASM_DISKSTRING, например: ASM_DISKSTRING = 'AFD:DISK0', 'AFD:DISK1', '/dev/rdsk/mydisks/*' или ASM_DISKSTRING = 'AFD:*', '/dev/rdsk/mydisks/*', в т.ч. командами $ $ORACLE_HOME/bin/asmcmd dsset 'AFD:*','/dev/rdsk/mydisks/*' ; $ $ORACLE_HOME/bin/asmcmd dsset '/dev/rdsk/mydisks/*'

FD использует диск после установки метки, для управления используется утилита $ $ORACLE_HOME/bin/asmcmd afd_label 'disk0' '/dev/rdsk/mydisks/disk0' ; $ $ORACLE_HOME/bin/asmcmd afd_unlabel 'disk0' ; $ $ORACLE_HOME/bin/asmcmd afd_scan '/dev/rdsk/mydisks/*', ставить и удалять метки умеет ASMCA, и SQL запросы - ALTER SYSTEM LABEL SET 'disk0' TO '/dev/disk0'; SELECT UPPER(path) FROM V$ASM_DISK ORDER BY PATH; В запросе можно использовать опции RENAME и MIGRATE, в процессе диск не должен управляться ASMFD, если же раньше управлялся и группа размонтирована - установить метку можно опцией MIGRATE. Удалить метку можно командой ALTER SYSTEM LABEL CLEAR 'disk0'; важно - на той же ноде, на других отрабатывать не будет

Для удаления фильтр драйвера существуют процедуры для кластерной и некластерной конфигурации


Обновить строку обнаружения ASM_DISKSTRING (1), чтобы ASM увидел диски после деконфигурирования
-------------------------
-- кластер
-------------------------
$ $ORACLE_HOME/bin/olsnodes -a
-- на каждом Hub node
# $ORACLE_HOME/bin/crsctl stop crs
# $ORACLE_HOME/bin/crsctl stop crs -f
# $ORACLE_HOME/bin/acfsload stop
# $ORACLE_HOME/bin/asmcmd afd_deconfigure
# $ORACLE_HOME/bin/acfsload start
# $ORACLE_HOME/bin/crsctl start crs
$ $ORACLE_HOME/bin/asmcmd afd_state
$ $ORACLE_HOME/bin/asmcmd dsget
$ $ORACLE_HOME/bin/asmcmd dsset old_diskstring (1)

-------------------------
-- отдельный сервер
-------------------------
# $ORACLE_HOME/bin/crsctl stop has
# $ORACLE_HOME/bin/crsctl stop has -f
# $ORACLE_HOME/bin/acfsload stop
# $ORACLE_HOME/bin/asmcmd afd_deconfigure
# $ORACLE_HOME/bin/acfsload start
# $ORACLE_HOME/bin/crsctl start has
$ $ORACLE_HOME/bin/asmcmd afd_state
$ $ORACLE_HOME/bin/asmcmd dsget
$ $ORACLE_HOME/bin/asmcmd dsset old_diskstring

У экземпляра нет словаря и коннектиться к нему можно через системные привелегии SYSASM, SYSDBA, SYSOPER локально через авторизацию JC или пароль, и удаленно через Oracle Net Service с авторизацие по паролю. ASM и БД должны иметь права на ввод-вывод на уровне операционной системы (ОС) к дисковым группам, в юниксе это обычно разделяемая группа OSASM, в Win ASM сервис должен быть запущен от администратора. При установке ASM можно назначить пользователям одну группу или разделить группы для администраторов БД, хранилищ и операторов БД. Независимо от выбора для администрирования ASM нужно использовать группу SYSASM. Привилегия SYSDBA не может использоваться для администрирования ASM, попытка даёт ошибки, но используется для доступа базы к дисковым группам. Oracle рекомендует использовать пользователя с меньшим уровнем привилегий вроде ASMSNMP и SYSDBA для мониторинга. Аутентификация через группы ОС OSDBA, OSOPER, OSASM работает во всех юниксах, а подключение с грантом SYSASM отдают доступ ко всем группам и функциям управления. Если группы не выделены, обычно unix группу dba назначают для OSDBA, OSOPER, OSASM. Если разделяют, то группе OSASM назначают привилегию SYSASM (полный административный доступ), имя гшруппы в ОС может быть, например, asmadmin. OSDBA назначают привилегию SYSDBA, допускающую к данным ASM, это подмножество OSASM и выбирают отличную от группы dba для базы данных, например asmdba. OSOPER получает привилегию SYSOPER для экземпляра ASM, это права на операции старта и остановки, монтирования, размонтирования и проверки групп, подмнодество OSASM, имя может быть, например, asmoper

Если разделять задачи администраторов БД и ASM, это требует разных групп и пользователей-владельцев, OSASM и OSDBA должны быть разными группами, для этой конфигурации вы должны создать группу OSASM и сделать экземпляр БД её членом для доступа к данным. В кластерной конфигурации пользователь ASM, например grid, не должен входить в группы dba базы данных, ибо кластерный агент запускается как владелец БД и может использовать SYSDBA для подключения к БД. Однако в конфигурации Oracle Restart пользователь - владелец Oracle ASM (grid) должен быть членом группы OSDBA (dba1, dba2 ...) для каждой БД, ибо Oracle Restart работает от пользователя Oracle Restart и должен тушить и стартовать БД через CONNECT / AS SYSDBA. Кроме этого владелец дисковых устройств должен быть тем же, что и владелец софта ASM

Привилегия SYSASM администратора хранилища призвана отделить права от SYSDBA администратора БД, и выдаётся членам группы, назначенной как OSASM, это похоже на привилегии SYSDBA и SYSOPER, назначаемые группам, указанным как OSDBA и OSOPER. Их можно отдать одной группе, или сдеталь для каждой цели свою шруппу операционной системы. Также SYSASM можно раздать через файл паролей. Подключаются так sqlplus sys@\"myhost.mydomain.com:1521/+ASM\" AS SYSASM или локально - sqlplus / AS SYSASM. Для администрирования компонент, связаных с БД, можно подключаться как SYSDBA через sqlplus или asmcmd, а именно - к БД, а не к экземпляру ASM, при этом действуют ограничения привилегии, например нельзя создать дисковую группу. Можно - создавать и удалять файлы, директории, алиасы и шаблоны, запрашивать данные ASM представлений, оперировать созданные собой файлами, или созданными другими при явном указании грантов, выдавать права доступа другим пользователям. Если зайти as SYSASM - можно создавать и удалять пользователей и выдавать - снимать им привилегии, например тот же SYSASM. Членство в группе, указанной как OSASM, позволяет подключаться как SYSASM. OSASM только для ASM, изначально в ней только пользователь - владелец софта, но можно добавить других, и они получат административные права. В юниксах группа dba по умолчанию указывается как OSASM, OSOPER, OSDBA, а в виндовсе это группы ORA_ASMADMIN, ORA_ASMDBA, ORA_ASMOPER соответсвтвенно. Sqlplus, asmcmd, asmca используют авторизацию через ОС

Авторизация через файл паролей используется удалённо и локально, создать его может asmca (для sys и asmsnmp) и далее новых через CREATE USER ; GRANT ; или создать вручную и выдать привилегию SYSASM пользователю SYS. Можно разместить файл паролей на дисковой группе и отдать его всему кластеру, что снижает его недоступность и ситуации с рассинхронизацией. Использовать файл паролей на дисковой группе можно только если она смонтирована, параметр COMPATIBLE.ASM должен быть выставлен в 12.1, для управлени потребуется SYSASМ, а для управления файлом паролей БД привилегия SYSDBA. Если ДГ не смонтировнаа - нужно использовать аутентификацию операционной системой, например для старта стэка с ASM. Создание файла на дисковой группе командой orapwd, остальное утилитами asmcmd и srvctl. Перед созданием нужно корректно выставить ORACLE_SID и ORACLE_HOME, вот примеры команд $ srvctl modify asm -pwfile location ; $ srvctl modify database -db dbname -pwfile location ; $ srvctl config asm. Вот пример создания файла паролей для БД orapwd file='+data/ORCL/orapwdb' dbuniquename='orcl' ; А вот - для ASM (опция asm=y) orapwd file='+data/ASM/orapwasm' asm=y ; А вот пример создания файла паролей на дисковой группе на основании старого файла паролей orapwd input_file='/oraclegrid/dbs/orapwasm' file='+data/ASM/orapwasm' asm=y

-- Можно сделать бэкап файла паролей, для чего
ASMCMD [+] > pwget --asm
-- скопировать, без --asm или --dbuniquename не меняет пути к файлу
ASMCMD [+] > pwcopy +DATA/orapwasm +FRA/my_pwfile_backup
-- проверяем что путь не изменился
ASMCMD [+] > pwget --asm
-- проверяем наличие бэкапа
ASMCMD [+] > ls +fra/my_pwfile_backup
-- для восстановления туда же, где был
ASMCMD [+] > pwset --asm +FRA/my_pwfile_backup
-- для восстановления в новое место
ASMCMD [+] > pwcopy --asm +FRA/my_pwfile_backup +DATA2/my_orapwasm
-- проверяем путь
ASMCMD [+] > pwget --asm

В процессе новой инсталляции СУБД Oracle и ASM можно сразу создать базу и выбрать опции ASM. Если БД уже есть и жувёт на ФС ОС, её можн мигрировать в ASM полностью или частично. Для миграции нужно обновиться хотя бы до 10 версии. Варианты миграции различны, в т.ч. RMAN позволяет сделать полную миграцию БД, или только табличное пространство, или файл данных. приводится ссылка на web страницы с лучшими практиками

---

... последующие разделы до 11 содержат непосредственное описание команд и представлений и, как любой производственный справочник Oracle, читаются мной из оригинальной англоязычной книги

11 Обзор ACFS и ADVM


 
        
   
    Нравится     

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