Oracle ASM - система автоматического управления хранением (файлы, диски)

Oracle ASM - система автоматического хранения файлов, дисковИногда администраторы баз данных поддерживают сотни файлов данных для каждой управляемой ими базы, поэтому решение хранения Oracle должно обеспечивать как высокопроизводительный ввод-вывод, так и устойчивое к сбоям оборудование. Фактически управление файлами и вводом-выводом — это то, что занимает большую часть времени администраторов баз данных. С помощью нового средства Oracle — ASM (Automatic Storage Management — Автоматическое управление хранением) — можно автоматизировать традиционные задачи управления файлами. Благодаря системе ASM, администратор баз данных Oracle отвечает за управление физическим хранилищем изнутри каркаса Oracle вместо того, чтобы полагаться в этом на системного администратора. Используя группы дисков ASM, можно параллельно обслуживать наборы дисков вместо индивидуальных дисков, и база данных может динамически конфигурировать хранилище в зависимости от изменяющейся рабочей нагрузки. Обеспечивая администратора баз данных гибкостью управления сложными устройствами хранения, распределенными между различными серверами и платформами хранения, ASM стала критичной частью вычислительной инициативы Oracle под названием Grid Computing Initiative.


Оглавление статьи

Преимущества ASM

Обзор архитектуры ASM

Инсталляция Oracle ASM

 ASM и служба Cluster Synchronization Service

Создание экземпляра ASM

Средство ASM Fast Mirror Resync

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

Изменение атрибутов групп дисков ASM

Инструмент командной строки asmcmd

Управление группами дисков ASM

Увеличение производительности и избыточности с помощью групп дисков

Создание дисковой группы

Добавление дисков к дисковой группе

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

Перебалансировка дисковых групп

Управление файлами ASM

Типы имен файлов ASM

Работа с именами файлов ASM

Шаблоны файлов ASM

Создание базы данных на основе ASM


 

ASM построена на файлах OMF, а это означает, что вы не должны беспокоиться об указании имен файлов и местоположении новых баз данных; все, что потребуется сделать — это идентифицировать группу дисков ASM, состоящую из набора дисков. При создании базы данных или добавлении файла можно использовать знакомые SQL-операторы CREATE, ALTER и DROP, чтобы выделять дисковое пространство. ASM работает как встроенный в Oracle диспетчер управления логическими томами (Logical Volume Manager — LVM), поддерживая функции расслоения и зеркального отображения, которые ранее выполняли инструменты от независимых поставщиков. С помощью ASM диски группируются и управляются самой базой данных и доступны для создания табличных пространств. Не потребуется монтировать файлы, как в обычных файловых системах Linux или UNIX. Кроме того, для копирования файлов ASM нельзя использовать традиционные инструменты вроде cp и tar. Если вы применяете ASM для файла Oracle, то операционная система не может видеть его, но RMAN и другие инструменты Oracle — могут.

Например, запустите следующую команду:

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS <имяФайла>;

Файл, сгенерированный приведенным оператором, отобразит имена любых файлов ASM. Если ASM использует полностью квалифицированные имена, вы сможете видеть файлы данных в представлениях вроде V$DATAFILE и V$LOGFILE.

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

Вместо изучения целого набора команд для управления базами данных ASM, для выполнения почти все операций ASM можно воспользоваться интерфейсом OEM Database Control. Создать новый экземпляр ASM в можно DBCA или в Oracle Universal Installer (который “за кулисами” использует DBCA), а перенести существующую базу данных в систему ASM можно с помощью Database Control.

 

Преимущества ASM

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

  • ASM обеспечивает автоматическую балансировку нагрузки между всеми доступными дисками, тем самым сокращая “горячие точки” в файловой системе.
  • ASM предотвращает фрагментирование дисков, так что не нужно вручную перемещать данные для настройки производительности ввода-вывода.
  • Добавление дисков становится простым — ASM автоматически выполняет онлайновую реорганизацию дисков при добавлении или удалении хранилища.
  • ASM использует избыточные средства, доступные в интеллектуальных дисковых массивах.
  • Система хранения ASM хранит все типы файлов базы данных.
  • ASM облегчает задачу управления файлами, потому что вы имеете дело только с небольшой группой дисков вместо множества файлов базы данных. ASM автоматически создает файлы базы данных и располагает их на соответствующих группах дисков.
  • ASM осуществляет зеркальное отображение и расслоение, что, в свою очередь, повышает надежность и производительность. Для различных типов данных можно выбирать различные характеристики надежности и производительности. Например, можно использовать мелко-гранулированное расслоение файлов журналов повторного выполнения и более крупное — для обычных файлов данных.
  • ASM достается бесплатно.

Совет. В пределах одной базы данных Oracle могут сосуществовать и файлы ASM, и обычные файлы.


 

Обзор архитектуры ASM

Тремя главными компонентами ASM являются экземпляр ASM, группы дисков ASM и файлы ASM. Давайте кратко рассмотрим эти важные компоненты ASM.

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

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

Группы дисков ASM — некоторый аналог логических томов, созданных диспетчером LVM. В отличие от обычных файлов данных Oracle, напрямую обращаться к файлам ASM нельзя. Диски в контексте ASM довольно нечетко определены и могут включать раздел дискового привода или весь дисковый привод целиком. Это зависит от того, как система хранения представляет логический номер устройства (logical unit number — LUN) для операционной системы. Любой LUN или диск, представленный операционной системе, называется диском. Поскольку каждая операционная система может иметь отличающуюся систему именования дисков, проверьте, какая у вас.

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

Ниже подведены итоги по системе хранения ASM.

  • База данных может иметь несколько групп дисков.
  • Можно хранить все файлы баз данных Oracle как файлы ASM, потому что Oracle устанавливает отображение “один к одному” между файлом базы данных Oracle (например, файлом данных и управляющим файлом) и файлом ASM.
  • Группа дисков ASM объединяет множество дисковых приводов.
  • Группы дисков ASM могут содержать файлы с более чем одного диска.
  • Файлы ASM всегда распределены по каждому диску группы дисков ASM и относятся только к одной группе дисков.
  • ASM выделяет дисковое пространства в единицах выделения (allocation units) размером в 1 Мбайт.

На заметку! Вы можете продолжать использовать обычным образом существующие файлы операционной системы, “чистые” диски или файлы OMF вместе с файлами ASM или же выполнить миграцию существующих файловых систем в файловую систему на базе ASM.


