Ингредиенты
Нам понадобится установленный на 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, и запустить его.
сделал всё по инстукции,но сервер не запустился ( помогите пожалуйста )
А что выдаёт?
ещё раз запустил скрипт,который вы прикрепили к этому посту.Вот лог:
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, то он пишет что уже сконфигурирован!
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
вот что выдаёт есть в ручную запускать,через терминал
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#
правда я ставлю oracle XE на нормальную машину,не на виртуалку )
хм…странно…Когда делал всё ручками,сервер не запускался!
реши всё поставить с нуля — на чистую систему! и решил попробовать это сделать через Ваш скрипт! всё встало и заработало!
Огромное Вам спасибо за скрипт и помощь!!!!! наконец-то буду работать под линуксом ))))))
Спасибо за статью — очень помогла. Скрипт отработал. База создалась. Сервисы запустились. Но есть проблема страничка с 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
тогда пускает
В VirtualBox для линукса (если база работает там) необходимо добавить port forwarding с 9898 на 9898, так как guest работает под NAT. Для доступа с моего Rails проекта на хосте к базе на виртуальном госте я также перенаправил порт 1252 (host) на 1251 (guest), чтобы иметь возможность по стандартному порту 1251 выход на другие (реальные) базы.
Я устанавливаю на живом железе не в виртуальной машине.
1 среда тестовый релиз Ubuntu 12.10
2 среда LTS 12.04
Похоже что не хватает каких то прав….
Попробовал :
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
PL/SQL procedure successfully completed.
Потом ALTER USER XDB ACCOUNT UNLOCK;
Не помогло.
у меня в конце выдает ошибку.
Starting Oracle Net Listener…Done
Configuring database…
Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details
помогите, плиз
Ну а что в /u01/app/oracle/product/11.2.0/xe/config/log пишет? Там же все детали проблемы должны стоять…
Вы забыли
ln -s /usr/bin/awk /bin/awk
sqlplus: command not found
Вот так надо сделать:
cp /etc/skel/.bash_logout ./
cp /etc/skel/.bashrc ./
cp /etc/skel/.profile ./
echo «» >>./.profile
echo ‘. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh’ >>./.profile
Вот здесь об этом пишут.
https://forums.oracle.com/thread/2303639
Затем в директории /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
it works perfectly!!!!
thank you man!!!!
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.