Тема эта относительно новая, и мне хотелось бы рассмотреть ее более подробно.
Введение
DBaaS - это копцепция БД которая представляет собой ресурс в облаке. Пользователь не знает, где физически находится эта БД. Как и любой другой ресурс в облаке, эта база данных автоматически создается по запросу пользователя.
Затем заказчик работает с этой БД обычным образом: работает с ней через приложение или использует для задач разработки или тестирования. Также пользователь, если в этом возникла необходимость, может удалить ресурс - БД при этом автоматически удаляется.
Очень часто в организациях постоянно требуется создавать БД типовых конфигураций используемых в компании. Иногда эти БД нужны на определенное время, например для задач тестирования. Эта рутинная работа ложится на плечи DBA, которые и так, особенно в крупных компаниях, сильно перегружены. Идея DBaaS состоит в автоматизации получения готовой типовой БД, чтобы, как и для любого другого ресурса в облаке, БД создавалась по запросу пользователя и автоматически производился учет и оплата ее использования.
Концептуально, в иерархии ресурсов облака, DBaaS лежит между уровнями "Инфраструктура как сервис" [IaaS] и "Платформа как сервис" [PaaS]. В качестве инфраструктуры база данных может использовать непосредственно железо сервера, то есть может быть установлена непосредственно на операционной системе аппаратного сервера, либо может работать в виртуальной машине.
DBaaS обеспечивает следующие преимущества:
- очень легкий процесс создания и получения БД по запросу;
- очень быстрое (в пределах нескольких минут) получение готовой БД;
- пользователь может задать необходимый интервал времени, в течении которого должна существовать БД;
- гибкость для разработчиков и тестировщиков, которым нужно быстро, на определенный период времени, получить БД с необходимой конфигурацией;
- как и для любого другого ресурса в облаке, для DBaaS выполняется учет использования ресурсов (CPU, дисков и т.д) и тарификация (metering&chargeback), то есть производится расчет оплаты за использование БД;
- снижение затрат на администрирование и сопровождение БД; уменьшение времени на получение БД для последующего ее использования.
Прежде чем дать возможность заказчику получить базу данных как сервис, необходимо подготовить шаблон БД (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
На следующем диалоговом окне выберите переход в режим создания БД: "Create Database".
Поскольку конечным заказчикам облака мы хотим предоставлять базу данных как сервис только для использования c APEX, постараемся сделать ее минимальной по объему. Для этого на следующем шаге выбираем вариант создания БД с нуля (из скриптов) - "Custom Database". При таком выборе БД будет создана НЕ клонированием из стандартных шаблонов БД, а путем выполнения скриптов, что конечно займет гораздо больше времени, но шаблон, и значит созданные из него БД, будут минимального объема.
На следующем шаге укажите имя БД, например: apexdb .
Для контроля за работой, учета и тарификации баз данных, которые будут впоследствии созданы из нашей эталонной БД, включите на следующем шаге регистрацию в репозитарии Enterprise Manager Cloud Control, указав при этом https-адрес управляющего сервиса.
Укажите пароль на системных пользователей на следующем шаге создания БД.
Далее нужно указать каталог, где будут находиться файлы вновь создаваемой БД. Выберите тип системы хранения: файловую систему или Automatic Storage Management [ASM], и каталог на ней.
Выбор способа хранения БД влияет только на создаваемую БД, поскольку при дальнейшем создании шаблона в него будут включены все файлы.
Далее при создании БД в облаке из этого шаблона вы можете выбрать тот способ хранения который у вас используется.
Выберите тот вариант системы хранения который используется на вашем сервере БД. В данном примере для хранения файлов используется ASM - файлы будут располагаться на дисковой группе +DATA.
Затем укажите каталог, где будет располагаться область Fast Recovery Area [FRA] и максимальный размер этой области.
Пожалуйста, выключите режим архивирования журналов транзакций (archivelog). Он будет включен перед созданием шаблона из нашей БД. Отключение режима archivelog позволит значительно уменьшить время на создание БД и на установку APEX.
В данном примере для хранения области FRA используется ASM - файлы будут располагаться на дисковой группе +FRA. Максимальный размер области FRA - 10Гб.
Аналогично выбора типа хранения для файлов БД. Выбор способа хранения области FRA влияет только на создаваемую БД. Далее при создании БД в облаке из этого шаблона вы можете выбрать тот способ хранения области FRA который Вам нужен.
На следующем шаге оставьте только те опции, которые нужны вашим приложениям работающим в APEX. В данном примере все дополнительные опции и компоненты БД убраны, поскольку предполагается что приложение использует только стандартные возможности БД.
Компоненты JavaVM и XDB оставлены, так в качестве HTTP-сервера будет использован встроенный в БД PL/SQL Embedded Gateway - он работает именно на основе указанных компонентов.
На следующем шаге создания БД в DBCA указываются параметры памяти, кодировки БД, число процессов и режим работы БД (разделяемого или выделенного сервера).
Укажите значения этих параметров исходя из ваших условий эксплуатации приложений в среде APEX.
В данном примере были установлены следующие значения:
- суммарный объем памяти для БД (SGA и PGA) установлен в 2Гб и включено автоматическое управление памятью (Automatiс Memory Management);
- размер стандартного блока БД - 8Кб, число процессов увеличено до 500;
- основная кодировка БД установлена в рекомендуемое Oracle Corp. значение - Unicode (AL32UTF8);
- включен режим выделенного сервера (Dedicated Server).
Наконец, для создания БД пройдите два информационных шага и нажмите кнопку "Finish".
Далее, в течении одного часа (конечно продолжительность создания БД зависит от мощности CPU сервера и скорости дисковой подсистемы), будет происходит создание БД.
Установка 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.
Не забудьте включить режим архивирования журналов (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"
На следующем шаге выберите "Create template/From Existing database (structure as well as data". То есть мы будем создавать шаблон на основе существующей БД вместе с всеми данными.
На следующем шаге выберите имя исходной БД для шаблона, - эту базу данных мы создали на предыдущих шагах (в нашем случае - apexdb).
На следующем шаге введите имя и описание создаваемого шаблона.
Далее укажите режим управления именами каталогов и файлов БД в соответствии с рекомендациями Oracle Flexible Architecture [OFA].
После нажатия кнопки Finish, в течении нескольких минут, будет происходить создание шаблона БД.
После окончания убедитесь что файлы шаблона БД созданы и находятся в каталоге
$ORACLE_HOME/assistants/dbca/template
В следующей главе мы расмотрим процедуру создания сервисного шаблона (service template) и создание БД в облаке по запросу пользователя.
А я все жду новостей от PL/SQL хакера :)
ОтветитьУдалитьСпасибо за полезный пост! Месяц назад мне бы он сэкономил много времени. Вот только не понял зачем оставлять кодировку Unicode , а не 1251, чтобы русские буквы занимали меньше места?
ОтветитьУдалить>> А я все жду новостей от PL/SQL хакера
ОтветитьУдалитьСкоро будет !
>> зачем оставлять кодировку Unicode
ОтветитьУдалитьЧтобы в БД можно было одновременно использовать более чем 2 языка.
Вообще то и на 1251 можно использовать 2 языка - русский, английский
ОтветитьУдалитьВам что арабский и санскрит нужен?