В текущем выпуске Oracle рекомендует создать группу пользователей операционной системы OSASM и выдать системную привилегию SYSASM членам этой группы. В будущих выпусках Oracle предполагает сделать группу OSASM обязательной. А пока группой операционной системы по умолчанию для администраторов ASM остается группа dba. Если пользователь принадлежит к этой группе, он может подключаться к ASM с помощью следующей команды: 

SQL> CONNECT / AS sysasm

Выдается пользователю системная привилегия SYSADM следующим образом:

SQL> GRANT SYSASM TO salapati; 

С помощью команды REVOKE SYSASM можно отобрать привилегию SYSASM. При входе в экземпляр ASM с традиционной системной привилегией SYSDBA база данных выдает предупреждение, которое попадает в журнал предупреждений (alert log).

 

Установка Oracle ASM

Если вы создаете экземпляр ASM на сервере с единственной базой данных Oracle, то, вероятно, мало смысла иметь отдельный домашний каталог Oracle для экземпляра ASM. Однако если на сервере работает несколько баз данных Oracle, то в этом случае Oracle рекомендует инсталлировать ASM в отдельный домашний каталог. Для установки программного обеспечения Oracle, конфигурирования и создания экземпляра ASM применяется универсальный инсталлятор Oracle (Oracle Universal Installer) и помощник по конфигурированию баз данных (Database Configuration Assistant). В приведенном ниже примере мы создадим экземпляр ASM в том же домашнем каталоге, что и существующая база данных Oracle, чтобы не пришлось инсталлировать ничего нового.

 

ASM и служба Cluster Synchronization Service

Система хранения ASM требует использования дополнительного специализированного экземпляра по имени ASM, который будет в действительности управлять хранением набора баз данных Oracle. Чтобы использовать хранилище ASM для баз данных Oracle, сначала необходимо удостовериться в том, что система синхронизации кластеров (Cluster Synchronization Service — CSS) запущена.

CSS отвечает за синхронизацию экземпляров ASM с экземплярами базы данных и инсталлируется как часть программного обеспечения Oracle. Когда вы запускаете экземпляр ASM, он регистрирует себя и управляемые им группы дисков с помощью CSS, и когда СУБД потребуется обратиться к группе дисков, она полагается на CSS в определении имени экземпляра ASM, который управляет группой дисков.

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

$ ps -ef | grep css
oracle 5506 1 1 Apr 11 ? 630:05 /u03/app/oracle/bin/ocssd.bin
oracle 12791 10525 2 16:38:39 pts/11 0:00 grep css
$

Показанный вывод команды ps -ef показывает, что служба CSS запущена. Если же вместо этого вы получите приведенный ниже результат, это будет означать, что служба CSS не стартовала: 

$ ps -ef | grep css
oracle 2207 19736 0 18:12:39 pts/6 0:00 grep css
$

Совет. Пока служба Oracle CSS не запущена, использовать ASM нельзя.


Проверить процесс CSS можно также и утилитой CRSCTL, как показано ниже: 

$ crsctl check cssd
Failure 1 contacting CSS daemon
$ 

Если демон CSS не запущен, как в предыдущем примере, его потребуется запустить, выполнив следующие шаги.

  1. Зарегистрируйтесь как пользователь root.
  2. Удостоверьтесь, что домашний каталог Oracle добавлен в переменную PATH
    # export PATH=$PATH:/u01/app/oracle/product/11.1.0/bin
  3. Введите следующую команду для запуска демона CSS:
    # localconfig add
    /etc/oracle does not exist. Creating it now.
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    Configuration for local CSS has been initialized
    Adding to inittab
    Startup will be queued to init within 30+60 seconds.
    Checking the status of new Oracle init process . . .
    Expecting the CRS daemons to be up within 600 seconds.
    CSS is active on these nodes.
    localhost
    CSS is active on all nodes
    Oracle CSS service is installed and running under init(1M)
    # 
    
  4. Теперь снова проверьте, функционирует ли демон CSS:
    # crsctl check css
    CSS appears healthy
    # 
    

    Посмотреть, работает ли процесс CSS, можно также следующим образом:

    # ps -ef | grep css
    root 24871 1 0 07.59 ? 00:00:00 /bin/su -1 oracle c exec
    root 24945 24871 0 08.00 ?
    00:00:021/app/oracle/product/11.1.0/db_1/bin/ocssd.bin
    # 
    

Сценарий init.cssd, который служит управляющим сценарием для демона CSS, запускает и останавливает службу CSS. Он располагается в каталоге $ORACLE_HOME/css/admin. Команда localconfig add автоматически добавит сценарий init.cssd в системный файл /etc/inittab, как показано ниже: 

h1:3:respawn:/sbin/init.d/init.cssd run >/dev/null 2>&1 

Если вы создали экземпляр ASM с использованием DBCA, то демон CSS будет запущен автоматически. Команда localconfig и утилита CRSCTL работают точно так же на сервере Windows. За подробной информацией по конфигурированию службы CSS в среде Windows обращайтесь к соответствующей документации.


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


 

Создание экземпляра ASM

Прежде чем можно будет создать файловую систему ASM, на сервере потребуется создать экземпляр ASM. Для создания экземпляра ASM выполняется тот же процесс, что и при создании другого экземпляра Oracle, но с существенным отличием — меньшим количеством параметров инициализации. Следует отметить, что экземпляр ASM не может монтировать никаких файлов базы данных Oracle. Его главная функция — поддерживать метаданные файлов ASM, которые обычные базы данных Oracle используют для доступа к файлам данных, управляемым ASM. Экземпляр ASM обычно требует только 100 Мбайт памяти. В отличие от обычных баз данных Oracle, экземпляры ASM не имеют словарей данных, поэтому необходимо подключиться в качестве администратора — либо с использованием аутентификации операционной системы и учетной записи SYSDBA или SYSOPER, либо с применением файла паролей, если работа осуществляется через удаленное соединение. В базе данных Oracle Database 11g можно использовать новую роль SYSASM, чтобы отделить административные задачи ASM от обычного администрирования баз данных. Для создания экземпляра ASM понадобится привилегия SYSDBA. Большинство задач управления (помимо создания экземпляра и ряда других задач) можно выполнять, обладая только привилегией SYSOPER, но подключение как SYSDBA означает необходимость наличия полных административных привилегий.


На заметку! Если вы решили создать базу данных Oracle во время инсталляции программного обеспечения Oracle Database или же используете для создания базы данных DBCA, то все, что потребуется сделать для использования ASM — это выбрать систему хранения ASM из трех предложенных вариантов хранения (“чистые” диски, файловая система ОС и ASM). DBCA автоматически создаст экземпляр ASM вместе с базой данных Oracle.


 

Работа с параметрами инициализации экземпляра ASM

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

    • INSTANCE_TYPE. В Oracle Database 11g существуют два типа экземпляров Oracle: RDBMS и ASM. RDBMS обозначает обычные базы данных Oracle, а ASM — новый экземпляр ASM. Установите параметр INSTANCE_TYPE в ASM.
    • ASM_POWER_LIMIT. Этот параметр контролирует скорость операции перебалансировки, управляя количеством процессов ARB, которые выполняют эту операцию. Перебалансировка данных равномерно перераспределяет файлы данных и балансирует ввод-вывод между дисками. По умолчанию этот параметр равен 1 и может принимать значения от 1 до 11 (1 — самый медленный, 11 — быстрый).
    • ASM_DISKSTRING. Это местоположение, где Oracle должен искать данные во время процесса восстановления диска. Формат строки может варьироваться в зависимости от операционной системы. Можно специфицировать список значений, как показано ниже; данный пример ограничивает восстановление ASM только дисками, чьи имена заканчиваются на c2 и c3
      ASM_DISKSTRING = '/dev/rdsk/*c2', '/dev/rdsk/*c3' 
    • ASM_DISKGROUPS. Здесь указывается имя любой группы дисков, которые должны монтироваться автоматически при запуске экземпляра; значение этого параметра по умолчанию равно NULL.

Чтобы запустить экземпляр ASM, сначала потребуется создать файл init.ora (init+asm.ora), содержащий параметры инициализации, которые относятся к ASM: 

INSTANCE_TYPE=ASM
ASM_POWER_LIMIT =2
ASM_DISKSTRING = '/dev/rdsk/*s1', '/dev/rdsk/*s2'
ASM_DISKGROUPS = dgroupA, dgroupB

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

Как только файл init.ora будет готов, экспортируйте SID-идентификатор нового экземпляра ASM, как это делается с любой обычной базой данных, и запустите новый экземпляр ASM, как показано в листинге 4.


На заметку! Если экземпляр CSS не стартовал по каким-то причинам, вы увидите следующую ошибку при попытке создания экземпляра ASM: 

ORA-29701: unable to connect to Cluster Manager
не удается подключиться к диспетчеру кластеров

Если такое случится, просто запустите демон CSS, как описано выше, в разделе “ASM и служба Cluster Synchronization Service” настоящей статьи, а затем запустите экземпляр ASM, как показано в листинге 4:



[finance] $ export ORACLE_SID=+ASM
[+ASM] $ sqlplus /nolog
SQL*Plus: Release 11.1.0.6.0 - Production on Thu Apr 10 09:21:48 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
SQL> CONNECT / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP PFILE=initasm+.ora
ASM instance started
Total System Global Area          79691776 bytes
Fixed Size                         1216820 bytes
Variable Size                     53309132 bytes
ASM Cache                         25165824 bytes
ORA-15110: no diskgroups mounted
ORA-15110: группы дисков не смонтированы
SQL>

Обратите внимание на новый компонент SGA — кэш ASM, размер которого составляет около 25 Мбайт. В большинстве случаев общая память SGA, выделенная для экземпляра ASM, остается небольшой — обычно менее 100 Мбайт.

В предыдущем примере была также получена ошибка ORA-15110, потому что группы дисков, специфицированные в файле init.ora, пока не существуют, и новый экземпляр не может их смонтировать. Мы создадим группы дисков позднее и затем смонтируем их командой ALTER DISKGROUP…MOUNT. Избежать этого сообщения об ошибке можно, исключив параметр ASM_DISKGROUP из файла параметров инициализации.


Совет. Как только экземпляр ASM создан, необходимо установить переменную окружения ORACLE_SID для этого экземпляра, прежде чем подключаться к нему — точно так же, как это делается с нормальным экземпляром Oracle. Именем экземпляра ASM по умолчанию является +ASM.


Просмотреть имя нового экземпляра ASM можно с помощью следующего запроса: 

SQL> SELECT instance_name FROM v$instance;
INSTANCE_NAME
----------------
+ASM
SQL>

Запустив команду LSNRCTL STATUS из командной строки, вы увидите, что слушатель автоматически зарегистрировал новый экземпляр ASM:

Service "+ASM" has one instance(s). 

Проверить процесс вновь созданного экземпляра ASM можно следующим образом:

[+ASM] $ ps –ef | grep asm
oracle 3201 1 0 Jul 3 ? 0:00:00 oracleasm+ (DESCRIPTION =
(LOCAL=YES) (ADDRESS=(PROTOCOL=beq)))
oracle 11977 1 0 12:56 ? 0:00: 05 asm_pmon_+asm
oracle 11979 1 0 12:56 ? 0:00: 02 asm_psp0_+asm
oracle 11981 1 0 12:56 ? 0:00: 02 asm_mman_+asm
oracle 11985 1 0 12:56 ? 0:00: 02 asm_dbw0_+asm
oracle 11973 1 1 12:56 ? 0:00: 02 asm_lgwr_+asm
oracle 11987 1 0 12:56 ? 0:00: 03 asm_ckpt_+asm
oracle 11989 1 0 12:56 ? 0:00: 02 asm_smon_+asm
oracle 11991 1 0 12:56 ? 0:00: 02 asm_rbal_+asm
oracle 11995 1 0 12:56 ? 0:00: 02 asm_gmon_+asm
[+ASM] $ 

Все фоновые процессы, показанные в приведенном выводе — это стандартные процессы Oracle Database 11g, за исключением пары фоновых процессов, специфичных для экземпляра ASM. В следующем разделе объясняются важные специфичные для ASM фоновые процессы.


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


 

Обзор архитектуры экземпляра ASM

Экземпляр ASM использует несколько обычных фоновых процессов Oracle, таких как SMON, PMON и LGWR. В дополнение к ним ASM использует два новых: мастер перебалансировки ASM (RBAL) и процесс перебалансировки ASM (ARBn). Процесс RBAL координирует дисковую активность, а процессы ARBn выполняют работу по перебалансировке, которая может включать перемещение экстентов данных.

В дополнение к RBAL и ARBn, любой экземпляр Oracle, использующий ASM, будет иметь два фоновых процесса, относящихся к ASM: RBAL и фоновый ASM (ASM background — ASMB). RBAL выполняет глобальное открытие дисков, являющихся частью группы дисков ASM, а ASMB подключается к экземпляру ASM как процесс переднего плана и связывает экземпляр ASM с экземпляром базы данных, посылая такую информацию, как уведомления при создании и удалении файлов данных, а также при обновлении статистики.

Для управления экземпляром ASM можно использовать средство OEM Database Control. Его главная страница показывает состояние экземпляра ASM. На этой странице щелкните на вкладке Configuration (Конфигурация) для посещения страницы Configuration, где можно модифицировать параметры экземпляра ASM. Можно также перейти на главную страницу ASM и проверить производительность экземпляра.

Давайте рассмотрим процедуры запуска и останова ASM.

 

Запуск экземпляра ASM

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

На фазе монтирования нормальной команды STARTUP база данных Oracle читает управляющий файл и монтирует указанные там файлы данных. Экземпляр ASM не имеет никаких файлов данных, подлежащих монтированию; вместо этого монтируются группы дисков, указанные в параметре инициализации ASM_DISKGROUPS.

Команда NOMOUNT подобна обычной команде Oracle NOMOUNT: она запускает экземпляр ASM, но не монтирует группы дисков. В листинге 5 ниже показано, как работают команды STARTUP NOMOUNT и STARTUP MOUNT в экземпляре ASM. 


SQL> STARTUP NOMOUNT;
ASM instance started
Total System Global Area         79691776 bytes
Fixed Size                        1216820 bytes
Variable Size                    53309132 bytes
ASM Cache                        25165824 bytes
SQL> SELECT name FROM v$database;
select name from v$database
*
ERROR at line 1:
ORA-01507: database not mounted
SQL> ALTER DATABASE MOUNT;
alter database mount
*
ERROR at line 1:
ORA-15000: command disallowed by current instance type
команда не разрешена текущим типом экземпляра
SQL>
SQL> ALTER DATABASE OPEN;
alter database open
*
ERROR at line 1:
ORA-15000: command disallowed by current instance type
SQL>

Для использования ASM необходимо иметь запущенный экземпляр ASM, а поскольку в экземпляре ASM нет никаких файлов данных, вы не можете использовать опции MOUNT или OPEN команды STARTUP. При выдаче команды STARTUP FORCE экземпляр ASM сначала останавливается внутренней командой SHUTDOWN ABORT, и экземпляр перезапускается. Предотвратить подключения любых клиентских баз данных Oracle к экземпляру ASM можно с помощью команды STARTUP RESTRICT.

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

 

Средство ASM Fast Mirror Resync

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

Новое средство ASM fast mirror resync (быстрая синхронизация зеркал) в Oracle Database 11g служит для быстрой ресинхронизации групп дисков после кратковременного сбоя диска. Благодаря этому средству, база данных перепишет только те экстенты, которые были модифицированы во время отказа, вместо того, чтобы копировать весь диск после его отключения и повторного включения после восстановления. При этом методе диск переводится в отключенный режим, но затем не уничтожается. Атрибут DISK_REPAIR_TIME предназначен для управления продолжительностью времени ожидания ASM завершения восстановления диска с повторной синхронизацией диска. За счет использования средства быстрой синхронизации зеркал экономится ощутимое время, потому что базе данных не нужно стирать содержимое восстанавливаемого диска перед возвратом его в группу дисков. Вдобавок ASM не приходится выполнять длительную операцию перебалансировки после добавления восстановленного диска обратно в группу дисков.

Рассмотрим пример, демонстрирующий настройку средства fast mirror resync посредством специфицирования атрибута DISK_REPAIR_TIME в команде ALTER DISKGROUP

SQL> ALTER DISKGROUP dgroupA
SET ATTRIBUTE 'disk_repair_time'='4h';

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

После восстановления переведите диск в онлайновый режим с помощью следующей команды: 

SQL> ALTER DISKGROUP dgroupA ONLINE;

Значение по умолчанию DISK_REPAIR_TIME составляет 3,6 часа. При желании можно переопределить атрибут DISK_REPAIR_TIME, специфицируя конструкцию DROP AFTER в команде ALTER DISKGROUP...OFFLINE

SQL> ALTER DISKGROUP dgroupA
OFFLINE DISKS IN FAILUREGROUP controller1
DROP AFTER 4h;

Для отбрасывания отключенного диска, который невозможно восстановить, можно специфицировать опцию FORCE

SQL> alter diskgroup dgroupA
drop disks in failuregroup controller1 force;

Как только вы отбросите (drop) отключенную группу дисков, ASM реконструирует данные отброшенного диска из избыточных копий и сохранит их на одном из дисков той же группы.

 

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

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

          • нормальный — предусматривает двунаправленное (two-way) зеркальное отображение;
          • высокий — предусматривает трех-направленное (three-way) зеркальное отображение;
          • внешний — пропускает зеркальное отображение ASM, и идеально подходит, когда необходимо конфигурировать аппаратный RAID для обеспечения избыточности.

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

По умолчанию ASM всегда читает первичную копию зеркального экстента и в нормальной, и в высокоизбыточной группах дисков. Однако временами может оказаться более эффективным чтение локальной копии экстента, даже если она не находится в первичной группе отказа. Средство предпочтительного зеркального чтения можно использовать для того, чтобы заставить экземпляр ASM читать из определенной группы отказов вместо автоматического чтения первичной группы. Это средство особенно полезно, когда вы имеете дело с растянутым кластером (stretch cluster), в котором индивидуальные узлы разбросаны.

Чтобы специфицировать список имен предпочтительных групп отказов для чтения, потребуется установить параметр инициализации ASM_PREFERRED_READ_FAILURE_GROUPS, как показано в следующем примере:

asm_preferred_read_failure_groups=data.locationA,data.locationB

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

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

SQL> select preferred_read from v$asm_disk;

Значение столбца PREFFERED_READ будет равно Y, если диск относится к такой группе.

 

Изменение атрибутов групп дисков ASM

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

 

Размер единицы выделения

При создании группы дисков можно специфицировать размеры единицы выделения (allocation unit — AU) как 1, 2, 4, 8, 16, 32 и 64 Мбайт.

 

