Попросил меня на днях товарищ и коллега (архитектор бд) поставить ему на VPS‘ку Oracle, причём не Express Edition (XE), который ставится достаточно просто из репозиториев, а Enterprise Edition, так как в экспрессе ему многое не хватает. Задача усложнялась тем, что у нас в расположении была убунта. Собрав волю в кулак я занялся танцами с бубном. Дело в том, что в интернете нет ни одного полноценного гайда, который бы полноценно решал все проблемы при установке, я потратил 3 дня, чтобы довести установку от начала до конца и чтобы при всём этом у меня всё работало. Итак, под катом максимально полный гайд по установке Oracle Database Enterprise Edition 11g Release 2 на Linux Ubuntu 12.04 Precise Pangolin ”под ключ”.

Моральная подготовка.

Учитывая, что у вас может “что-то пойти не так” то советую сначала потренироваться на какой-нибудь виртуалке (например в virtualbox). Ни в коем случае не экспериментируйте на боевых серверах!

Вам нужно понять — действительно ли вам так сильно нужна именно Enterprise Edition, подумайте хорошенько, так как вы можете потратить кучу нервов, если есть вероятность того, что вы не будете использовать функционал Enterprise Edition — ставьте Express Edition и не стоит придумывать себе геморрой.

Ну и последнее — я не несу никакой ответственности за использование вами данного гайда и за потери, которые вы можете понести при его использовании.

Подготовка системы к установке Oracle 11g R2

Готовим дистрибутив Oracle 11g 64 bits for Linux

Для того, чтобы поставить Enterprise Edition нам необходимо скачать с сайта оракла 2 архива. Данный гайд расчитан на версию 11.2.0.1.0 (листаем в самый низ страницы download Oracle 11gR2 Enterprise), выбираем по нашей архитектуре и качаем либо Linux x86 или Linux x86-64 (не забываем наверху страницы поставить радио-баттон и если вы не зарегистрированы и не авторизованы на сайте оракла не забудьте это сделать тоже). После того как вы скачали File 1 и File 2 закиньте архивы на сервер и пока можете разархивировать в папке текущего пользователя (далее в примере будет в /root)

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

В месте распаковки появится папка “database

Подготавливаем операционную систему

1. Настраиваем временную зону сервера

Это важный момент!
Первым делом, момент который во всех гайдах, что я находил, упущен — вам крайне важно установить правильно часовой пояс в вашей оси. Если вы этого не сделаете, то потом огребёте несколько проблем, с которыми будете очень долго бороться. На решение этих проблем я убил, наверное, больше всего времени, хотя проблема не явная и в тексте ошибок нигде не было отсылок к этому. Поэтому первым делом выполняем следующие команды:

sudo aptitude update
sudo aptitude upgarde -y
sudo dpkg-reconfigure tzdata

После запуска последней команды из списка выше вам нужно выбрать вашу временнУю зону. На этом пункт первый мы выполнили.

2. Подготовка путей и пользователей в системе

Для удобства работы я для себя решил, что будет использоваться папка /opt, и у пользователя Оракла домашней директорией будет /opt/oracle. Вы можете выбрать и другой вариант для себя, но тогда не забывайте изменять все остальные моменты настройки под свои пути.

Итак, на данном этапе нам нужно:

  • Создать две группы в ОС (да, именно две)
  • Создать пользователя в ОС для Оракла
  • Настроить права на папки для пользователей и групп

Поехали. Создаём группы.

Для Orcale Inventory group:

sudo groupadd oinstall

Теперь создадим группу для Oracle DBA group:

sudo groupadd dba

Завершаем данный шаг созданием пользователя, папок и перемещением распакованного оракла:

sudo mkdir -p /opt/oracle
sudo useradd -g oinstall -G dba  -d /opt/oracle -s /bin/bash oracle
sudo passwd oracle
# переместите распакованную базу в домашнюю папку пользователя оракл, 
# как писал ранее я распаковывал в /root
sudo mv /root/database /opt/oracle
sudo chown -R oracle:oinstall /opt/oracle

3. Тютинг настроек ядра и дополнительных параметров операционной системы

.Для настройки ядра нам нужно отредактировать файл /etc/sysctl.conf

sudo nano /etc/sysctl.conf

И добавьте в конец файла следующие настройки:

