6 нояб. 2011 г.

Database As Service. Part1 (Создание шаблона БД)

На прошедшем Oracle Day я рассказывал презентацию про подготовку инфраструктуры для облачных вычислений. Была затронута тема предоставления заказчикам базы данных как сервиса - Database As Service [DBaaS].
Тема эта относительно новая, и мне хотелось бы рассмотреть ее более подробно.

Введение
DBaaS - это копцепция БД которая представляет собой ресурс в облаке. Пользователь не знает, где физически находится эта БД. Как и любой другой ресурс в облаке, эта база данных автоматически создается по запросу пользователя.
Затем заказчик работает с этой БД обычным образом: работает с ней через приложение или использует для задач разработки или тестирования. Также пользователь, если в этом возникла необходимость, может удалить ресурс - БД при этом автоматически удаляется.

Очень часто в организациях постоянно требуется создавать БД типовых конфигураций используемых в компании. Иногда эти БД нужны на определенное время, например для задач тестирования. Эта рутинная работа ложится на плечи DBA, которые и так, особенно в крупных компаниях, сильно перегружены. Идея DBaaS состоит в автоматизации получения готовой типовой БД, чтобы, как и для любого другого ресурса в облаке, БД создавалась по запросу пользователя и автоматически производился учет и оплата ее использования.

Концептуально, в иерархии ресурсов облака, DBaaS лежит между уровнями "Инфраструктура как сервис" [IaaS] и "Платформа как сервис" [PaaS]. В качестве инфраструктуры база данных может использовать непосредственно железо сервера, то есть может быть установлена непосредственно на операционной системе аппаратного сервера, либо может работать в виртуальной машине.

DBaaS обеспечивает следующие преимущества:
  • очень легкий процесс создания и получения БД по запросу;
  • очень быстрое (в пределах нескольких минут) получение готовой БД;
  • пользователь может задать необходимый интервал времени, в течении которого должна существовать БД;
  • гибкость для разработчиков и тестировщиков, которым нужно быстро, на определенный период времени, получить БД с необходимой конфигурацией;
  • как и для любого другого ресурса в облаке, для DBaaS выполняется учет использования ресурсов (CPU, дисков и т.д) и тарификация (metering&chargeback), то есть производится расчет оплаты за использование БД;
  • снижение затрат на администрирование и сопровождение БД; уменьшение времени на получение БД для последующего ее использования.

Рис.1 Сравнение получения БД как сервиса с традиционным развертыванием


Прежде чем дать возможность заказчику получить базу данных как сервис,  необходимо подготовить шаблон БД (database template), из которого затем будут создаваться БД для пользователей "облака".
Для подготовки шаблона БД используется хорошо вам знакомый Database Configuration Assistant [DBCA].

Итак, предположим, что нам нужно предоставлять заказчику базу данных с установленным Oracle Application Express.
Для начала, обычным образом, нам необходимо создать эталонную БД, которую затем мы сможем сохранить как шаблон.

Создание БД с помощью Database Configuration Assistant
В приведенном примере используется:
  • ОС: Oracle Linux 5 Update 7 x64
  • СУБД: Oracle Database EE 11.2.0.3 for Linux x64
  • APEX: Oracle Application Express 4.1.0.32
Запускаем DBCA набрав в терминальной сессии Linux под пользователем oracle команду dbca.

Рис.2 Запуск Database Configuration Assistant


На следующем диалоговом окне выберите переход в режим создания БД: "Create Database".

Рис.3 Переход в режим создания БД


Поскольку конечным заказчикам облака мы хотим предоставлять базу данных как сервис только для использования c APEX, постараемся сделать ее минимальной по объему. Для этого на следующем шаге выбираем вариант создания БД с нуля (из скриптов) - "Custom Database". При таком выборе БД будет создана НЕ клонированием из стандартных шаблонов БД, а путем выполнения скриптов, что конечно займет гораздо больше времени, но шаблон, и значит созданные из него БД, будут минимального объема.

Рис.4 Выбор варианта создания БД из скриптов


На следующем шаге укажите имя БД, например: apexdb .

Рис.5 Имя вновь созданной БД


Для контроля за работой, учета и тарификации баз данных, которые будут впоследствии созданы из нашей эталонной БД, включите на следующем шаге регистрацию в репозитарии Enterprise Manager Cloud Control, указав при этом https-адрес управляющего сервиса.

Рис.6 Включение регистрации БД в OEM 12c Cloud Control



Укажите пароль на системных пользователей на следующем шаге создания БД.

Рис.7 Ввод паролей для системных пользователей


Далее нужно указать каталог, где будут находиться файлы вновь создаваемой БД. Выберите тип системы хранения: файловую систему или Automatic Storage Management [ASM], и каталог на ней.
Выбор способа хранения БД влияет только на создаваемую БД, поскольку при дальнейшем создании шаблона в него будут включены все файлы.
Далее при создании БД в облаке из этого шаблона вы можете выбрать тот способ хранения который у вас используется.


Рис.8 Выбор типа системы хранения и каталога для файлов БД


Выберите тот вариант системы хранения который используется на вашем сервере БД. В данном примере для хранения файлов используется ASM - файлы будут располагаться на дисковой группе +DATA.

Рис.9 БД будет располагаться на ASM - на дисковой группе +DATA


Затем укажите каталог, где будет располагаться область Fast Recovery Area [FRA] и максимальный размер этой области.
Пожалуйста, выключите режим архивирования журналов транзакций (archivelog). Он будет включен перед созданием шаблона из нашей БД. Отключение режима archivelog позволит значительно уменьшить время на создание БД и на установку APEX.

Рис.10 Определение месторасположения и размера области FRA


В данном примере для хранения области FRA используется ASM - файлы будут располагаться на дисковой группе +FRA. Максимальный размер области FRA - 10Гб.

Аналогично выбора типа хранения для файлов БД. Выбор способа хранения области FRA влияет только на создаваемую БД. Далее при создании БД в облаке из этого шаблона вы можете выбрать тот способ хранения области FRA который Вам нужен.


Рис.11 Область FRA будет располагаться на ASM - на дисковой группе +FRA


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

Рис.12 Все опции БД отключены


Компоненты JavaVM и XDB оставлены, так в качестве HTTP-сервера будет использован встроенный в БД PL/SQL Embedded Gateway - он работает именно на основе указанных компонентов.

Рис.13 Включаем компоненты JavaVM и XDB


На следующем шаге создания БД в DBCA указываются параметры памяти, кодировки БД, число процессов и режим работы БД (разделяемого или выделенного сервера).
Укажите значения этих параметров исходя из ваших условий эксплуатации приложений в среде APEX.
В данном примере были установлены следующие значения:

  - суммарный объем памяти для БД (SGA и PGA) установлен в 2Гб и включено автоматическое управление памятью (Automatiс Memory Management);

Рис.14 Установка параметров памяти для экземпляра БД


  - размер стандартного блока БД - 8Кб, число процессов увеличено до 500;

Рис.15 Установка размера блока и числа процессов


  - основная кодировка БД установлена в рекомендуемое Oracle Corp. значение - Unicode (AL32UTF8);

Рис.16 Кодировка БД установлена в Unicode



  - включен режим выделенного сервера (Dedicated Server).
Рис.17 Установка режима выделенного сервера


Наконец, для создания БД пройдите два информационных шага и нажмите кнопку "Finish".

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

Рис.18 Выполнение процесса создания БД


Установка Application Express
Пока продолжается создание БД, пожалуйста скачайте дистрибутив Oracle Application Express по данной ссылке: http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html
На момент написания статьи последняя версия APEX имеет номер 4.1.0.00.32

Затем распакуйте скачанный zip-архив в каталог ORACLE_HOME вашего сервера.
Внимание: не забудьте предварительно удалить каталог apex, который автоматически был создан в ходе установки ПО. Этот каталог содержит старую версию APEX 4.0.2 (в дистрибутиве Oracle Database 11.2 идет старая версия!).

В данном примере была выполнена следующая последовательность команд:
[oracle@oem ~]$ cd $ORACLE_HOME
[oracle@oem db_1]$ rm -rf apex
[oracle@oem db_1]$ unzip apex_4.1.zip
[oracle@oem db_1]$ rm -f apex_4.1.zip

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

Создайте табличные пространства для APEX, например c именами APEX_DATA, APEX_FILES, APEX_TEMP (пространство для временных сегментов).
В описанном примере был выполнен следующий скрипт:

/************************************************************************
 * Tablespaces creation for "APEX for DBaaS"                            *
 *                                                                      *
 * @file    tablespaces.sql                                             *
 * @author  Igor Melnikov                                               *
 * @version 1.0.0                                                       *
 * @history                                                             *
 *   Igor Melnikov 03.11.2011 - created                                 *
 ************************************************************************
 * Oracle CIS                                                           *
 * email: Igor.Melnikov@oracle.com                                      *
 ***********************************************************************/

spool tablespace.log

define DATA_DIR=+data/apexdb

prompt Creating tablespace  APEX_DATA ...
create tablespace APEX_DATA
  datafile '&DATA_DIR/apex_data.dbf' size 100M 
  autoextend on 
  extent management local
  segment space management auto;