Совместимость СУБД

С помощью параметра COMPATIBLE.RDBMS задается уровень совместимости СУБД. Это минимальный уровень совместимости экземпляра базы данных, позволяющий экземпляру монтировать группу дисков ASM.

 

Совместимость ASM

Параметр COMPATIBLE.ASM позволяет определить формат метаданных ASM. Обратите внимание, что уровень совместимости ASM должен быть, как минимум, таким же или больше, чем уровень совместимости СУБД группы дисков.

 

Время восстановления диска

Как вы знаете, значение атрибута DISK_REPAIR_TIME по умолчанию равно 3,6 часа. С помощью оператора ALTER DISKGROUP можно задать альтернативное значение для этого атрибута.

 

Избыточность шаблонов

Посредством атрибута TEMPLATE.TNAME.REDUNDANCY устанавливается избыточность шаблона. Он может принимать значения unprotect, mirror и high.

 

Расслоение шаблонов

Специфицировав атрибут TEMPLATE.TNAME.STRIPING, можно задать атрибуты расслоения шаблона. Допустимыми значениями являются COARSE или FINE.

В следующем примере показано, как специфицировать значение уровня совместимости ASM, используя конструкцию ATTRIBUTE в операторе CREATE DISKGROUP:

SQL> CREATE DISKGROUP data1 NORMAL REDUNDANCY
DISK '/dev/raw/raw1', '/dev/raw/raw2'
ATTRIBUTE 'compatible.asm'='11.1';

Уровень совместимости ASM по умолчанию для Oracle Database 11g равен 11.1, а уровень совместимости базы данных по умолчанию — 10.1.

 

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

Для остановки экземпляра ASM применяются те же команды, что и при остановке обычного экземпляра базы данных Oracle:

$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
Connected.
SQL> SHUTDOWN
ASM instance shutdown
SQL> 

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

В Oracle рекомендуют сначала остановить экземпляры базы данных (управляемые экземпляром ASM) перед тем, как остановить экземпляр ASM. Если вы остановите экземпляр ASM в режиме NORMAL, то перед тем, как остановиться, он будет ожидать, пока все подключенные к нему экземпляры базы данных Oracle не закроют свои соединения с ASM. Если вы останавливаете его в режиме IMMEDIATE или TRANSACTIONAL, то экземпляр ASM будет ждать до тех пор, пока подключенные базы данных не завершат все свои операции SQL, но не будет ждать их отключения. Команда SHUTDOWN ABORT вызовет следующие события.

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

 

Инструмент командной строки asmcmd

Управлять ASM можно также с помощью инструмента командной строки, который обеспечивает большую гибкость, чем применение SQL*Plus или Database Control. Утилита asmcmd позволяет просматривать и управлять файлами и каталогами внутри группы дисков ASM. Чтобы вызвать инструмент администрирования командной строки, введите следующую команду (после запуска экземпляра ASM):

$ asmcmd
ASMCMD>

В показанном здесь приглашении командной строки можно вводить различные команды. Инструмент asmcmd понимает свыше десятка команд, которые служат для управления файловыми системами ASM, и включает такие знакомые команды UNIX/Linux, как du, проверяющая использование диска ASM. Чтобы получить полный список команд, введите help в приглашении командной строки ASMCMD>. Набрав help с последующим именем команды, можно получить детальную информацию об этой команде.

Запустить asmcmd можно из командной строки, набрав asmcmd в приглашении оболочки операционной системы. Команды asmcmd можно также включать в сценарии операционной системы. Некоторые команды asmcmd, такие как LSDSK, не требуют наличия работающего экземпляра ASM, но большинство команд все же требуют его.

Для выбора типа соединения в команде asmcmd потребуется указать опцию -a. Подключаться можно либо как SYSASM, либо с использованием хорошо знакомой привилегии SYSDBA. По умолчанию производится подключения от имени SYSASM. Привилегия SYSASM — новая в Oracle Database 11g, и ее цель — отделить относящиеся к ASM административные задачи от общих административных задач баз данных. Вы можете продолжать подключаться как SYSDBA, но всякий раз, когда вы так поступаете, база данных будет выдавать предупреждение, которые записываются в журнал предупреждений.


На заметку! Как упоминалось ранее, есть также новая группа пользователей операционной системы по имени OSASM, куда потребуется назначить всех пользователей, которым нужно выдать административные привилегии, касающиеся ASM.


Утилита asmcmd реализует такие команды, как cp, которые помогают копировать файлы из ASM в файловую систему операционной системы и наоборот. Две наиболее важных команды asmcmd, о которых следует знать — это md_backup и md_restore, составляющие то, что в Oracle называют ASM Backup and Recovery (AMBR). Используя опции md_backup и md_restore утилиты asmcmd, можно воссоздавать группы дисков ASM с идентичными структуре каталогов и шаблонам псевдонимами. Команда md_backup сохраняет эти относящиеся к резервным копиям метаданные в текстовом файле. Опция md_restore использует информацию в текстовом файле для реконструкции дисковых групп. В следующих разделах статьи команды md_backup и md_restore рассматриваются более подробно.

 

md_backup

С помощью команды md_backup можно создавать резервные копии метаданных ASM для групп дисков. Эти резервные копии помогают ASM легко воссоздавать группы дисков ASM после утери. Ниже показан синтаксис команды md_backup:

md_backup [-b <файл_резервной_копии>]
[-g '<имя_группы_дисков>,<имя_группы_дисков>, ...']

Опция -b специфицирует имя текстового файла резервной копии, который по умолчанию называется ambr_backup_intermediate. По умолчанию команда md_backup резервирует все группы дисков ASM, однако посредством опции -g можно указать только нужные группы.

Рассмотрим пример, демонстрирующий выполнение резервное копирование единственной группы дисков с помощью следующей команды: 

ASMCMD> md_backup -b /tmp/asmbkp1 -g admdsk1

Опция -g указывает, что должна резервироваться единственная группа дисков, а опция -b задает имя текстового файла резервной копии asmbkp1.

 

md_restore

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

md_restore -b <файл_резервной_копии> [-li]
[-t (full)|nodg|newdg] [-f <файл_сценария_sql>]
[-g '<имя_группы_дисков>,<имя_группы_дисков>, . . .']
[-o '<старое_имя_группы_дисков>:<новое_имя_группы_дисков>, ...']