#
# Oracle 11g
#
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmni = 4096
# Замените kernel.shmmax половиной значения памяти в байтах
# если меньше 4Гб минус 1
# 1073741824 это 1 Гб
kernel.shmmax=1073741824

# Попробуйте sysctl -a | grep ip_local_port_range для получения реальных ваших значений
net.ipv4.ip_local_port_range = 9000  65500

net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

# Максимальное значение нужно для избежания IO ошибок
fs.aio-max-nr = 1048576
# 512 * PROCESSES / так и не понял что имеется ввиду под процессы в данном случае
fs.file-max = 6815744 

# Для разрешения dba выделить hugetlbfs страницы
# 1001 это ID группы вашего oinstall. Чтобы её узнать используйте команду grep oinstall /etc/group
vm.hugetlb_shm_group = 1001

Важное замечание по HUGE TLB.

Начиная с Ubuntu Karmic (раньше на Ubuntu Jaunty это не требовалось) изменились настройки ядра и это требуется начиная с Oracle 10g. Без этих параметров ваш инстанс оракла не сможет создать сегмент shared memory и не сможет нормально стартовать. Это не было протестировано на Ubuntu 12.04, но это есть в документации по Oracle 11g. Поэтому обязательно обратите внимание на указание правильного ID группы oinstall, обязательно укажите именно ваш ID, так как он может отличаться от моего.

Теперь наши настройки ядра нам нужно применить, для этого вы можете либо перезагрузить ваш сервер, либо просто выполнить следующую команду:

sudo sysctl -p

Теперь нам нужно настроить лимиты операционной системы для нашего пользователя Orcale, для этого открываем файл /etc/security/limits.conf

sudo nano /etc/security/limits.conf

и добавляем следующие строки:

# Oracle
oracle           soft    nproc   2047
oracle           hard    nproc   16384
oracle           soft    nofile  1024
oracle           hard    nofile  65536
oracle           soft    stack   10240

Далее нам необходимо проверить, чтобы в настройках авторизации (/etc/pam.d/login) должна присутствовать следующая строка (если её нет, то добавьте)

session    required   pam_limits.so

4. Ставим необходимые дополнительные пакеты

Вы можете ставить пакеты как одной командой, так и по одному пакету, привожу оба варианта, для вашего удобства.

Вариант попакетной установки:

sudo apt-get install alien
sudo apt-get install autoconf
sudo apt-get install automake 
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install build-essential
sudo apt-get install bzip2
sudo apt-get install doxygen
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386 
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc

Вариант пакетной (массовой установки):

sudo aptitude install -y alien autoconf automake autotools-dev binutils build-essential bzip2 doxygen elfutils expat gawk gcc gcc-multilib g++-multilib ia32-libs ksh less lesstif2 lesstif2-dev lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libmotif4 libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0 libpthread-stubs0-dev lsb-cxx make openssh-server pdksh rlwrap rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc

5. Заранее исправляем проблемы, которые возникнут при установке

Делаем нашу Ubuntu более похожей на Linux семейства RedHat, “спасибо” ораклу, который заточен под семейство RH.

Исправляем ошибку: **genclntsh: Failed to link libclntsh.so.11.1 in make file for rdbms/lib/ins_rdbms.mk

** Она связана с тем, что установщик не может найти библиотеку в стандартном для RH пути: /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a inside

sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64

Решаем проблему с ошибкой lib//libagtsh.so: undefined reference to ‘nnfyboot’ in make: rdbms/lib/dg4odbc] Error 1

Опять же из-за того, что Оракл заточен под RedHat. Поэтому делаем нашу Ubuntu максимально похожей на него

sudo ln -sf /bin/bash /bin/sh
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/rpm /bin/rpm 
sudo ln -s /usr/bin/basename /bin/basename

sudo mkdir /etc/rc.d
sudo ln -s /etc/rc0.d /etc/rc.d/rc0.d
sudo ln -s /etc/rc2.d /etc/rc.d/rc2.d
sudo ln -s /etc/rc3.d /etc/rc.d/rc3.d
sudo ln -s /etc/rc4.d /etc/rc.d/rc4.d
sudo ln -s /etc/rc5.d /etc/rc.d/rc5.d
sudo ln -s /etc/rc6.d /etc/rc.d/rc6.d
sudo ln -s /etc/init.d /etc/rc.d/init.d

