[Из песочницы] Установка Oracle ApEx

Здравствуйте, друзья и коллеги. Однажды в компании возникла необходимость в создании веб-интерфейса для небольшой базы данных. Уже тогда было понимание того, что в будущем понадобится интеграция с LDAP, возможность гибко управлять правами доступа пользователей на просмотр определенных страниц, удобный конструктор для создания страниц, инструменты бизнес-аналитики. Тогда-то я и познакомился с Oracle Application Express (ApEx). Это мощнейшее средство входит в состав таких продуктов, как Oracle Database 11g, 12c, которые, в зависимости от используемой редакции, могут стоить немало. Как это часто бывает, желания превышали возможности…


Для таких случаев у Oracle есть бесплатная версия СУБД Oracle Database Express Edition (коротко XE). На нее накладываются следующие ограничения:


  • на один сервер можно установить только 1 инстанс;
  • может быть установлена на многопроцессорный сервер, но использоваться будет только 1 CPU;
  • для СУБД доступно максимум 1Gb RAM;
  • размер пользовательских данных ограничен 11Gb (в некоторых документах всё ещё встречается ограничение в 4Gb, но это уже устаревшая информация);
  • HTTPS не поддерживается встроенным веб-сервером, для этого приходится использовать Apache/Nginx.

Нас эти ограничения вполне устраивали. Для сервера мы взяли VPS в Digital Ocean с 2Gb RAM, установили Centos 7.2. В следующей главе будет описана установка Oracle XE, а затем — обновление встроенного Application Express v. 4 до последней актуальной версии (на момент написания статьи — 5.0.4).


Установка Oracle 11g XE


Установим необходимые пакеты, добавим swap в виде файла и внесём изменения в /etc/fstab:


yum update -y && yum install screen vim bash-completion wget telnet mailx unzip epel-release -y && yum install bc libaio flex -y
dd if=/dev/zero of=/var/swapfile bs=1M count=2048 && chmod 0600 /var/swapfile && mkswap /var/swapfile
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab && swapon -a && swapon -s

Следующий шаг — опциональный. Можно сконвертировать Centos в Oracle Linux, затем скачать пакет, меняющий настроки ядра в соответствии с рекомендациями Oracle, подробности можно прочитать тут.


curl -O https://linux.oracle.com/switch/centos2ol.sh && sh centos2ol.sh && yum distro-sync -y && yum install oracle-rdbms-server-11gR2-preinstall.x86_64 -y

Для загрузки дистрибутива Oracle XE (доступны версии под Windows и Linux) понадобится регистрация на сайте вендора, она бесплатна и ни к чему не обязывает. Скачаем zip-архив, распакуем его и установим:


wget [[вставьте сюда ссылку для загрузки]]
mv oracle-xe-11* oracle-xe-11.x86_64.rpm.zip
mkdir oracle-xe && mv oracle-xe-* oracle-xe/ && cd oracle-xe/
unzip oracle-xe-* && cd Disk1/
rpm -ivh oracle-xe-*

После установки RPM-пакета необходимо запустить oracle-xe с параметром configure — в этом случае запустится мастер завершения настройки, в интерактивном режиме задающий вопросы. Также доступна установка с использованием файла ответов, в который мы внесем порты по умолчанию и пароль учетной записи SYS:


echo "ORACLE_HTTP_PORT=8080" > /root/oracle-xe/Disk1/response/xe.rsp
echo "ORACLE_LISTENER_PORT=1521" >> /root/oracle-xe/Disk1/response/xe.rsp
echo "ORACLE_PASSWORD=[[вставьте сюда пароль]]" >> /root/oracle-xe/Disk1/response/xe.rsp
echo "ORACLE_CONFIRM_PASSWORD=[[повторите пароль]]" >> /root/oracle-xe/Disk1/response/xe.rsp
echo "ORACLE_DBENABLE=y" >> /root/oracle-xe/Disk1/response/xe.rsp
/etc/init.d/oracle-xe configure responseFile=/root/oracle-xe/Disk1/response/xe.rsp

