Установка и настройка Oracle Database 11g на Oracle Linux 6.X

oralinux_plus

В данной статье мы рассмотрим вопрос установки и настройки Oracle Database Enterprise Edition 11gR2 на Oracle Linux 6.X (основана на RedHat, лицензия GNU GPL — бесплатна для коммерческого использования). Если поставить этот процесс «на поток», то по скорости установки и настройки он не будет уступать Windows.. и даже быстрее получится :)  Описание установки показано на примере Oracle Linux 6.Х, но точно также это можно установить на CentOS 6.Х и RHEL 6.Х. Небольшое отличие вы найдете по ходу текста.

*запись дополнена 21.03.2016

Из нюансов: придется использовать X-сервер (графику), т.к. установка и настройка Oracle Database через responseFile не очень удобна.

Пометки: символ # перед командой, значит что ее нужно запускать от имени root. Если символа нет, то от имени пользователя oracle. Это важно.

 

1) Устанавливаем Oracle Linux 6.Х

Тут все довольно просто, я думаю достаточно обойтись общими советами…

а) Разметка диска. Если это у нас виртуальный сервер, то можно все устанавливать в один раздел («Use All Space»). Если же полноценный боевой сервер, то рекомендую делать следующее («Create Custom Layout»): разбить диск на 2 логических (200 гб для системы, остальное для oracle и его баз). Сам Oracle и базы будут установлены в папку /home/oracle. Соответственно, папка home — это будет смонтированный второй логический раздел диска (это как аналог диска D в Windows). Все это можно сделать в графике. У меня, на тестовой машине, это выглядит так:

installЕсли данные в базах на вашем сервере будут строго конфиденциальны, то здесь же можно установить «шифрование на лету» для папки home. Оно будет потреблять минимум ресурсов, т.к. реализовано на уровне ядра Linux.

б) Ставим галочки возле «Desktop», а внизу «Oracle Linux Server», «UEK3 kernel repo». Далее и.. устанавливаем.

в) Настраиваем сеть через конфиги. Опишем этот процесс (думаю тут все понятно, комментарии не нужны):

# nano /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=DFOL
GATEWAY=1.1.1.9

 

Устанавливаем свои параметры. UUID и HWADDR — лучше оставить родные:

# nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO=static
IPADDR=1.1.0.235
NETMASK=255.255.248.0
GATEWAY=1.1.1.9
DNS1=1.1.1.10
DNS2=1.1.1.90

 

Прописываем свой IP в hosts:

# nano /etc/hosts
1.1.0.235 DFOL

 

Включение и выключение сетевого интерфейса:

# ifdown eth0
# ifup eth0

 

Для проверки:

# ifconfig -a

 

Удаляем NetworkManager. Он будет только мешать на сервере:

yum remove NetworkManager

 

2) Обновляем систему.

Обновление системы выполняется одной командой:

# yum update

 

Далее, подключаем Oracle public репозиторий:

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol6.repo
# yum repolist
# yum update

 

В CentOS и RHEL дополнительно надо подключить gpg-ключ:

# wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

 

3) Открываем порты в firewall.

Порты открываются для работы Oracle DB и VNC.

# service iptables stop
# nano /etc/sysconfig/iptables

 

Туда вставить (порт 1521 — для Oracle, остальные для VNC):

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5500 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5800 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT
# service iptables start
# service iptables restart

 

4) Подготовка к установке Oracle.

А тут самый красивый «финт ушами» :) В Oracle Linux предусмотрена одна единственная команда для подготовки системы к установке Oracle Database. Она разрешает все зависимости в системе, устанавливает все необходимые пакеты, модифицирует параметры ядра ОС, создает пользователя oracle и дает ему все необходимые права, также создает группы dba и oinstal. Иными словами — выполняется куча подготовительной работы. Итак…

# yum install oracle-rdbms-server-11gR2-preinstall

 

Зададим пароль пользователю oracle:

# passwd oracle

 

Дадим права sudo для пользователя oracle, чтобы в дальнейшем работать только с ним (запуск команд для управления БД без ввода пароля):

# yum install sudo
# usermod -aG 'wheel' oracle
# chmod +w /etc/sudoers
# nano /etc/sudoers

 

Проведем ряд манипуляций с этим конфигом (ориентируйтесь на закомментированные строки):

# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2 (добавить после этих двух):
Defaults:foo timestamp_timeout=60
...
## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe (после этих двух, добавить):
Cmnd_Alias ORACLE_CMDS = /etc/init.d/oracle
...
## Allows people in group wheel to run all commands (после этой раскомментить и добавить):
%wheel ALL=(ALL) ALL
oracle ALL=(ALL) NOPASSWD: ORACLE_CMDS

 

После возвращаем все на место:

chmod -w /etc/sudoers

