Как стать автором
Обновить

Установка 2-х отдельных серверов баз данных Oracle на одной Linux машине

Время на прочтение3 мин
Количество просмотров3.3K
Данная статья вряд ли будет интересна ораклиным гуру, разве что как объект критики. Мой опыт администрирования серверов Oracle в системе Linux составляет чуть больше года. Процесс установки сервера баз данных Oracle, как 10g так и 11g, описан достаточно хорошо во многих источниках, например здесь, или здесь, или здесь, либо на русском вот здесь, поэтому останавливаться на данном вопросе не будем.

Предположим что у нас стоит задача установки 2 независимых серверов баз данных Oracle, например Oracle 10gR2 и Oracle11gR1 на одном Linux сервере(разные варианты виртуализации рассматривать не будем, предположим что у нас 1 самый обычный сервер с установленной системой Linux на борту). Именно с такой задачей в свое время столкнулся я, и решение было найдено не сразу. В качестве системы Linux будем рассматривать CentOS 5.4(подойдет и любой другой вариант RedHat, Fedora, etc). Что же нам для этого надо? Для начала установим наши Oracle, при чем каждый в своем отдельном каталоге. У меня для всего ораклиного хозяйства отведен раздел /opt. В нем я создал каталог oracle и туда буду устанавливать наши сервера Oracle. Чтобы избежать лишних проблем и конфликтов, создадим 2-х системных пользователей oracle10 и oracle11, каждый из которых будет использоваться для работы серверов 10g и 11g соответсвенно. Группы же(dba, oinstall) оставим общими, то есть добавим обеих наших пользователей в обе группы.
Итак, следуя вышеуказанным инструкциям по установке, устанавливаем Oracle 10gR2 в каталог /opt/oracle/product/10.2.0, а Oracle 11gR1 в /opt/oracle/product/11.2.0, используя при этом соответствующие системные аккаунты(oracle10 для установки Oracle 10gR2, oracle11 для установки Oracle 11gR1). После того как установка закончена, отредактируем конфигурационные файлы .bash_profile, находящиеся в домашних каталогах пользователей oracle10 и oracle11(по умолчанию для пользователей в моей системе используется оболочка bash). Отредактируем их так, чтобы они выглядели следующим образом, для oracle10:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORACLE_SID=orcl
ORACLE_HOME_LISTNER=$ORACLE_HOME

LD_LIBRARY_PATH=$ORACLE_HOME/lib

PATH=$PATH:$HOME/bin:/$ORACLE_HOME/bin

export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH


и для oracle11 соответственно:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=orcl2
ORACLE_HOME_LISTNER=$ORACLE_HOME

LD_LIBRARY_PATH=$ORACLE_HOME/lib

PATH=$PATH:$HOME/bin:/$ORACLE_HOME/bin

export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH


И наконец, создадим соответствующие сценарии запуска для обеих серверов. Для этого в каталоге /etc/rc.d/init.d создадим файлы oradb10 и oradb11.
Содержимое oradb10:

case "$1" in
start) echo «Starting Oracle Database(s)»
su – oracle10 -c «lsnrctl start; dbstart $ORACLE_HOME; emctl start dbconsole»
touch /var/lock/subsys/oracle10
;;
stop) echo «Shutting down Oracle Database(s)»
rm -f /var/lock/subsys/oracle10
su – oracle10 -c «emctl stop dbconsole; dbshut $ORACLE_HOME; lsnrctl stop»
;;
*)
echo $«Usage: $0 {start|stop}»
esac


Содержимое oradb11:

case "$1" in
start) echo «Starting Oracle Database(s)»
su — oracle11 -c «lsnrctl start; dbstart $ORACLE_HOME; emctl start dbconsole»
touch /var/lock/subsys/oracle11
;;
stop) echo «Shutting down Oracle Database(s)»
rm -f /var/lock/subsys/oracle11
su — oracle11 -c «emctl stop dbconsole; dbshut $ORACLE_HOME; lsnrctl stop»
;;
*)
echo $«Usage: $0 {start|stop}»
esac


После чего добавим соответствующие сервисы командами:
chkconfig –add oradb10
chkconfig –add oradb11

Ну и напоследок отредактируем конфигурационный файл /etc/oratab, например следующим образом:

orcl:/opt/oracle/product/10.2.0/db_1:Y
orcl2:/opt/oracle/product/11.2.0/db_1:Y

Как несложно догадаться, в результате при старте системы теперь в каждом из наших серверов будет автоматически стартовать своя база, orcl на сервер 10g и orcl2 на сервере 11g.
Теперь если нам понадобится выполнить какие-либо действия с одним из серверов, достаточно зайти под соответствующим пользователем, например oracle10(либо выполнить команду su – oracle10), если нам нужен сервер Oracle 10g, и дальше запускать команды необходимые нам для работы с соответствующим сервером оракла, например sqlplus или другие.

Вот в принципе и все, как видим ничего сложного. Если что-то упустил или ошибся где-то думаю гуру поправят :)

UPD: Небольшая поправка: во избежание конфликта Enterprise Manager консолей необходимо поправить порт для одного из серверов со стандартного значения 1158 на какой-либо другой, например вот так:
emca -reconfig ports -DBCONTROL_HTTP_PORT <port_number>

З.Ы. Мой первый пост на хабре. Огромное спасибо хабрачеловеку №1 за инвайт!
Теги:
Хабы:
Всего голосов 7: ↑5 и ↓2+3
Комментарии5

Публикации

Истории

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург