Oracle ASM - производительность при хранении файлов базы данных

Обзор Oracle ASM
Андрей Волков

Андрей Волков

Системное, сетевое администрирование +DBA. И немного программист!))  Профиль автора.

В Oracle ASM (Automatic Storage Management) - повышает производительность путем автоматического рассредоточения объектов базы данных по большому количеству устройств, увеличивает доступность базы данных, так как позволяет добавлять в базу данных новые дисковые устройства, не останавливая ее. ASM автоматически, с минимальным вмешательством в работу производит выравнивание распределения файлов но устройствам хранения.



3 способа задания избыточности:

  • External: нет избыточности (предполагается аппаратная избыточность дискового массива).
  • Normal: двойное зеркалирование
  • High: тройное зеркалирование

 

Архитектура ASM

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

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

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

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

Для поддержки экземпляров ASM появились два новых фоновых процесса Oracle: RBAL и ORBn. Процесс RBAL координирует всю дисковую активность для дисковых групп, в то время как ORBn, где n может быть числом от 0 до 9, выполняет фактическое перемещение экстентов между дисками, входящими в дисковую группу.

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

Для ASM требуется выделенный экземпляр Oracle для управления дисковыми группами. Обычно экземпляр ASM требует очень немного места в оперативной памяти в диапазоне от 60 до 120 Мбайт. При специфицировании ASM как способа хранения файлов данных во время инсталляции программного обеспечения Oracle этот экземпляр конфигурируется автоматически, если к этому моменту экземпляра ASM еще не существовало.

После создания базы данных Oracle будут запущены и обычный экземпляр, и экземпляр ASM.


У экземпляра ASM есть несколько других уникальных характеристик. Хотя у него имеется файл параметров инициализации и файл паролей, у пего нет словаря данных, и, следовательно, все подключения к экземпляру ASM должны проводиться только через пользователей SYSTEM и SYS с использованием аутентификации операционной системы. Команды дисковой группы типа create diskgroup, alter diskgroup и drop diskgroup разрешены только для экземпляра ASM. И, наконец, экземпляр ASM может функционировать только в режимах NOMOUNT или MOUNT; он никогда не может быть в режиме OPEN.

У экземпляра ASM нет словаря данных, так что доступ к экземпляру ограничен и возможен только для пользователей которые могут подключаться как SYSDBA или SYSOPER.

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

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

 

Параметры инициализации ASM


Для экземпляров ASM настоятельно рекомендуется применять SPFILE

 

INSTANCE_TYPE

Для экземпляра ASM параметр INSTANCE_TYPE принимает значение ASM. Значением по умолчанию, используемым для традиционных экземпляров Oracle, является RDBMS.

 

DB_UNIQUE_NAME

Значение по умолчанию параметра DB_UNIQUE_NAME равно +ASM и является уникальным именем группы экземпляров ASM для кластера или одиночного узла; значение по умолчанию должно быть модифицировано, только если делается попытка эксплуатировать на одном узле несколько экземпляров ASM.

 

ASM_POWER_LIMIT

Чтобы гарантировать, что операции по перенастройке не оказывают влияния на текущие действия пользователя по вводу /выводу, параметр .ASM. POWER._LIMIT управляет тем, как быстро происходят операции но перенастройке. Подробнее о настройке параметра инициализации ASM_POWER_LIMIT

Значения этого параметра лежат в диапазоне от 1 до 11, причем 11 является максимальным возможным значением, а 1 значением по умолчанию (обеспечивающим низкие накладные расходы для ввода/ вывода). Поскольку этот параметр является динамическим, в рабочее время (в дневные часы) его значение- можно изменять на более низкое, а в ночное время (когда можно выделять больше времени на операции по перенастройке дисковых трупп) задать более высокое значение.

 

ASM_DISKSTRING

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

Select name, type, value
From v$parameter
Where name=asm_diskstring;

 

ASM_DISKGROUPS

Параметр ASM_DISKGROUPS специфицирует список, содержащий имена дисковых групп, которые должны быть автоматически смонтированы экземпляром ASM при запуске или командой alter diskgroup all mount. Даже если в момент запуска экземпляра этот список пуст, любые имеющиеся в наличии дисковые группы могут быть смонтированы вручную.

 