Все! Теперь пользователь oracle может работать с админскими правами через sudo.

 

5) Настройка Screensaver и удаленного доступа по VNC.

Логинимся в графическом режиме под пользователем oracle.

а) Первым делом отключаем автоматическую блокировку экрана. Заходим System >>> Preferences >>> Screensaver. Там все будет очевидно.

screensaverб) Далее, включаем удаленный доступ по VNC. Заходим System >>> Preferences >>> Remote Desktop. Устанавливаем все галочки, как указано на скриншоте (пароль доступа по VNC должен совпадать с паролем пользователя oracle):

VNCв) Чтобы по VNC можно было подключится после перезагрузки системы, необходимо настроить авто-логин для пользователя oracle. Делается это так, в конфиг:

# nano /etc/gdm/custom.conf

 

Необходимо добавить:

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=oracle

 

А потом перезагружаемся:

# reboot

 

г) Чтобы gnome-keyring не блокировался после перезагрузки системы и мы могли спокойно подключится без подтверждения со стороны сервера, необходимо сделать следующее… Идем в Applications >>>  Accessories >>> Passwords and Encryption Keys. Правый клик на Passwords, потом Unlock (вводим пароль). Потом правой кнопкой — Change password (см. второй скриншот). Вводим старый пароль, остальное оставляем пустым. Потом на вопрос отвечаем «Use Unsafe Storage».

seahorse-keyringschange-keyring-passwordВсе! Теперь мы можем когда угодно подключается удаленно к нашему рабочему столу (по паролю) причем несколькими пользователями одновременно, не выбивая при этом друг друга.

д) Чуть настроим файловый менеджер nautilus, чтобы пользоваться им стало приятнее:

nautilus1nautilus2После данных манипуляций, выглядеть он будет так:

nautilus3

6) Устанавливаем Oracle DB.

Устанавливать будем в графическом режиме. Конечно, есть возможность установки с консоли используя -responseFile, но это бессмысленно… т.к. администрировать базы всеравно придется из графики. Сначала необходимо закачать дистрибутив. Используйте для этого что вам удобно, к примеру filezilla c sftp с логином и паролем oracle в папку /home/oracle/odb.

Даем права на папку установщика:

# chown -R oracle /home/oracle/odb
# chmod 755 -R /home/oracle/odb

 

Потом, зайдя на сервер в графическом режиме под учеткой oracle, запускаем установку командами:

cd /home/oracle/odb/database/
./runInstaller -ignoreInternalDriverError

Для теста, мы рассмотрим вариант установки всего «по дефолту» с созданием тестовой базы «orcl», обратите внимание на настройки:

inst_parametersПеред завершением установки, от имени root в консоли нужно выполнить два скрипта. Не забудьте!

root_scripts

Даем права на папку установленного Oracle:

# chown -R oracle /home/oracle/app
# chmod 755 -R /home/oracle/app

 

7) Прописываем переменные

Чтобы заработала команда sqlplus в консоли, необходимо прописать глобальные переменные (под пользователем oracle):

nano .bashrc
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_HOME

PATH=$PATH:$ORACLE_HOME/bin
export PATH

#ORACLE_SID=orc1
#export ORACLE_SID

#ORACLE_UNQNAME=orcl
#export ORACLE_UNQNAME

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export LD_LIBRARY_PATH

ORACLE_HOME_LISTNER=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_HOME_LISTNER

NLS_LANG=AMERICAN_RUSSIA.AL32UTF8
export NLS_LANG

Текстовый вид: oracle_bashrc

 

Перезагружаемся:

# reboot

 

8) Работа с СУБД, пример создания базы и работы с ней

Итак, попробуем создать базу и поработать с ней. Для этого, подключаемся к нашему серверу по VNC, потом заходим сюда: /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin. Тут вы увидите все привычные утилиты для работы с Oracle Database. Например dbca (database configuration assistant) или netca (network configuration assistant). Далее, все как обычно.

Если нам нужен будет на инстанции веб-интерфейс Enterprise Manager, то необходимо поставить галочку:

enterprise_manager1Запомните адрес веб-интерфейса, порт и SID базы:

enterprise_manager2

После установки инстанции, чтобы ее активировать, необходимо поправить конфиг:

nano /etc/oratab

 

Там исправить:

orcl:/oracle/app/oracle/product/11.2.0/dbhome_1:N на Y

 

Команды для запуска сервисов (от пользователя oracle):

а) Управление listener:

lsnrctl start
lsnrctl stop
lsnrctl status

 

б) Запуск и остановка database:

dbstart
dbshut

 

Успешность запуска баз можно проверить по логам тут: /home/oracle/app/oracle/product/11.2.0/dbhome_1/startup.log

в) Запуск dbconsole (веб-интерфейс, Enterprise Manager)…