Продолжаем решать проблемы отличий Ubuntu от RedHat (в конце команды на второй строчке есть точка, она тоже нужна!): /lib64/libgcc_s.so.1: File or directory does not exists, while creating lib/liborasdkbase.so.11.1 in ins_rdbms.mk:

cd /lib64
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 .

Так же для Oracle 11g так же нужна библиотека libstdc++5 32 битной версии, но которой нет в репозиториях Ubuntu Pangolin. Поэтому установим вручную. (если на команды wget вам ответ идёт код 404, страница не найдена, то просто посмотрите библиотеки по этой ссылке и скачайте аналогичные пакеты)

mkdir /tmp/libstdc++5
cd /tmp/libstdc++5
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-25ubuntu1_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-25ubuntu1_i386.deb

sudo dpkg --force-architecture -i libstdc++5_3.3.6-25ubuntu1_i386.deb
sudo mv /usr/lib/libstdc++.so.5* /usr/lib32/

sudo dpkg -i libstdc++5_3.3.6-25ubuntu1_amd64.deb

6. Дополнительные, но нужные настройки

Нам нужно прописать переменные окружения. В других гайдах их настраивают для конкретного пользователя Oracle, лично мне удобнее в общий конфиг писать, поэтому давайте его и откроем — /etc/bash.bashrc (перед этим выполните команду hostname, запомните вывод этой команды, и запишите его вместо __ в строках ниже)

# Oracle Settings
TMP=/tmp
TMPDIR=$TMP

ORACLE_HOSTNAME=<YOUR_HOSTNAME>
ORACLE_UNQNAME=orcl
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/Oracle11gee/product/11.2.0/dbhome_1
ORACLE_SID=orcl
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH

ORACLE_OWNER=oracle

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


export ORACLE_HOSTNAME
export ORACLE_UNQNAME
export ORACLE_HOME
export ORACLE_SID
export ORACLE_OWNER
export LD_LIBRARY_PATH
export CLASSPATH
export PATH
export TMPDIR
export TMP

Теперь отредактируем уже переменные окружения для пользователя Oracle. Сначала переключимся на пользователя и перейдём в домашнюю директорию:

sudo su - oracle
cd ~

А теперь отредактируем файл ~/.bashrc добавив в него строку:

umask 022

После этого мы можем применить данные параметры командой:

source .bashrc

Но это не обязательно, потому что нам сейчас нужно перезагрузить сервер. После перезагрузки мы приступаем к самому интересному, установке и настройке Oracle Database Enterprise Edition 11g Release 2.

Подготовка графики для запуска установки

Oracle как всегда доставляет. Если у вас нет готового так называемого файла ответов, то запустить установку вы можете только в графическом виде, где нужно производить настройки (Oracle даже не позаботился о том, чтобы был TUI (terminal user interface) для установки на серверах с минимумом геморроя, пример такого интерфейса может служить ранее использованная настройка временнОй зоны, или, например, настройка exim4 и другие). Поэтому вам необходимо будет “пробрасывать иксы” или настраивать X11 Forwarding. В моём случае всё было ещё веселее, так как я был на винде, и нужно было пробрасывать иксы именно на неё. Но я в данном гайде расскажу и об этом, чтобы вам не нужно было искать и мучиться как мне.

1. Установим и настроим X server для Windows — Xming

Итак, у нас винда. Скачиваем последнюю актуальную версию Xming с sourceforge.net.

Устанавливаем её из серии Далее — Далее — Далее. Ну, в общем, вы меня поняли. Теперь запустите XLaunch, который появился на рабочем столе и настроим его.

В появившемся окне выбираем “Multiple Windows” (Display Number оставляем равным нулю) и жмём Next. Эта настройка скажет удалённому Linux запускать приложения в отдельных окнах.

xming1

В следующем окне выбираем “Start No Client” и жмём Next. Это скажет Xming запускаться и ждать команд от других приложений, в нашем случае, забегая вперёд, это будет PuTTY.

xming2

В появившемся далее окне проверьте чтобы стояла галочка напротив Clipboard и смело жмите Next. Это скажет вашему Xming активировать возможность шаринга общего буфера обмена.

xming3

