Установка Oracle Express Edition 11g R2 на Ubuntu 12.04

Ингредиенты

Нам понадобится установленный на VirtualBox Ubuntu 12.04 TLS из предыдущей статьи, а также скаченная Oracle Express Edition 11g Release 2 (после предварительной регистрации).

Заряжаем телегу

После запуска Ubuntu на VirtualBox закачиваем туда rpm файл oracle-xe-11.2.0-1.0.x86_64.rpm, предварительно вытащив его из zip-архива.
Делаем это приблизительно так:

scp -P 2222 ~/Downloads/Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm root@localhost:/root/

После этого заходим на виртуальный сервер и (до)устанавливаем необходимые пакеты.

aptitude -y install alien libaio1 unixodbc bc ksh

Для установки Oracle временно требуется Swap раздел на жестком диске, который создаем следующими телодвижениями:

dd if=/dev/zero of=/tmp/swap bs=1M count=4096
chmod 600 /tmp/swap
mkswap /tmp/swap
swapon /tmp/swap

Команда

grep SwapTotal /proc/meminfo

Должна показать что-то вроде SwapTotal: 4194300 kB

Далее увеличиваем Shared Memory, если мы желаем избежать ошибки «ORA-00845 error message».
Для этого запишем в /etc/fstab следующие золотые слова:

echo -e "\ntmpfs           /dev/shm        tmpfs   defaults,size=1512M 0    0" >> /etc/fstab
mount -o remount /dev/shm

После

df -kh /dev/shm/

мы увидим размер в 1,5GB c барского плеча, чего вполне достаточно для нашей затеи.

Далее создадим /sbin/chkconfig, которого по-идее на Debian-системах нет.
Для этого наберем в консоли

cat - > /sbin/chkconfig

и после Enter запихиваем:

# Oracle 11gR2 XE installer chkconfig hack for Debian by Dude
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
   echo >> $file
   echo '### BEGIN INIT INFO' >> $file
   echo '# Provides:             OracleXE' >> $file
   echo '# Required-Start:       $remote_fs $syslog' >> $file
   echo '# Required-Stop:        $remote_fs $syslog' >> $file
   echo '# Default-Start:        2 3 4 5' >> $file
   echo '# Default-Stop:         0 1 6' >> $file
   echo '# Short-Description:    Oracle 11g Express Edition' >> $file
   echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01

После этого жмем Ctrl+D для завершения этого самопального текстового редактора.
Теперь только поменяем права

chmod 755 /sbin/chkconfig

и приступим к превращению .rpm-файла в .deb пакет для Debian, из которой когда-то вылупился юный Ubuntu.

cd /root
alien --d --scripts oracle-xe-11.2.0-1.0.x86_64.rpm

На этом месте идем за новой кружкой кофе, ибо процесс превращения в зависимости от ресурсов машины может нам легко позволить это сделать.

После этого устанавливаем полученный пакет:

dpkg -i oracle-xe_11.2.0-2_amd64.deb

Теперь, если всё хорошо, необходимо похимичить с установленной программой ДО начала самого ответственного момена — конфигурации. Дело в том, что в Ubuntu Shared Memory завязана на /run/shm. Ссылка на /dev/shm не работает. Поэтому поменяем путь непосредственно в программе:

cd /u01/app/oracle/product/11.2.0/xe/bin && \
  cp oracle oracle.bak && \
  sed 's|/dev/shm|/run/shm|g' oracle.bak >/tmp/oracle && \
  cp /tmp/oracle . && \
  chown oracle:dba oracle && \
  chmod 6751 oracle