prompt Creating tablespace  APEX_FILES ...
create tablespace APEX_FILES
  datafile '&DATA_DIR/apex_files.dbf' size 100M 
  autoextend on 
  extent management local
  segment space management auto;

prompt Creating tablespace  APEX_TEMP ...
create temporary tablespace APEX_TEMP
  tempfile '&DATA_DIR/apex_temp01.dbf' size 100M 
  autoextend on 
  extent management local;

spool off


Убедившись, что наша база данных APEXDB уже создана, перейдите в каталог $ORACLE_HOME/apex и подключившись к ней с помощью SQL*Plus под пользователем SYS запустите установку APEX, запустив скрипт apexins.sql:
[oracle@oem ~]$ cd $ORACLE_HOME/apex
[oracle@oem apex]$ set ORACLE_SID=apexdb
[oracle@oem apex]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Sun Nov 6 21:44:13 2011

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL>@apexins APEX_DATA APEX_FILES APEX_TEMP /i/


В течении 15-30 минут будет происходить установка APEX.

Убедившись, что установка прошла без ошибок, загрузите в XDK статические файлы APEX, запустив скрипт apxldimg.sql передав ему в качестве параметра значение ORACLE_HOME, куда был установлен каталог apex:

SQL>@apxldimg.sql /u01/app/oracle/product/11.2.0/db_1


Установите пароль пользователя ADMIN в рабочем пространстве INTERNAL и номер порта HTTP-листенера, выполнив скрипт apxconf.sql:

SQL>@apxconf.sql /u01/app/oracle/product/11.2.0/db_1


И наконец, разблокируйте учетную запись anonymous:
SQL> alter user anonymous account unlock;

User altered.


Проверьте работоспобность APEX набрав в адресной строке браузера http://<адрес или имя вашего сервера>:8080/apex. В примере в качестве TCP/IP-порта HTTP-листенера в данном примере использовался порт 8080.

Рис.19 Проверка работоспособности APEX


Не забудьте включить режим архивирования журналов (archivelog) для БД:
[oracle@oem]$ export ORACLE_SID=apexdb
[oracle@oem]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Sun Nov 6 22:54:08 2011

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1252663296 bytes
Fixed Size                  2227944 bytes
Variable Size             738197784 bytes
Database Buffers          503316480 bytes
Redo Buffers                8921088 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> 


Создание шаблона БД
На заключительном шаге нам нужно создать шаблон БД (database template) с помощью Database Configuration Assistant. Этот шаблон затем будет использоваться пользователями при создании БД в облаке.
Запустите DBCA и выберите режим "Manage Template"

Рис.20 Переход в режим управления шаблонами DBCA


На следующем шаге выберите "Create template/From Existing database (structure as well as data". То есть мы будем создавать шаблон на основе существующей БД вместе с всеми данными.

Рис.21 Создание шаблона на основе существующей БД


На следующем шаге выберите имя исходной БД для шаблона, - эту базу данных мы создали на предыдущих шагах (в нашем случае - apexdb).

Рис.22 Выбор исходной БД для шаблона


На следующем шаге введите имя и описание создаваемого шаблона.

Рис.23 Определение имени и описания шаблона БД


Далее укажите режим управления именами каталогов и файлов БД в соответствии с рекомендациями Oracle Flexible Architecture [OFA].

Рис.24 Установка режима OFA для путей файлов БД



После нажатия кнопки Finish, в течении нескольких минут, будет происходить создание шаблона БД.

Рис.25 Создание шаблона БД


После окончания убедитесь что файлы шаблона БД созданы и находятся в каталоге
$ORACLE_HOME/assistants/dbca/template

Рис.26 Файлы шаблона БД



В следующей главе мы расмотрим процедуру создания сервисного шаблона (service template) и создание БД в облаке по запросу пользователя.

5 комментариев:

  1. А я все жду новостей от PL/SQL хакера :)

    ОтветитьУдалить
  2. Спасибо за полезный пост! Месяц назад мне бы он сэкономил много времени. Вот только не понял зачем оставлять кодировку Unicode , а не 1251, чтобы русские буквы занимали меньше места?

    ОтветитьУдалить
  3. >> А я все жду новостей от PL/SQL хакера

    Скоро будет !

    ОтветитьУдалить
  4. >> зачем оставлять кодировку Unicode
    Чтобы в БД можно было одновременно использовать более чем 2 языка.

    ОтветитьУдалить
  5. Вообще то и на 1251 можно использовать 2 языка - русский, английский
    Вам что арабский и санскрит нужен?

    ОтветитьУдалить