Вчера половину дня потратил на то, чтобы запустить СУБД 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. Устанавливаем 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…

    Удачи в разработке. А если что-то не получится — жду комментариев.