Из всех опций, которые можно использовать с командой md_restore, опция -t требует некоторых пояснений. С ее помощью указывается тип резервирования, как описано ниже:

          • full — создает дисковую группу и восстанавливает метаданные;
          • nodg — восстанавливает только метаданные;
          • newdg — создает дисковую группу с другим именем и восстанавливает метаданные.

Следующий пример показывает, как восстановить дисковую группу и создать новую дисковую группу, указав -t newdg:

ASMCMD> md_restore -t newdg -o 'DGNAME=asmdsk1:asmdsk2' -i backup_file 

Команда md_recover не может восстановить действительные данные, хранимые на дисках ASM. Однако она восстанавливает дисковые группы, модифицированные шаблоны и создает каталоги. Как только вы восстановите метаданные дисковой группы, можно будет использовать резервирование RMAN для восстановления данных на воссозданных группах дисков.


Совет. Регулярно выполняйте команду md_restore с опцией -f, чтобы сохранять историю метаданных ASM.


Пример резервирования и восстановления

В следующем примере будет показано, как использовать команды md_backup и md_restore для восстановления утерянных данных.

1. Подготовьте резервную копию табличного пространства users:

RMAN> BACKUP TABLESPACE users; 

2. Создайте каталог по имени test в дисковой группе DGROUPA. Также создайте псевдоним по имени +DGROUPA/test/users.f, указывающий на файл данных ASM, содержащий табличное пространство users

ASMCMD> mkdir +DGROUPA/test
ASMCMD> mkalias TBSSRA.123.123456789 +DGROUPA/test/users.f

3. Выполните резервное копирование метаданных для группы дисков DGROUPA с использованием команды md_backup

ASMCMD> md_backup –g dgroupA

Команда md_backup сохраняет резервную копию метаданных в текстовом файле по имени ambr_backup_intermediate в текущем каталоге.

4. Эмулируйте сбой диска, уничтожив дисковую группу DGROUPA

SQL> ALTER DISKGROUP dgroup1 DISMOUNT FORCE;
SQL> DROP DIKSGROUP dgroup1 FORCE INCLUDING CONTENTS;

Конструкция DISMOUNT FORCE в команде ALTER DISKGROUP размонтирует дисковую группу и принудительно уничтожит ее.

5. Выполните команду md_restore с целью восстановления метаданных ASM для уничтоженной дисковой группы: 

ASMCMD> md_restore –b ambr_backup_intermediate_file –t full –g data

6. Используя резервную копию табличного пространства users, полученную на шаге 1, восстановите табличное пространство users:

RMAN>RESTORE TABLESAPCE users; 

7. По завершении восстановления выйдите из RMAN.

 

Управление группами дисков ASM

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

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

 

Увеличение производительности и избыточности с помощью групп дисков

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

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


На заметку! OEM Database Control представляет собой наилучший способ администрирования экземпляра ASM после его создания. Обратитесь к руководству Oracle Database 11g Release 1 под названием Oracle Database 2 Day DBA за подробной информацией по применению Database Control для управления дисковыми группами, а также другими аспектами экземпляра ASM.


 

Расслоение ASM

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

ASM предлагает два типа расслоения, и выбор зависит от типа файла базы данных. Крупное (coarse) расслоение использует размер фрагмента в 1 Мбайт, и такое расслоение можно использовать для каждого файла в базе данных, за исключением управляющих файлов, онлайновых файлов журналов повторного выполнения, а также файлов ретроспективного восстановления. Мелкое (fine) расслоение использует размер фрагмента в 128 Кбайт. Мелкое расслоение можно использовать для управляющих файлов, онлайновых файлов журналов повторного выполнения и файлов ретроспективного восстановления.

 

Зеркальное отображение ASM

Зеркальное отображение дисков обеспечивает избыточность данных. Это значит, что в случае утраты диска можно использовать зеркальный диск для продолжения работы. Этот процесс не похож на схему зеркального отображения уровня операционной системы, хотя и то и другое обеспечивает избыточность базы данных. Отличие в том, что LVM на основе операционной системы зеркально отображает целые диски, в то время как ASM — экстенты. Это значит, что когда ASM выделяет экстент (первичный экстент, в отличие от зеркального экстента), он также выделяет зеркальную копию одного из дисков в той же дисковой группе.

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

 

Группы отказов

Сбой диска — не единственная причина утраты диска. Потерять диск можно также в случае, если дают сбой разделяемые ресурсы, подобные дисковым контроллерам SCSI. Когда такое происходит, обратиться ни к одному из подключенных дисков не удастся. Набор дисков, которые дают сбой из-за того, что все они разделяют общий ресурс, такой как дисковый контроллер, называется группой отказа (failure group). Избыточность обеспечивается за счет зеркального отображения дисков на отдельную группу отказа.

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

 

Типы зеркального отображения ASM

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

 

Создание дисковой группы

OEM Database Control — наилучший инструмент для выполнения большинства задач ASM, включая создание группы дисков. Используя страницу Disk Group Administration (Администрирование дисковых групп), можно выбрать уровни избыточности, имена дисковых групп и списки дисков — членов дисковой группы. Однажды создав группы дисков, экземпляр ASM будет монтировать их при каждом запуске экземпляра, и вы не получите ошибки ORA-15110 (“No diskgroups mounted”), как это бывает при первоначальном запуске экземпляра ASM. Создать группу дисков можно также с помощью команды CREATE DISKGROUP. Предположим, что есть три дисковых контроллера и двенадцать дисков. Первые четыре диска подключены к первому контролеру, следующие четыре — ко второму и т.д. Можно создать три группы отказов, каждая из которых состоит из четырех дисков. Чтобы приступить к этому, нужно сначала запустить экземпляр ASM в режиме без монтирования (nomount). (Если вы хотите иметь доступ к существующим дисковым группам, следует использовать режим с монтированием (mount).) После этого можно создать дисковые группы, соответствующие этим трем группам. Соответствующая команда CREATE DISKGROUP показана в листинге 6:


$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP NOMOUNT
SQL> CREATE DISKGROUP group1 HIGH REDUNDANCY 2
2 failgroup group1 disk
3 '/devices/disk1',
4 '/devices/disk2',
5 '/devices/disk3',
6 '/devices/disk4',
7 failgroup group2 disk
8 '/devices/disk5',
9 '/devices/disk6',
10 '/devices/disk7',
11 '/devices/disk8',
12 failgroup group3 disk
13 '/devices/disk9',
14 '/devices/disk10',
15 '/devices/disk11',
16 '/devices/disk12';
SQL>

Чтобы найти диски, Oracle использует строку поиска в следующем формате:

/devices/имя_диска 

Ключевые слова FAILGROUP и REDUNDANCY не обязательны, но если опустить FAILGROUP, то каждый диск в группе будет принадлежать его собственной группе отказа. Указание HIGH REDUNDANCY создает следующую настройку.

          • Есть три группы отказов, каждая из которых определена с помощью FAILGROUP (для указания HIGH REDUNDANCY необходимо иметь, как минимум, три группы отказов).
          • Каждая группа отказа имеет четыре диска.
          • Oracle пишет данные одновременно на три диска в трех группах отказов.

 

Добавление дисков к дисковой группе

Команда ALTER DISKGROUP может использоваться для добавления нового диска в группу, как показано ниже: 

SQL> ALTER DISKGROUP group1 ADD DISK
'/devices/disk5' name disk5,
'/devices/disk6' name disk6,

 

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

Команда ALTER DISKGROUP может применяться для удаления дисков: 

SQL> ALTER DISKGROUP group1 DROP DISK disk5; 

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

SQL> DROP DISKGROUP group1 INCLUDING CONTENTS

Конструкция UNDROP откладывает выполнение команды DROP DISK. Если диск уже удален, восстановить его никак не удастся, даже с помощью UNDROP.

Необязательная конструкция FORCE означает, что вы не можете использовать конструкцию UNDROP и не сможете восстановить всю дисковую группу. Вот пример применения конструкции UNDROP

SQL> ALTER DISKGROUP group1 UNDROP DISKS;

Это отменит все отложенные операции по удалению дисков из дисковой группы group1.

 

Перебалансировка дисковых групп

Когда ASM выполняет перебалансировку дисковой группы, это делается автоматически и динамически. Это происходит всякий раз, когда вы изменяете состояние диска в группе, добавляя или удаляя диск из дисковой группы — ASM пытается поддерживать баланс ввода-вывода между дисками в группе. Поэтому при добавлении или удалении дисков нарушается баланс ввода-вывода, но ASM автоматически восстанавливает его, перемещая данные в соответствии с изменившимся пространством.


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


Перебалансировать дисковые группы можно также вручную, воспользовавшись приведенной ниже командой. В конструкции POWER задается значение от 1 до 11. 

SQL> ALTER DISKGROUP dgroup1 REBALANCE POWER 5;

Конструкция POWER указывает, насколько скоро ASM выполнит команду REBALANCE. Установка высокого значения конструкции POWER увеличивает скорость перебалансировки. Значение по умолчанию равно 1 (стандартное значение параметра ASM_POWER_LIMIT). Указание POWER означает переопределение значения, назначенного параметру инициализации ASM_POWER_LIMIT при запуске экземпляра ASM. Разумеется, было бы лучше выполнять перебалансировку дисков поскорее, но из-за накладных расходов приходится идти на компромисс между скоростью перебалансировки и производительностью базы данных.

 

Управление файлами ASM

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

Для создания нового табличного пространства в дисковой группе ASM потребуется запустить команду вроде следующей: 

SQL> CREATE TABLESPACE tbsp1 DATAFILE '+group1';

В этом примере DATAFILE указывает тип файла (DATAFILE); это говорит о том, что мы собираемся использовать файл в качестве файла данных. Здесь CREATE TABLESPACE работает с дисковой группой, а не с диском в этой группе. Обратите внимание, что мы даже не ссылаемся на файл данных.

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

Следует также заметить, что файлы ASM имеют постоянный уровень избыточности хранения и политику расслоения (stripping), что отличает их от нормальных файлов данных.

Файлы ASM — это файлы OMF, и Oracle удалит их, когда они не будут нужны. Обратите внимание, что если вы дадите файлу ASM пользовательский псевдоним, то Oracle не будет считать его OMF-файлом, и потому не станет автоматически удалять его.


На заметку! Административные файлы, такие как файлы трассировки, аудита, журналов предупреждений, файлы tar и ядра, не могут находиться в файловой системе ASM. Имена файлов ASM хранятся в управляющих файлах и каталоге восстановления RMAN — так же, как и имена обычных файлов операционной системы или файлов OMF.


 

Типы имен файлов ASM

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

  • Полные квалифицированные имена файлов ASM используются при обращении к существующим файлам ASM (например, +dgroupA/db2/controlfile/CF.123.456789).
  • Числовые имена файлов ASM также используются только для обращения к существующим файлам ASM (например, +dgroupA.123.456789).
  • Псевдонимы имен файлов ASM используют дружественные к пользователям имена и применяются при создании новых файлов, а также при обращении к существующим файлам (например, +dgroupA/myfiles/control_file1).
  • Псевдонимы имен файлов с шаблонами предназначены строго для создания новых файлов (например, +dgroupA/config1(spfile)).
  • Неполные имена файлов ASM состоят из имени дисковой группы и используются только при создании файлов. Неполные имена файлов ASM могут применяться с шаблоном или без (например, неполное имя файла с шаблоном выглядит как +dgroupA(datafile)).

 

Создание каталогов групп дисков для псевдонимов имен файлов

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

Следующий пример показывает, как создать иерархический каталог для дисковой группы по имени dgroup1:

SQL> ALTER DISKGROUP dgroup1 ADD DIRECTORY '+dgroup1/dir1';

После создания каталога +dgroup1/dir1 можно создавать псевдонимы имен файлов ASM, такие, например, как +dgroup1/dir1/control_file1.

 

Использование шаблонов с псевдонимами

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


На заметку! Шаблоны детально обсуждаются в разделе этого блога “Шаблоны файлов ASM” ниже.


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

дисковая_группа/псевдоним(шаблон)

А вот пример:

dgroup1/config1(spfile) 

 

Добавление и уничтожение псевдонимов

Если вы создаете файл и не используете псевдоним, то можете позднее добавить псевдоним с помощью конструкции ADD ALIAS или RENAME ALIAS оператора ALTER DISKGROUP. В следующем примере полностью квалифицированное имя файла ASM заменяется псевдонимом: 

SQL> ALTER DISKGROUP dgroup1 ADD ALIAS '+dgroup1/dir/second.dbf'
FOR '+dgroup2/ datafile/table.763.1';

