Skip to content

Установка Oracle XE 11g на Ubuntu под VirtualBox

Вчера половину дня потратил на то, чтобы запустить СУБД Oracle XE 11g на Ubuntu в VirtualBox. Тысячи нервных клеток головного мозга были уничтожены, но задача, наконец, выполнена. И чтобы с этим смогли справиться люди, не имеющие в багаже английского языка я решил написать в этот блог кратенькую инструкцию.
Итак:
Что нам понадобится
VirtualBox — http://www.virtualbox.org/wiki/Downloads
Ubuntu — http://www.ubuntu.com/download/ubuntu/download (берем x64, так как только для нее есть Express версия Oracle)
Oracle Database Express Edition 11g Release 2 — http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
Oracle SQL Developer — http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html (не хотим же мы постоянно работать с SQL строками. GUI сильно упрощает жизнь)

Теперь поехали:
1. 1. Устанавливаем Ubuntu в VirtualBox. Я думаю вы справитесь с этим и сами, так как процесс элементарен.
2. Запускаем Терминал.
3. Разрешаем себе ssh с рутовыми правами

sudo apt-get install openssh-server
sudo passwd root

4. Устанавливаем зависимости и необходимые библиотеки

sudo apt-get install alien libaio1 unixodbc

5. Устанавливаем минимальное значение swap, хотя я думаю вам хватит и того что есть по умолчанию при установке

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.orig

Выполняем

sudo nano /etc/fstab

Добавляем в конец строку

sudo echo '/swapfile swap swap defaults 0 0'

6. Правим параметры ядра:

sudo nano /etc/sysctl.d/60-oracle.conf

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

# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912

Проверить выполнение:

sudo cat /etc/sysctl.d/60-oracle.conf

Подгружаем новые параметры:

sudo service procps start

Проверить выполнение:

sudo sysctl -q fs.file-max

Должны получить fs.file-max = 6815744
7. Создаем папку, в которую потом установим БД

sudo mkdir /home/oracle-xe
sudo ln -s /home/oracle-xe /u01

8. Переходим в папку где у вас лежит rpm с Oracle XE 11g и выполняем

sudo unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip

(или какая у вас там версия)

sudo alien --to-deb —scripts oracle-xe-11.2.0-1.0.x86_64.rpm

(преобразовываем rpm в deb)
9. Из-за того, что инсталятор Red Hat использует /sbin/chkconfig, которого нет в Ubuntu, то сделаем финт ушами

sudo nano /sbin/chkconfig

и добавим в него следующее:

#!/bin/bash
# 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

после чего дадим привилегии на выполнение

sudo chmod 755 /sbin/chkconfig

10. Устанавливаем свеженький deb

sudo dpkg --install ./oracle-xe_11.2.0-2_amd64.deb
/etc/init.d/oracle-xe configure

Не советую использовать стандартный 8080 порт — слишком много на него претендентов всегда. Я себе поставил 8082.
11. Удаляем /sbin/chkconfig

sudo rm /sbin/chkconfig

12. Изменяем пользователя oracle

sudo /etc/init.d/oracle-xe stop
sudo kill -9 `ps -ef | grep oracle | grep -v grep | awk '{print $2}'`
sudo userdel oracle
sudo useradd -s /bin/bash -G dba -g dba -m oracle
sudo passwd oracle

13. Добавляем необходимые environment variables, которые будут подгружаться при любом логине oracle в систему:

sudo nano /home/oracle/.bashrc

и добавляем
‘. /home/oracle-xe/app/oracle/product/11.2.0/xe/bin/oracle_env.sh’
Сразу же добавим сюда ORACLE_HOME:
ORACLE_HOME=/home/oracle-xe/app/oracle/product/11.2.0/xe
export ORACLE_HOME
14. Разрешим sudo для пользователя oracle

usermod -G admin oracle

Все, Oracle XE работает. (Должен по крайней мере).
15. Займемся SQL Developer
Переходим в папку с rpm и выполняем

sudo alien --to-deb —scripts sqldeveloper-3.0.04.34-1.noarch.rpm

Ждем…
16. Устанавливем готовый пакет

sudo dpkg --install ./sqldeveloper_3.0.04.34-2_all.deb

17. Выполняем

sudo /opt/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf

и добавляем в него следующие строки:
AddVMOption -Duser.language=en
AddVMOption -Duser.region=us
18. PROFIT…
Удачи в разработке. А если что-то не получится — жду комментариев.

15 Comments

  1. vkontakte.ru artur wrote:

    Привет подскажите в чем проблема. Выдает такую ошибку:
    oracle-xe-11.2.0-1.0.x86_64.rpm is for architecture amd64 ; the package cannot be built on this system

    Суббота, Сентябрь 17, 2011 at 6:37 пп | Permalink
  2. narsereg wrote:

    Это именно то, о чем я и говорил. Качать и ставить необходимо Ubuntu x64. Какие-то ограничения Oracle на XE версию.

    Суббота, Сентябрь 17, 2011 at 6:46 пп | Permalink
  3. vkontakte.ru artur wrote:

    Спасибо за совет и оперативность. Во всем инете, только ваш пост по установке Oracle XE 11 на Ubuntu

    Суббота, Сентябрь 17, 2011 at 6:57 пп | Permalink
  4. rpm не для бубунты пакеты) — совственно об этом и мессадж)

    Пятница, Сентябрь 23, 2011 at 5:05 пп | Permalink
  5. Спасибо большое за статью. Все стало замечательно!
    Скажите, как можно поменять AL32UTF8 на CL8MSWIN1251?

    Воскресенье, Сентябрь 25, 2011 at 9:13 дп | Permalink
  6. narsereg wrote:

    Сделай так:
    ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251;

    Воскресенье, Сентябрь 25, 2011 at 9:35 дп | Permalink
  7. Вы могли бы более подробно описать действия. Где эту команду вводить?
    P.S.
    Простите за возможно глупую просьбу.

    Воскресенье, Сентябрь 25, 2011 at 2:13 пп | Permalink
  8. narsereg wrote:

    Запускаешь sqlplus и последовательно выполняешь следующие команды:

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER SYSTEM ENABLE RESTRICTED SESSION;
    ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    ALTER DATABASE OPEN;
    ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251;
    SHUTDOWN IMMEDIATE;
    STARTUP;

    Воскресенье, Сентябрь 25, 2011 at 3:20 пп | Permalink
  9. Не хочет входить
    connect SYSTEM AS SYSDBA/password@XE
    я как-то не так подключаюсь или другой пользователь нужен?

    Воскресенье, Сентябрь 25, 2011 at 3:56 пп | Permalink
  10. narsereg wrote:

    Попробуй пользователя SYS

    Воскресенье, Сентябрь 25, 2011 at 4:11 пп | Permalink
  11. Спасибо, все работает !!!!!!!!!! =))

    Воскресенье, Сентябрь 25, 2011 at 6:11 пп | Permalink
  12. Рано радовался. С базой все хорошо, а вот с APEX проблемы.
    127.0.0.1:8082/apex выдает
    !DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»> #TITLE# #HEAD# &MSG_JSCRIPT. #FORM_OPEN#

    Воскресенье, Сентябрь 25, 2011 at 7:32 пп | Permalink
  13. narsereg wrote:

    Я с подобным не сталкивался, но похоже, что APEX, как вариант, отправляет тебя на шаблон кастомизации собственной страницы. В любом случае желаю удачи в поисках истины и прошу отписаться когда найдешь.

    Воскресенье, Сентябрь 25, 2011 at 9:23 пп | Permalink
  14. Спасибо =)
    Проблема собственно возникает при замене AL32UTF8 на CL8MSWIN1251, если заменить обратно то все работает хорошо. Забавно то что в Windows устанавливал CL8MSWIN1251 и APEX работает замечательно, а тут ему что-то не нравиться. Как найду решение отпишусь.

    Воскресенье, Сентябрь 25, 2011 at 9:27 пп | Permalink
  15. google.com Maxim Zakharov wrote:

    Для 32-битной Ubuntu можно установить Oracle XE 10g, причем гораздо легче: http://notes.sochi.org.ru/1467/

    Среда, Декабрь 28, 2011 at 1:12 дп | Permalink

Post a Comment

You must be logged in to post a comment.