Теперь в последнем окне жмём Finish чтобы активировать настройки. Всё, наш Xming настроен, в трее должен быть так же виден значок xming’а. Если его нет то запустите с рабочего стола по ярлыку Xming, хотя при установке он должен был запуститься автоматически.

xming4

Всё, с Xming мы закончили. Теперь настроим _PuTTY_ для проброса сессии X server на наш компьютер.

2. Настраиваем PuTTY для проброса сессии X server на компьютер с Windows

Вот мы настроили X server у нас на винде, но возникает вопрос, как пробросить сессию на сервера на наш компьютер, в этом пункте пойдёт речь именно об этом. Для этого нам понадобится, как вы уже поняли, Putty, который мы скачаем с официального сайта.

Допустим мы скачали наш PuTTY, давайте его запустим. Откроется окно с настройками сессии. Настройте соединение с вашим сервером в этом окне, указав IP адрес, порт, дайте название сессии и нажмите кнопку сохранить.

putty1

 

Слева в разделах найдите пункт “Connection”, кликните по подразделу “SSH” и выберите там “X11”. В правой части поставьте галочку напротив пункта “Enable X11 Forwarding” и проверьте, чтобы был выбран тип аутентификации “MIT-Magic-Cookie-1

putty2

Теперь слева выберите опять раздел Session и снова нажмите кнопку Save для сохранения ваших настроек сессии, чтобы потом постоянно их не вводить.

putty3

Всё, PuTTY мы настроили. Остались последние шаги.

3. Поправим конфигурацию SSH сервера для правильной работы проброса X server сессии

Для того, чтобы работал проброс X server сессии нам нужно поправить настройки SSH сервера. Для этого откройте файл _/etc/ssh/sshdconfig

И сделайте следующие изменения:

  1. Укажите какой адрес прослушивать. Я ставил `ListenAddress 0.0.0.0` (это нули)
  2. Смотрим чтобы параметр `X11Forwarding yes` не был закомментирован (не было решётки в начале строки) и не имел значения no.
  3. Так же параметр `X11DisplayOffset 10` — у меня такой по умолчанию и всё работало.
  4. Теоретически могут быть проблемы с подключением, поэтому можете попробовать поэкспериментировать со значением параметра `X11UseLocalhost` (либо yes, либо no — в разных случаях разные варианты помогают, сейчас уже точно не помню какую ошибку это решает.) По умолчанию данного параметра нет в конфиге, и если у вас не возникнет проблем просто забудьте про этот пункт.

Не забудьте проверить ваш файл /etc/hosts он должен быть примерно таким:

127.0.0.1       localhost
127.0.1.1       localhost.localdomain   localhost

При таких параметрах у меня всё прекрасно работает. Теперь перезапустите ваш SSH сервер:

sudo service ssh restart

Теперь мы полностью готовы к началу установки самого Oracle.

Установка Orcale Database Enterprise Edition 11g R2 на Ubuntu 12.04

Мы прошли долгий путь подготовки, вы вышли почти на финишную прямую, осталось совсем немного. Давайте запустим наш PuTTY и загрузим нашу сохранённую сессию (не забудьте убедиться что Xming у вас тоже запущен). После запуска сессии авторизуйтесь под пользователем oracle и паролем, на который вы поменяли в процессе создания пользователя. Авторизовавшись переходим в папку ~/database и запускаем установщик:

cd ~/database
./runInstaller

После этой команды у вас запуститься установщик и появится сплешскрин и после него начинаем установку (далее использую скрины которые нашёл на просторах инета, данные в них я буду в письменном виде немного корректировать, поэтому читайте внимательно, что я пишу). На первом шаге мы оставляем все поля пустыми и снимаем галочку напротив пункта о желании получать апдейты и жмём Next. После этого появится варнинг, что мол вы не указали имейл, забиваем на это и говорим что Yes, типа согласны без апдейтов на почту жить.

linux.x64_11gr2_database024

На следующем шаге мы говорим какой Installation Option нас интересует, а нас интересует “Create and configure database”, выбираем и жмём Next.

linux.x64_11gr2_database025

Теперь нас спрашивают какой класс системы (System Class) нас интересует, в нашем случае это “Server Class”, ну и, как всегда, жмём Next.

linux.x64_11gr2_database026

