В данной статье мы рассмотрим вопрос установки и настройки 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). Все это можно сделать в графике. У меня, на тестовой машине, это выглядит так:
Если данные в базах на вашем сервере будут строго конфиденциальны, то здесь же можно установить «шифрование на лету» для папки 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. Там все будет очевидно.
б) Далее, включаем удаленный доступ по VNC. Заходим System >>> Preferences >>> Remote Desktop. Устанавливаем все галочки, как указано на скриншоте (пароль доступа по VNC должен совпадать с паролем пользователя oracle):
в) Чтобы по 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».
Все! Теперь мы можем когда угодно подключается удаленно к нашему рабочему столу (по паролю) причем несколькими пользователями одновременно, не выбивая при этом друг друга.
д) Чуть настроим файловый менеджер nautilus, чтобы пользоваться им стало приятнее:
После данных манипуляций, выглядеть он будет так:
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», обратите внимание на настройки:
Перед завершением установки, от имени root в консоли нужно выполнить два скрипта. Не забудьте!
Даем права на папку установленного 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, то необходимо поставить галочку:
Запомните адрес веб-интерфейса, порт и SID базы:
После установки инстанции, чтобы ее активировать, необходимо поправить конфиг:
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
А так он выглядит в браузере:
Запуск и остановка баз
Команды 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.
Удачи!)
Статья очень полезная! Спасибо! Очень помогла!
Только, почему-то после удаления NetworkManager у меня сеть отвалилась, но это фигня …
Восстановил.
Кто додумался на черном фоне серые буквы?
Весь мозг сломал вчитываясь и не все прочел.
Многие и вчитываться не станут, сразу уйдут.
Смените цвета
Так никто же и не заставляет читать, не читайте.