После первого (успешного) запуска каждый раз выскакивает сообщение cannot touch `/var/lock/subsys/listener'
Это безобидно, но несколько не приятно. Поэтому вставим в загрузочный файл команду создания по умолчанию:

sed -i '33 s/^/\nmkdir -p \/var\/lock\/subsys\n/' /etc/init.d/oracle-xe

Поехали!

Теперь запускаем конфигуратор Oracle командой

/etc/init.d/oracle-xe configure

После успешного запуска команда

ps afx

покажет приблизительно следующие процессы:

Теперь остается только подчистить хвосты

rm /sbin/chkconfig
rm /tmp/oracle

Поздравляю, Oracle Database Express Edition 11g Release 2 стоит на нашей виртуальной машине!

ЗЫ

Для тех, кому лень все делать ручками, я закинул в один файл. Просто запихать его виде oracle.sh в папку /root, где уже лежит oracle-xe-11.2.0-1.0.x86_64.rpm, и запустить его.

Установка Oracle Express Edition 11g R2 на Ubuntu 12.04: 19 комментариев

  1. ещё раз запустил скрипт,который вы прикрепили к этому посту.Вот лог:

    fox@fox-pc:~$ sudo su
    [sudo] password for fox:
    root@fox-pc:/home/fox# cd /root/
    root@fox-pc:~# ls
    oracle.sh oracle-xe-11.2.0-1.0.x86_64.rpm oracle-xe_11.2.0-2_amd64.deb
    root@fox-pc:~# dpkg -i oracle-xe_11.2.0-2_amd64.deb
    Выбор ранее не выбранного пакета oracle-xe.
    (Чтение базы данных … 95%^C
    root@fox-pc:~# clear

    root@fox-pc:~# ls
    oracle.sh oracle-xe-11.2.0-1.0.x86_64.rpm oracle-xe_11.2.0-2_amd64.deb
    root@fox-pc:~# sh oracle.sh
    Ни одного пакета не будет установлено, обновлено или удалено.
    0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 14 пакетов не обновлено.
    Необходимо получить 0 Б архивов. После распаковки 0 Б будет занято.

    4096+0 записей считано
    4096+0 записей написано
    скопировано 4294967296 байт (4,3 GB), 62,6236 c, 68,6 MB/c
    Setting up swapspace version 1, size = 4194300 KiB
    без метки, UUID=64aa9498-2b73-4eaa-a9a1-41abf205f3b4
    =================================================
    New swap size:
    SwapTotal: 10128372 kB
    [mntent]: строка 17 в /etc/fstab плохая
    [mntent]: строка 19 в /etc/fstab плохая
    [mntent]: строка 21 в /etc/fstab плохая
    [mntent]: строка 23 в /etc/fstab плохая
    [mntent]: строка 25 в /etc/fstab плохая ; остальная часть файла проигнорирована
    =================================================
    New tmpfs size:
    Файл.система Размер Использовано Дост Использовано% Cмонтировано в
    none 1,5G 284K 1,5G 1% /run/shm
    =================================================
    Create oracle-xe_11.2.0-2_amd64.deb…
    oracle-xe_11.2.0-2_amd64.deb generated
    Выбор ранее не выбранного пакета oracle-xe.
    (Чтение базы данных … на данный момент установлено 146496 файлов и каталогов.)
    Распаковывается пакет oracle-xe (из файла oracle-xe_11.2.0-2_amd64.deb)…
    Настраивается пакет oracle-xe (11.2.0-2) …
    Executing post-install steps…
    update-rc.d: warning: /etc/init.d/oracle-xe missing LSB information
    update-rc.d: see
    System start/stop links for /etc/init.d/oracle-xe already exist.
    You must run ‘/etc/init.d/oracle-xe configure’ as the root user to configure the database.

    Обрабатываются триггеры для ureadahead …
    ureadahead will be reprofiled on next reboot
    Обрабатываются триггеры для desktop-file-utils …
    Обрабатываются триггеры для bamfdaemon …
    Rebuilding /usr/share/applications/bamf.index…
    Обрабатываются триггеры для gnome-menus …
    Обрабатываются триггеры для libc-bin …
    ldconfig deferred processing now taking place
    =================================================
    Oracle XE package was installed
    =================================================
    Hack 2 was created
    Oracle Database 11g Express Edition is already configured
    =================================================
    Complete!
    root@fox-pc:~#

    Если запустить /etc/oracle-xe configurate, то он пишет что уже сконфигурирован!

  2. root@fox-pc:~/Disk1# cd /u01/app/oracle/product/11.2.0/xe/bin && \
    > cp oracle oracle.bak && \
    > sed ‘s|/dev/shm|/run/shm|g’ oracle.bak >/tmp/oracle && \
    > cp /tmp/oracle . && \
    > chown oracle:dba oracle && \
    > chmod 6751 oracle
    bash: cd: /u01/app/oracle/product/11.2.0/xe/bin: No such file or directory

  3. вот что выдаёт есть в ручную запускать,через терминал

    root@fox-pc:/home/fox# /etc/init.d/oracle-xe start
    Starting Oracle Net Listener.
    Starting Oracle Database 11g Express Edition instance.
    Failed to start Oracle Net Listener using /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr and Oracle Express Database using /u01/app/oracle/product/11.2.0/xe/bin/sqlplus.
    root@fox-pc:/home/fox#

  4. хм…странно…Когда делал всё ручками,сервер не запускался!
    реши всё поставить с нуля — на чистую систему! и решил попробовать это сделать через Ваш скрипт! всё встало и заработало!
    Огромное Вам спасибо за скрипт и помощь!!!!! наконец-то буду работать под линуксом ))))))

  5. Спасибо за статью — очень помогла. Скрипт отработал. База создалась. Сервисы запустились. Но есть проблема страничка с APEX не открывается.
    Идет первое приглашение ввести пароль от XDB(ввожу system | пароль).
    Второе от APEX(ввожу admin | пароль).
    Дальше росто идет постоянное обращение по адресу и «Ожидание ответа от localhost:9898 »

    Еще одна странность: не работает sqlplus / as sysdba.

    ~$ sqlplus / as sysdba

    SQL*Plus: Release 11.2.0.2.0 Production on Thu Oct 25 16:58:16 2012

    Copyright (c) 1982, 2011, Oracle. All rights reserved.

    ERROR:
    ORA-01031: insufficient privileges

    Нужно делать sqlplus /nolog
    connect sys@xe as sysdba
    тогда пускает

    1. В VirtualBox для линукса (если база работает там) необходимо добавить port forwarding с 9898 на 9898, так как guest работает под NAT. Для доступа с моего Rails проекта на хосте к базе на виртуальном госте я также перенаправил порт 1252 (host) на 1251 (guest), чтобы иметь возможность по стандартному порту 1251 выход на другие (реальные) базы.

  6. Я устанавливаю на живом железе не в виртуальной машине.
    1 среда тестовый релиз Ubuntu 12.10
    2 среда LTS 12.04

    Похоже что не хватает каких то прав….

    Попробовал :
    SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

    PL/SQL procedure successfully completed.

    Потом ALTER USER XDB ACCOUNT UNLOCK;

    Не помогло.

  7. у меня в конце выдает ошибку.

    Starting Oracle Net Listener…Done
    Configuring database…
    Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details
    помогите, плиз

    1. Ну а что в /u01/app/oracle/product/11.2.0/xe/config/log пишет? Там же все детали проблемы должны стоять…

  8. Затем в директории /u01/app/oracle
    дописать в конец файла

    if [ -f «$HOME/.bash_profile» ]; then
    . «$HOME/.bash_profile»
    fi

    if [ -f /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh ]
    . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
    else
    echo «Can not locate oracle_env.sh»
    fi

    А в файл .bash_profile дописать
    #!/bin/bash

    export PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin
    export TNS_ADMIN=/u01/app/oracle/product/11.2.0/xe/network/admin
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
    export ORACLE_SID=XE

  9. If you have successfully installed to Oracle R2 Express Edition server, it’s time to configure the server. To start the configuration of the server, execute the following command and follow the “wizard” in the terminal. Default values are shown between brackets for each question.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *