Два Оракула в одной упряжке

В данной публикации речь пойдёт об установке СУБД Oracle под управлением ОС Oracle.


Создание виртуальной машины

Замечание В качестве платформы для виртуальной машины здесь используется VMWare Server v.2.0. Объём жёсткого диска, имя узла и другие подобные параметры даны для примера
Название
OracleDatabase Операционная система: Linux Версия: Other Linux (64-bit)
Кол-во процессоров
1
Объём ОЗУ
2048 М
Диск
20 ГБ, выделить сразу
Сеть
Bridged
USB
нет
Floppy
нет
CD/DVD
загрузочный образ OracleLinux-R6-U4-Server-x86_64-dvd.iso

Установка Oracle Linux Server R6

  1. Загрузка с установочного диска
  2. Выбрать “Install or upgrade an existing system”
  3. Отказаться от проверки установочного диска
  4. Окно приветствия → [NEXT]
  5. Язык для инсталляции: English → [NEXT]
  6. Раскладка клавиатуры: US English → [NEXT]
  7. Тип хранилища: Basic Storage Device → [NEXT]
  8. Согласиться с удалением данных на жёстком диске
  9. Имя узла: oracle
  10. Настроить сетевой интерфейс (Configure Network) → [NEXT]
  11. Выбрать местоположение → [NEXT]
  12. Ввести пароль пользователя root → [NEXT]
  13. Разбить диск на разделы (Create Custom Layout) → [NEXT]
  14. Создать разделы жёсткого диска:
    1. два раздела:
      • Standard Partition; /; ext4; 16000MB; Fixed size
      • Standard Partition; swap; Fill to maximum allowable size
    2. [NEXT] → Format → Write changes to disk
  15. Загрузчик на /dev/sda → [NEXT]
  16. Выбор пакетов для установки: Basic Server; Customize later → [NEXT]
  17. Запустить установку. По завершении – перезагрузить машину

Далее, для удобства, организовать удалённую SSH-сессию из любимого терминала и настроить локальный репозитарий ПО:

[orca@blizzard ~]$ ssh root@10.0.0.131
root@10.0.0.131's password:
Last login: Wed Apr  2 18:15:53 2014
[root@oracle ~]# mount /dev/cdrom /mnt                          <1>
[root@oracle ~]# ls /etc/yum.repos.d/
public-yum-ol6.repo
[root@oracle ~]# vi /etc/yum.repos.d/public-yum-ol6.repo        <2>
...
enabled=0                                                       <3>
[root@oracle ~]# vi /etc/yum.repos.d/OL64.repo                  <4>
[OL64]
name=Oracle Linux 6.4 x86_64
baseurl=file:///mnt
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY
gpgcheck=1
enabled=1
[root@oracle ~]# yum clean all                                  <5>
[root@oracle ~]# yum repolist                                   <6>
  1. Подключить установочный диск
  2. Изучить перечень репозитариев ПО
  3. Отключить внешние источники ПО
  4. Создать локальный репозитарий ПО на основе установочного диска
  5. Очистить кэш
  6. Опросить доступные репозитарии

Насладиться процедурой автоматической подготовки сервера для СУБД Oracle:

[root@oracle ~]# yum install oracle-rdbms-server-11gR2-preinstall

Установить пароль для пользователя oracle, подредактировать файлы /etc/security/limits.d/90-nproc.conf и /etc/hosts:

[root@oracle ~]# passwd oracle
[root@oracle ~]# vi /etc/security/limits.d/90-nproc.conf
*          -       nproc     16384
root       soft    nproc     unlimited
[root@oracle ~]# vi /etc/hosts
...
10.0.0.131      oracle.localdomain      oracle

Перезагрузить машину.


Установка Oracle Database

Создать директории для установки Oracle Database:

[root@oracle ~]# mkdir -p /usr/oracle/orabin/product/11.2.0/db_1
[root@oracle ~]# mkdir /usr/oracle/install
[root@oracle ~]# chown -R oracle:oinstall /usr/oracle/
[root@oracle ~]# chmod -R 775 /usr/oracle/

Переписать все установочные файлы СУБД Oracle в /usr/oracle/install.

Завершить удалённую сессию пользователя root, открыть SSH-сессию от пользователя oracle с поддержкой графического режима:

[root@oracle ~]# exit
[orca@blizzard ~]$ ssh -Y oracle@10.0.0.131
oracle@10.0.0.131's password:

Настроить и активировать профиль пользователя oracle:

[oracle@oracle ~]$ vi ~/.bash_profile
...
# Oracle Settings
TMP=/tmp;       export TMP
TMPDIR=$TMP;    export TMPDIR