LARGE_POOL_SIZE

Параметр LARGE_POOL_SIZE полезен как для обычных экземпляров, так и для экземпляров ASM: однако для экземпляров ASM этот пул используется по-другому. Из этого пула выполняются внутренние пакеты ASM, так что этот параметр должен быть равен, по меньшей мере, 8 Мбайт.

 

Запуск и остановка экземпляра ASM

Запуск экземпляра ASM во многом похож на запуск обычного экземпляра, за тем исключением, что значением по умолчанию для команды startup является startup mount. Поскольку для этого экземпляра отсутствуют управляющий файл, база данных или словарь данных, которые можно было бы смонтировать, вместо базы данных монтируются группы дисков ASM. Команда startup nomount запускает экземпляр, но при этом не монтирует никаких дисков ASM. Помимо этого можно указать startup restrict, чтобы временно запретить экземплярам базы данных подключаться к экземпляру ASM для монтирования дисковых групп.

При выполнении команды shutdown для экземпляра ASM, та же самая команда выполняется и для всех экземпляров баз данных, использующих экземпляр ASM; прежде чем экземпляр ASM закончит операцию остановки, он будет ожидать, пока не окажутся остановленными все зависимые базы данных. Единственным исключением из этого правила является использование для экземпляра ASM команды shutdown abort, которая, в конечном счете, вынуждает все зависимые базы данных также выполнить команду shutdown abort.

 

Динамические представления производительности ASM

  • V$ASM_ DISK - По одной строке для каждого диска, обнаруженного экземпляром ASM, вне зависимости от того, используется ли он в дисковой группе или нет. Для экземпляра базы данных одна строка для каждой дисковой группы, используемой экземпляром.
  • V$ASM_DISKGROUP - Для экземпляра ASM одна строка для каждой дисковой группы, содержащая общие характеристики этой группы.  Для экземпляра базы данных одна строка для каждой используемой дисковой группы, неважно, смонтирована она или нет.
  • $ASM_FILE - Одна строка для каждого файла в каждой смонтированной дисковой группе.
  • V$ASM_OPERATI0N - Одна строка для каждой выполняющейся длительное время операции в экземпляре ASM.
  • V$ASM_TEMPLATE -  Одна строка для каждого шаблона в каждой смонтированной дисковой группе для экземпляра ASM.  Для экземпляра базы данных одна строка для каждого шаблона для каждой смонтированной дисковой группы.
  • V$ASM_CLIENT - Одна строка для каждой базы данных, использующей дисковые группы, управляемые экземпляром ASM. Для экземпляра базы данных одна строка для экземпляра ASM. если имеются отрытые экземпляры.
  • V$ASM_ALIAS - Одна строка для каждого псевдонима в каждой смонтированной дисковой группе.

 

Администрирование дисковых групп ASM

Использование дисковых групп ASM оказывается выгодным по нескольким причинам: повышается производительность ввода/вывода, увеличивается доступность, а простота, с которой можно добавить диск в дисковую группу или добавить абсолютно новую дисковую группу, позволяет за то же самое время справляться с управлением большим числом баз данных. Понимание компонент дисковой группы, а также ее соответствующее конфигурирование являются весьма важными задачами для успешного АБД.

 

Архитектура дисковых групп

Дисковой группой называется совокупность (collection) физических дисков, управляемая как единый элемент. У каждого диска ASM как у части дисковой группы имеется имя диска ASM, которое либо назначается АБД, либо присваивается ему автоматически при включении в дисковую группу.

Файлы в дисковой группе рассредоточены по дискам с применением либо крупноблочного, либо мелкоблочного расщепления. При крупноблочном расщеплении (coarse striping) файлы рассредоточиваются но всем доступным дискам блоками по 1 Мбайт. Такое расщепление оказывается подходящим для системы с высокой степенью одновременно выполняющихся небольших по объему запросов на ввод/вывод, например для сред OLTP. 

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

 

Зеркалирование дисковых групп и групп отказа

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

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

Внешняя избыточность

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

Обычная избыточность

Обычная избыточность обеспечивает двукратное зеркалирование и требует, чтобы в группе дисков было, по крайней мере, две группы отказа. Выход из строя одного из дисков в группе отказа не вызывает никакого простоя дисковой группы и не приводит к потере данных, разве что к небольшой потере производительности запросов к объектам из этой дисковой группы.