Запускается по очереди, для каждой базы по отдельности. Сначала указываем ORACLE_SID — потом запускаем dbconsole. Для каждой базы будет свой веб-интерфейс на своем порту. Откройте нужный порт в п.3 для нового веб-интерфейса. Но учтите! Enterprise Manager — может быть и удобный инструмент, но он — монстр! Очень сильно нагружает сервер и увеличивает общий объем базы.

export ORACLE_SID=orcl
emctl start dbconsole

 

Проверка статуса и остановка службы:

emctl stop dbconsole
emctl status dbconsole

 

А так он выглядит в браузере:

enmanager

Запуск и остановка баз

Команды dbstart/dbshut запускают/останавливают все базы, которые обозначены в файле /etc/oratab символом Y в конце. Если будет символ N — то они их игнорируют. Если dbstart использовать дважды — уже запущенные базы будут перезапущены (соответственно — остановлены и запущены). Т.е. если мы хотим запустить/остановить только несколько баз или какую-то одну, то сначала ее нужно обозначить в файле /etc/oratab. Также, у нас полноценно работает sqlplus и мы можем остановить базу оттуда.

Т.е. например вводим команду:

sqlplus sys/пароль@имябазы as sysdba

И потом:

shutdown normal

Все, база корректно остановлена.

 

9) Автозапуск при старте системы (скрипт демона init)

Итак… сделаем автозапуск Oracle при старте, и запакуем его в сервис. Сначала нужно создать скрипты запуска и остановки, скрипты будут лежать в директории /home/oracle/scripts

 

Создаем скрипт запуска:

nano /home/oracle/scripts/ora_start.sh
#!/bin/bash
# script to start the Oracle database, listener and dbconsole
. ~/.bashrc
# start the listener and the database
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
# start the Enterprise Manager db console
# $ORACLE_HOME/bin/emctl start dbconsole
exit 0

Текстовый вид: ora_start

 

Создаем скрипт остановки:

nano /home/oracle/scripts/ora_stop.sh
#!/bin/bash
# script to stop the Oracle database, listener and dbconsole
. ~/.bashrc
# stop the Enterprise Manager db console
# $ORACLE_HOME/bin/emctl stop dbconsole
# stop the listener and the database
$ORACLE_HOME/bin/dbshut $ORACLE_HOME
exit 0

Текстовый вид: ora_stop

 

Делаем эти скрипты исполняемыми:

cd scripts
chmod u+x ora_start.sh ora_stop.sh

 

И создаем скрипт автозапуска init:

su root
nano /etc/init.d/oracle
#!/bin/bash
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_OWNER=oracle
RETVAL=0
case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "/home/oracle/scripts/ora_start.sh"
        touch /var/lock/subsys/oracle
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "/home/oracle/scripts/ora_stop.sh"
        rm -f /var/lock/subsys/oracle
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
        RETVAL=1
esac
exit $RETVAL

Текстовый вид: oracle_initd

 

Права на скрипт:

chmod 750 /etc/init.d/oracle

 

Добавляем службу в систему:

chkconfig --add oracle

 

Все! Служба готова. Теперь работает автозапуск и стандартные команды запуски/остановки службы спод root:

# service oracle stop
# service oracle start

 

Или спод oracle:

sudo /etc/init.d/oracle start
sudo /etc/init.d/oracle stop

 

Выводы

Сравнивания с Windows, мы имеем полноценную альтернативную ОС для серверов БД. Только вместо RDP у нас VNC, вместо cmd у нас bash. Можно спокойно подключится по VNC и управлять сервером как будет угодно, включая запуск терминала под графикой… а можно подключится под putty по SSH и работать только в командной строке. Залить/скачать файлы? Да запросто, по защищенному протоколу sFTP через FileZilla, Total Commander или WinSCP — как душе угодно, никакие права и расшаривания папок не нужны.

Очевидным недостатком является, пожалуй, не совсем красивый процесс остановки/запуска баз (не так как в Windows, через остановку и запуск служб — по отдельности для каждой БД). Поэтому данная конструкция больше подходит для работы в виртуальной среде, по 1-2 базы на одной ВМ… нежели на одном большом сервере БД. Можно, конечно, и один большой сервер соорудить — но тогда все придется разруливать через sqlplus.

Удачи!)

Установка и настройка Oracle Database 11g на Oracle Linux 6.X: 3 комментария

  1. Статья очень полезная! Спасибо! Очень помогла!
    Только, почему-то после удаления NetworkManager у меня сеть отвалилась, но это фигня …
    Восстановил.

  2. Кто додумался на черном фоне серые буквы?
    Весь мозг сломал вчитываясь и не все прочел.
    Многие и вчитываться не станут, сразу уйдут.
    Смените цвета

Добавить комментарий