ORACLE_HOSTNAME=oracle.localdomain;     export ORACLE_HOSTNAME
ORACLE_UNQNAME=DB11G;                   export ORACLE_UNQNAME
ORACLE_BASE=/usr/oracle/orabin;         export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=TEST;                        export ORACLE_SID

PATH=/usr/sbin:$PATH;           export PATH
PATH=$ORACLE_HOME/bin:$PATH;    export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;         export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;    export CLASSPATH

[oracle@oracle ~]$ . ~/.bash_profile

Перейти в директорию с установочными файлами, запустить установку:

[oracle@oracle ~]$ cd /usr/oracle/install/database/
[oracle@oracle database]$ ./runInstaller

Далее, следовать советам программы установки, выбирая необходимые параметры. Одна из главных рекомендаций на этом этапе – выбирать установку только ПО, т.е. без создания базы данных (Install database software only). В остальном – руководствоваться собственными знаниями и предъявляемыми требованиями. Ошибок при установке быть не должно. Когда потребуется – запустить сценарии от пользователя root в отдельной удалённой сессии.

Запустить Oracle Net Configuration Assistant (netca) и настроить службу Oracle TNS Listener:

  • Listener configuration → [NEXT]
  • Add → [NEXT]
  • Listener name: LISTENER → [NEXT]
  • Selected Protocols: TCP → [NEXT]
  • Use the standard port number of 1521 → [NEXT]
  • No → [NEXT] → [NEXT] → [Finish]

Проверить состояние Oracle TNS Listener:

[oracle@oracle database]$ lsnrctl status

Настроить брандмауэр (от учётной записи пользователя root):

[root@oracle ~]# service iptables status                <1>
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
...
[root@oracle ~]# iptables -I INPUT 5 -p tcp --dport 1521 -j ACCEPT      <2>
[root@oracle ~]# service iptables status                <3>
...
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1521
6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
...
[root@oracle ~]# service iptables save                  <4>
[root@oracle ~]# service iptables restart               <5>
[root@oracle ~]# service iptables status                <6>
...
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1521
6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
...
  1. Отчёт о правилах брандмауэра (интересует цепочка “INPUT”)
  2. Вставка правила в цепочку “INPUT”. Номер “5” выбран, чтобы правило следовало перед правилом “REJECT”
  3. Отчёт об изменившихся правилах брандмауэра. Будет происходить приём пакетов “tcp dpt:1521” (Oracle TNS Listener)
  4. Сохранение правил брандмауэра. Без этого, изменения будут аннулированы после перезапуска брандмауэра
  5. Перезапуск брандмауэра
  6. Отчёт о правилах брандмауэра

Проверить подключение к порту 1521 с удалённой системы:

[orca@blizzard ~]$ telnet 10.0.0.131 1521
Trying 10.0.0.131...
Connected to 10.0.0.131.
Escape character is '^]'.

Создать тестовую базу данных:

[oracle@oracle ~]$ mkdir /usr/oracle/oradata
[oracle@oracle ~]$ dbca

Для автоматического запуска БД сначала отредактировать файл /etc/oratab, например:

[oracle@oracle ~]$ vi /etc/oratab
TEST:/usr/orabin/oracle/product/11.2.0/db_1:Y

Затем, как пользователь root:

[root@oracle ~]# vi /etc/init.d/dbora
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.

ORACLE_HOME=/usr/orabin/oracle/product/11.2.0/db_1
ORACLE=oracle

if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
    echo "Oracle startup: cannot start"
    exit
fi

case "$1" in
    'start')
        su $ORACLE -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" &
        touch /var/lock/subsys/dbora
        ;;
    'stop')
        su $ORACLE -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
        rm -f /var/lock/subsys/dbora
        ;;
esac
exit 0

[root@oracle ~]# chmod 750 /etc/init.d/dbora

Проверить сценарий, активировать его для автозапуска:

[root@oracle ~]# /etc/init.d/dbora stop
[root@oracle ~]# /etc/init.d/dbora start
[root@oracle ~]# chkconfig --add dbora

Проверить автозапуск СУБД Oracle перезагрузкой сервера.

Подключиться к базе, выполнить пробный запрос:

[oracle@oracle ~]$ sqlplus
Enter user-name: / as sysdba

SQL> select INSTANCE_NAME, VERSION, STATUS from V$INSTANCE;

INSTANCE_NAME    VERSION           STATUS
---------------- ----------------- ------------
TEST             11.2.0.4.0        OPEN

Заключение

Связка “СУБД и ОС от Oracle” произвела хорошее впечатление, главным образом, наличием процедуры автоматической подготовки сервера для СУБД Oracle. Это заметно экономит время и, судя по всему, отвечает принципу KISS, столь уважаемому в прогрессивном сообществе.