После установки с использованием файла ответов, не забудьте сохранить пароль в надежном месте и удалить его из файла xe.rsp.


Установка Application Express


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


cd ~ 
wget -O apex_5.zip [[вставьте сюда ссылку для загрузки]]
mkdir apex5 && mv apex_5.zip apex5/ && cd apex5/ && unzip apex_5.zip

В файле oracle_env.sh содержатся переменные окружения, необходимые для работы клиента SQL*Plus, добавим инициализацию этого файла в параметры bash и применим к текущему окружению:


echo ". /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh" >> /etc/bashrc
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

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


cd apex/ && sqlplus sys as sysdba

Из консоли SQL*Plus необходимо запустить следующие скрипты:


@apexins SYSAUX SYSAUX TEMP /i/
@apxldimg  /root/apex5
@apxchpwd     [[enter]]
Enter the administrator's username [ADMIN]  [[enter]]
User "ADMIN" exists.
Enter ADMIN's email [ADMIN] [[enter]]
Enter ADMIN's password []   [[сюда нужно вставить другой длинный пароль]]
Changed password of instance administrator ADMIN.

Последний скрипт @apxchpwd меняет пароль учетной записи admin для Application Express. Следующий шаг в какой-то мере небезопасен, используйте его только когда это действительно необходимо: этой командой разрешаются удаленные подключения к Listener (с использованием SQL-клиентов или различного другого софта), использующего по умолчанию порт 1521:


EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

Рекомендую ограничить подключения к этому порту соответствующим правилом iptables.
При подключении к Listener через интернет, к примеру, с использованием SQL Developer, логины/пароли/запросы передаются в открытом виде. Чтобы этого избежать, необходимо использование SSH-туннеля либо VPN.


Из консоли SQL*Plus изменим другие важные параметры: максимальное число сессий, процессов, т.к. эти параметры не динамические, понадобится рестарт базы. Также перейдем от режима Onlinelog к режиму Archivelog и увеличим лимит дискового пространства, доступного для бэкапов.


alter system set sessions=250 scope=spfile;
alter system set processes=200 scope=spfile;
shutdown normal
startup mount
alter database archivelog;
alter database open;

Резервное копирование


Бэкапы мы кладём на отдельный том. Для этого воспользуемся услугой Volumes хостинга Digital Ocean и после подключения нового раздела к VPS, выполним следующие команды:


mkfs.ext4 -F /dev/disk/by-id/scsi-0DO_Volume_oracle-backups-volume
mkdir -p /opt/oracle-backups
echo "/dev/disk/by-id/scsi-0DO_Volume_oracle-backups-volume /opt/oracle-backups ext4 defaults,nofail,discard 0 0" | tee -a /etc/fstab
mount -a
chown oracle:dba /opt/oracle-backups

Эти команды создают файловую систему, папку для монтирования диска, прописывают параметры автомонтирования при загрузке в файл /etc/fstab и меняют владельцев папки для бэкапов. Запускаем консоль SQL*Plus и меняем параметры резервного копирования:


sqlplus sys as sysdba
alter system set DB_RECOVERY_FILE_DEST_SIZE = 20G;
alter system set DB_RECOVERY_FILE_DEST = '/opt/oracle-backups';

Для начала мы воспользуемся предустановленным скриптом, осуществляющим резервное копирование с окном восстановления в 2 дня. Первый запуск мы осуществим из консоли, но в дальнейшем будет необходимо добавить этот скрипт в cron пользователя oracle:


su - oracle
bash /u01/app/oracle/product/11.2.0/xe/config/scripts/backup.sh

После всех изменений нужно будет перезагрузить сервер.


На этом установка Oracle Application Express закончена. В следующей статье мы установим тестовое веб-приложение, а затем сделаем что-нибудь по-настоящему полезное.


Буду искренне рад Вашим комментариям, замечаниям, вопросам.

Комментарии (0)

© Habrahabr.ru