Теперь нас спрашивают какой режим для Grid Option, то есть кластер или одна нода, ну в нашем случае будет одна нода, поэтому выбираем “Single instance database installation” и жмакаем Next.

linux.x64_11gr2_database027

Далее нам предлагают выбрать тип установки. Тут первое расхождение скриншота с реальностью, мы выберем Typical Installation, ибо нам Advanced не нужен, так как параметры в 99% случаев всё равно остаются стандартными. Поэтому выбираем именно типикал установку и жмём Next.

linux.x64_11gr2_database028

Далее опять скриншот, который будет расходиться по параметрам (нет у меня сейчас сервера под рукой для воспроизведения этого процесса, да и копи-пастить из текста всё же удобнее). На этом этапе мы указываем различные пути. У вас может немного отличаться окно в ту или иную сторону, но самое основное будет всё равно общим.

Наши значения:

  • Oracle base: /opt/oracle/Oracle11gee
  • Software location: /opt/oracle/Oracle11gee/product/11.2.0/dbhome_1
  • Database file location: /opt/oracle/Oracle11gee/oradata
  • Database edition: Enterprise Edition
  • Character Set: Unicode AL32UTF8
  • OSDBA Group: dba
  • Global database name: тут мы пишем orcl.hostname, где hostname меняем на вывод команды hostname (например у нас hostname выдал 123321.hoster.com, то в это поле впишем orcl.123321.hoster.com, надеюсь понятно объяснил)
  • Administrative Password: тут пароль админа базы
  • Confirm Password: тут подтверждаем пароль админа базы

install_basic

Если мне не изменяет память то теперь у вас появится окно, в котором установщик будет ругаться на отсутствие разных библиотек и настроек (см. скрин ниже, если другое окно, то просто жмите далее и попадёте на это окно), но вы должны забить на них, так как установщик у нас от оракла, а, как у я уже упоминал, они ещё те приколисты, в общем наверху справа ставим галочку игнорировать ошибки “Ignore All”, жмём Next, у нас появится алерт, что мы не решили все конфликты, и уверены ли мы что хотим продолжить, жмём конечно же Yes.

linux.x64_11gr2_database042

Сейчас вы должны увидеть окно с финальным списком ваших параметров, так называемый Summary. Просто проверьте, что всё ок и жмите смело Finish.

linux.x64_11gr2_database043

Теперь откиньтесь на спинку стула и ждите пока пройдёт установка, за процессом установки вы будете следить в окне как на скрине ниже, но это до момента, когда начнётся Link Binaries.

linux.x64_11gr2_database044

Как я писал ранее, вы можете откинуться и отдохнуть до момента начала Link Binaries, так как с вероятностью 99,99% у васпоявится окно с алертам. Чтобы победить первый и все последующие алерты просто выполните подряд несколько команд (окно с алертом не закрывайте пока), указанные ниже:

export ORACLE_HOME=/opt/oracle/Oracle11gee/product/11.2.0/dbhome_1
cd $ORACLE_HOME/lib
ln -s libclient11.a libagtsh.a
$ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0
sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk

После выполнения этих команд в окне с алертом нажмите Retry, теперь процесс установки должен пойти без проблем. Далее ещё появится дополнительное окно, в котором пройдёт процесс конфигурации базы и репы. После этого появится окно с информацией, что конфигурация и создание репы прошли нормально, в нём нужно нажать на Ok.

linux.x64_11gr2_database045

Теперь установщик попросит нас запустить два скрипта, это окно не закрываем и запускаем скрипты (команды приведены ниже)

linux.x64_11gr2_database046

Давайте это и сделаем. На скриншоте выше пути отличаются от наших, но когда вы будете ставить, у вас будут в этом окне указаны верные пути, поэтому ориентируйтесь на них. Если вы делали всё согласно этой инструкции, то ниже приведены команды с путями, которые достаточно просто скопи-пастить и запустить:

sudo /opt/oracle/oraInventory/orainstRoot.sh   
sudo /opt/oracle/Oracle11gee/product/11.2.0/dbhome_1/root.sh

После запуска команд жмём Ok в окне установщика, в итоге он должен сказать что всё прошло успешно, и показать типа такого окна (данные могут сильно отличаться), в нём просто жмём Close. И основная часть установки завершена, мы уже почти у финиша, осталось совсем чуть-чуть.

linux.x64_11gr2_database047

Вообще в разных гайдах написано по разному, но если мне не изменяет память, то Enterprise Manager сразу не стартует, его нужно будет запустить вручную. Проверить запустился EM или нет вы можете просто открыв адрес вашего сервера, порт 1158 путь em, например https://localhost:1158/em (браузер будет ругаться на плохой сертификат, это нормально, а по http оно не работает, это тоже нормально). Если урл открылся нормально то значит EM у вас запущен.

Если EM не запустился, то в консоли попробуйте выполнить команду

emctl start dbconsole

Теперь зайдите по урлу указанному выше и вы увидите форму авторизации, для того, чтобы залогиниться используйте следующие данные:

  • User Name: SYS
  • Password: your_secret_password
  • Connect As: SYSDBA

linux.x64_11gr2_database048

Если всё прошло успешно, то вы должны увидеть нечто похожее на это

linux.x64_11gr2_database049

linux.x64_11gr2_database050

Маленький, но крайне важный тюнинг, нам нужно поправить файл /etc/oratab (открываем под sudo), в нём будет строчка с вашей БД, на конце будет :N, вам нужно поменять на :Y, то есть привести к такому виду:

#
 
# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.
 
# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#

orcl:/opt/oracle/Oracle11gee/product/11.2.0/dbhome_1:Y

Теперь можете стартовать саму базу:

dbstart $ORACLE_HOME

Автостарт/Автозапуск сервера Oracle Database EE 11g R2 на Ubuntu 12.04

Для себя я выбрал следующую схему работы с автозапуском:

  • Делаем отдельно скрипт запуска всех компонентов связанных с ораклом
  • Делаем такой же скрипт только для остановки этих компонентов
  • Делаем init скрипт который будет использовать эти скрипты

Для начала сделаем папку со скриптами:

mkdir /opt/oracle/scripts

Скрипт для запуска всех необходимых компонентов оракла _/opt/oracle/scripts/orastart.sh:

#!/bin/bash
 
# script to start the Oracle database, listener and dbconsole
 
. ~/.bash_profile
 
# 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

Скрипт для остановки всех необходимых компонентов оракла _/opt/oracle/scripts/orastop.sh:

#!/bin/bash
 
# script to stop the Oracle database, listener and dbconsole
 
. ~/.bash_profile
 
# 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

Ну и сам init.d скрипт /etc/init.d/oracle

#!/bin/bash
#
# description: Oracle auto start-stop script.
#
### BEGIN INIT INFO
# Provides:          Oracle
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Startup/Shutdown Oracle listener and instance
### END INIT INFO
 
# Set ORA_OWNER to the user id of the owner of the
 
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 "/opt/oracle/scripts/ora_start.sh"
        touch /var/lock/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 "/opt/oracle/scripts/ora_stop.sh"
        rm -f /var/lock/oracle
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
        RETVAL=1
esac
exit $RETVAL

Не забываем поставить флаг разрешающий запуск скриптов:

sudo chmod +x /opt/oracle/scripts/ora_start.sh 
sudo chmod +x /opt/oracle/scripts/ora_stop.sh
sudo chmod +x /etc/init.d/oracle

Ну и последнее, что мы сделаем, это добавим скрипт в автозагрузку, чтобы при запуске системы автоматом стартовал и Oracle:

sudo update-rc.d oracle defaults

PROFIT!!!!


Дополнительные решения возможных проблем

Список полезных команд:

  • dbca
  • netca
  • netmgr
  • lsnrctl status
  • sqlplus
  • emctl start|stop dbconsole

Если есть проблемы с запуском dbconsole (это пересоздаст БД):

  • emca -repos drop
  • emca -repos create
  • emca -config dbcontrol db
  • emctl start dbconsole


Или так (это тоже пересоздаст БД):

* emca -deconfig dbcontrol db -repos drop
* emca -config dbcontrol db -repos create
* emctl start dbconsole

Ссылки которые мне однажды пригодились:

  • makina-corpus.com/blog/metier/archives/howto-install-oracle-11g-ubuntu-linux-1204-precise-pangolin-64bits
  • lvstone.blog.163.com/blog/static/1773601512012102914439982/






















Комментарии

comments powered by Disqus