Высокая избыточность

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

Управление зеркалированием осуществляется на очень низком уровне. Зеркалируются не диски, а экстенты. Кроме того, на каждом диске должна храниться смесь первичных и зеркалированных (вторичных и третичных) экстентов. И хотя для управления зеркалированием на уровне экстентов не обойтись без небольших накладных расходов, зеркалирование обеспечивает преимущества рассредоточения нагрузки с вышедшего из строя диска на все оставшиеся диски, а не на один диск.

Хранение файлов базы данных в Oracle ASM 

 

Динамическая перенастройка дисковой группы

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

Динамическая перенастройка не только освобождает от утомительной и зачастую подверженной ошибкам процедуры определения «горячих точек» для дисковой группы, но и предлагает способ автоматического переноса всей базы данных с набора более медленных дисков на набор более высокоскоростных дисков без остановки базы данных. Более высокоскоростные диски добавляются как новая группа отказа в существующую дисковую группу наряду с имеющимися «медленными» дисками, после чего происходит автоматическая перенастройка. После завершения этой перенастройки группы отказа, в которые входят медленные диски, удаляются, так что будут оставлены только труппы отказа, состоящие из высокоскоростных дисков. Чтобы сделать эту операцию еще более быстрой, обе операции add (добавить) и drop (удалить) могут быть инициированы внутри одной команды alter diskgroup (изменить дисковую группу).

Предположим, что требуется создать новую ДИСКОВУЮ группу с высокой избыточностью, где будут храниться табличные пространства Сданными для нового приложения по авторизации кредитных карт. С помощью представления V$ASM_DISK можно, применив параметр инициализации V$ASM_DISKSTRING и статус диска, просмотреть все обнаруженные диски (другими словами, выяснить, был ли этот диск назначен существующей дисковой группе или остался нераспределенным):

select group_number, disk_number, name, failgroup, create_date, path 
from v$asm_disk;

Из шести доступных для ASM дисков только два назначены для одиночной дисковой группы, причем каждый из них образует собственную группу отказа. Имя дисковой группы может быть получено из представления V$ASM_DISKGROUP:

select group_number, name, type, totaljnb, free_mb 
from v$asm_diskgroup;

Если есть некоторое количество дисков и дисковых групп ASM, можно объединить эти два представления по столбцу GROUP_NUMBER и отфильтровать результаты запроса по этому же столбцу. Кроме того, из V$ASM_DISKCROUP можно видеть, что дисковая группа DATA1 является состоящей из двух дисков группой с обычной избыточностью (NORMAL REDUNDANCY).

На первом шаге создадим дисковую группу:

create diskgroup data2 high redundancy
     failgroup fg1 disk '/dev/raw/raw3' name d2a
     failgroup fg2 disk '/dev/raw/raw4' name d2b
     failgroup fg3 disk '/dev/raw/raw5' name d2c

Взглянув на динамические представления производительности, из представления V$ASM_DISKGROUP можно увидеть ставшую доступной новую дисковую группу, а из представления V$ASM_DISK ознакомиться с группами отказа:

select group_number, name, type, total_mb, free_mb 
from v$asm_diskgroup;
SQL> select group_number, disk_number, name, 2 failgroup, create_date, path from v$asm_disk;

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

drop diskgroup data2;
Diskgroup dropped.

Если в дисковой группе есть какие-либо объекты базы данных, кроме метаданных дисковой группы, необходимо специфицировать в команде drop diskgroup фразу including contents. Это является дополнительной мерой предосторожности, позволяющей убедиться, что дисковые группы с объектами базы данных не будут случайно удалены:

create diskgroup data2 high redundancy
     failgroup fg1 disk 'dev/raw/raw3' name d2a
     failgroup fg2 disk 'dev/raw/raw4' name d2b
     failgroup fg3 disk 'dev/raw/raw5' name d2c;
Diskgroup created.

select group_number, disk_number, name, 2 failgroup, create_date, path 
from v$asm_disk;

select group_number, dlsk_number, name, failgroup, create_date, path 
from v$asm_disk;

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

create tablespace users3 datafile '+DATA2';
lablespace created.

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

 

Изменение дисковых групп

В дисковую группу можно добавлять диски и удалять их оттуда; кроме того, многие характеристики дисковой группы могут быть изменены без повторного ее создания и не оказывая влияния на транзакции пользователей над объектами из дисковой группы.

Когда диск добавляется к дисковой группе, после того как диск будет отформатирован для использования в дисковой группе, выполняется операция перенастройки. Скорость перенастройки контролируется параметром инициализации ASM_POWER_LIMIT.

Продолжая пример, предположим, что принято решение улучшить характеристики ввода/вывода дисковой группы DATA1, добавив в нее последний из оставшихся в наличии «чистых» дисков:

alter diskgroup data1 add failgroup d1fg3 disk '/dev/raw/raw6' name d1сe;
Diskgroup altered.

Немедленно осуществляется выход из команды, а форматирование и перенастройка продолжаются в фоновом режиме. После этого можно проверить статус операции перенастройки, проверив представление V$ASM_OPERATION:

select group_number, operation, state, power, actual, sofar, est_work, est_rate, est_minutes 
from v$asm_operation;

Поскольку оценочное время завершения операции перенастройки составляет 10 мин, принимается решение выделить для этой операции больше ресурсов и изменить предельную «мощность» этой конкретной операции перенастройки:

alter diskgroup data1 rebalance power 8;
Diskgroup altered

Проверка статуса операции перенастройки подтверждает, что оценочное время до завершения операции сократилось с 16 до 4 минут:

select group_number, operation, state, power, actual, sofar, estwork, est_rate, est_ninutes 
from v$asm_operation;

Спустя четыре минуты проверим статус задания еще раз:

/
no rows selected.

И, наконец, подтвердим конфигурацию нового диска из представлений V$ASM _DISK и V$ASM DISKGROUP:

select group_number, disk_number, name, failgroup, create_date, path 
from v$asm_disk;
select group_number, name, type, tota_mb, free_mb
from v$asm_diskgroup;

Избыточность дисковой группы остается нормальной, несмотря па то, что в ней есть три группы отказа. Однако производительность ввода/вывода оператора select относительно объектов из этой дисковой группы возрастает благодаря наличию дополнительных копий экстентов, ставших доступными для дисковой группы.

 

Другие команды alter для дисковых групп 

  • alter diskgroup ... drop disk - Удаляет диск из группы отказа в составе дисковой группы и выполняет автоматическую перенастройку
  • alter diskgroup ... drop... add - Удаляет диск из группы отказа и добавляет (в той же команде) вместо него другой диск
  • alter diskgroup ... mount - Делает дисковую группу доступной для всех экземпляров
  • alter diskgroup ... dismount - Делает дисковую группу недоступной для всех экземпляров
  • alter diskgroup ... check all - Проверяет внутреннюю согласованность дисковой группы

 

Миграция базы данных в среду ASM

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

STARTUP N0M0UNT;
RESTORE CONFROUTL.t. PROM ' <место..размещения_управляющего_.файла>';
ALTER DATABASE MOUNT;
BACKUP AS COPY DATABASE FORMAT
' +<место_нахождения_дисковой группы>; 
SWITCH DATABASE TO COPY;
SQL "ALTER DATABASE RENAME <файл_журнала_базы_данных_1>
TO ' +<место_нахождения .дисковой группы>' «; 
# повторить для всех членов журнала ALTER DATABASE OPEN RESFTLOGS;

Вас заинтересует / Intresting for you:

Лучший способ хранения данных ...
Лучший способ хранения данных ... 6806 просмотров Administrator SU Sun, 07 Oct 2018, 06:04:37
Oracle ASM: Удаление диска из ...
Oracle ASM: Удаление диска из ... 584 просмотров Андрей Васенин Sun, 22 Nov 2020, 16:35:38
Разделение по диапазону таблиц...
Разделение по диапазону таблиц... 7921 просмотров Валерий Павлюков Tue, 21 Nov 2017, 13:32:50
Копирование таблиц с помощью к...
Копирование таблиц с помощью к... 6131 просмотров Antoniy Tue, 21 Nov 2017, 13:18:46
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #9826 26 янв 2021 13:51
Отменное описание Oracle ASM. Примеры понятны и актуальны. Спасибо!