Для удаления псевдонима служит конструкция DROP ALIAS.

 

Удаление файлов из дисковой группы

Файлы ASM часто являются файлами OMF, но иногда может понадобиться использовать ваши собственные псевдонимы для некоторых файлов ASM. В случае применения собственных псевдонимов Oracle не будет автоматически удалять псевдонимы, когда возникнет такая необходимость. Для их удаления нужно использовать оператор ALTER DISKGROUP...DROP TABLE

SQL> ALTER DISKGROUP dgroup1 DROP FILE '+dgroup1/payroll/compensation.dbf';

 

Работа с именами файлов ASM

Ниже подведен краткий итог использования имен файлов ASM.

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

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

 

Шаблоны файлов ASM

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

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

Например, предположим, что необходимо создать новое табличное пространство по имени tbsp01 в файловой системе ASM. Это табличное пространство будет использовать файлы данных, так что можно будет применять шаблон ASM DATAFILE

SQL> CREATE TABLESPACE tbsp01 DATAFILE '+group1';

Файл данных табличного пространства унаследует от шаблона DATAFILE такие атрибуты, как уровень расслоения.

 

Создание базы данных на основе ASM

Чтобы создать базу данных Oracle на основе ASM (не экземпляр ASM, который создавался ранее в этой статье), специфицируйте в файле параметров инициализации параметры DB_CREATE_FILE_DEST, DB_RECOVERY_FILE_DEST и DB_RECOVERY_FILE_DEST_SIZE

DB_CREATE_FILE_DEST = '+dgroup1'
DB_RECOVERY_FILE_DEST = '+dgroup2'
DB_RECOVERY_FILE_DEST_SIZE = 100G

Эти три параметра также используются для создания файловой системы OMF.

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

SQL> CREATE DATABASE;

В этом примере Oracle создаст табличные пространства System и Sysaux в дисковой группе dgroup1. В дополнение также будет создана мультиплексированная группа файлов журналов повторного выполнения и управляющий файл в dgroup1 и dgroup2. Если настроено средство Automatic Undo Management, то также в dgroup1 будет создано табличное пространство отмены.

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

SQL> CREATE TABLESPACE new_tbsp;

Для создания файла журнала повторного выполнения применяется следующий оператор:

SQL> ALTER DATABASE ADD LOGFILE; 

 

Перенос базы данных в ASM

Перенести базу данных в систему ASM можно либо с помощью OEM Databse Control (или Grid Control), либо посредством RMAN. Использовать RMAN можно, даже если он не применяется для резервного копирования текущей базы данных.

 

Перенос с помощью RMAN

Ниже приведено краткое описание использования RMAN для переноса базы данных в ASM.

1. Остановите базу данных в согласованном режиме, используя команду SHUTDOWN IMMEDIATE.

2. Добавьте в файл параметров базы данных параметры DB_CREATE_FILE_DEST и DB_CREATE_ONLINE_LOG_DEST_n вместе с новыми параметрами инициализации области пакетного восстановления — DB_RECOVERY_FILE_DEST и DB_RECOVERY_FILE_DEST_SIZE, чтобы можно было использовать файловую систему на основе OMF. Обеспечьте, чтобы эти два параметра OMF ссылались на дисковые группы, которые вы хотите использовать в системе ASM.

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

4. Запустите базу данных командой STARTUP NOMOUNT

RMAN> CONNECT TARGET;
RMAN> STARTUP NOMOUNT;

5. Восстановите старый управляющий файл в новом месте, как показано ниже:

RMAN> RESTORE CONTROLFILE from '/u01/orcl/oradata/control1.ctl'; 

6. Смонтируйте базу данных:

RMAN> ALTER DATABASE MOUNT; 

7. Используйте следующую команду для копирования файлов базы данных в дисковую группу ASM:

RMAN> BACKUP AS COPY DATABASE FORMAT +dgroup1; 

8. Используйте команду SWITCH  для переключения всех файлов данных в дисковую группу ASM по имени dgroup1:

RMAN> SWITCH DATABASE TO COPY; 

К этому моменту все файлы данных будут преобразованы в тип ASM. Вы по-прежнему будете иметь на диске исходные копии файлов данных, которые при необходимости можно применить для восстановления базы данных.

9. Откройте базу данных следующей командой: 

RMAN> ALTER DATABASE OPEN;

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

RMAN> SQL "alter database rename '/u01/test/log1' to '+dgroup1' "; 

11. Заархивируйте текущие онлайновые журналы повторного выполнения и удалите старые, отличные от ASM, журналы. Поскольку RMAN не переносит временных файлов, понадобится вручную создать временное табличное пространство, используя оператор CREATE TEMPORARY TABLESPACE.

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

 

Перенос с помощью Database Control

Вместо того чтобы проходить весь запутанный процесс миграции посредством RMAN, можно воспользоваться интерфейсом Database Control для простого преобразования текущей базы данных в базу данных ASM. Ниже перечислены первые несколько шагов.

  1. На домашней странице Database Control щелкните на вкладке Administration (Администрирование).
  2. В группе Change Database (Изменить базу данных) щелкните на ссылке Migrate to ASM (Перенести в ASM).
  3. Вы окажетесь на странице Migrate Database to ASM (Перенос базы данных в ASM), показанной на скриншоте ниже. И здесь следует убедиться, что экземпляр ASM запущен на сервере. После этого нужно ввести необходимую информацию на последующих страницах, чтобы преобразовать базу данных в ASM.

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

Oracle изменения изменений!
Oracle изменения изменений! 3112 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Разница между базой данных и э...
Разница между базой данных и э... 3266 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:46
Проверка оставшегося свободног...
Проверка оставшегося свободног... 5786 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:46
База данных и экземпляр Oracle...
База данных и экземпляр Oracle... 6515 просмотров Antoni Tue, 21 Nov 2017, 13:28:01
Войдите чтобы комментировать

VaaPa аватар
VaaPa ответил в теме #9770 3 года 4 мес. назад
Спасибо за подробнейший мануал по установке Оракл ASM! Счастье есть!))
OraDevel аватар
OraDevel ответил в теме #8768 6 года 5 мес. назад
Хороший блог - все по существу о ASM Oracle и очень подробно. Я работал с ASM, когда он впервые вышел в бета-версии, и сейчас он значительно улучшился начиная с версии Oracle 10g (добавили много функций и убрали баги).