Тут по работе ставил oracle xe 11g на дебианобразный дистрибутив и долго трахался ибо оракл рассчитан исключительно на редхат и всякие дебианы-убунты не поддерживает. Ставил на вмтварь с CrunchBang 11 "Waldorf" но в теории все действия описанные здесь подойдут и для Убунты.
Делюсь опытом, может кому пригодится.
Установка oracle xe 11g на Linux CrunchBang 11 "Waldorf"(должно подойти для любого другого debian-based дистрибутива)
1) Скачиваем файлы oracle-xe-11.2.0-1.0.x86_64.rpm.zip и sqldeveloper-3.2.09.30-1.noarch.rpm
2) Устанавливаем зависимости и необходимые библиотеки
sudo apt-get install alien libaio1 unixodbc
3) Устанавливаем минимальное значение 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
Добавляем в fstab:
echo /swapfile swap swap defaults 0 0 >> /etc/fstab
4) Правим параметры ядра:
cat > /etc/sysctl.d/60-oracle.conf <<-EOF
# 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
EOF
Проверить выполнение:
sudo cat /etc/sysctl.d/60-oracle.conf
Подгружаем новые параметры:
sudo service procps start
Проверить выполнение:
sudo sysctl -q fs.file-max
Должны получить fs.file-max = 68157445) Создаем папку, в которую потом установим БД
sudo mkdir /home/oracle-xe
sudo ln -s /home/oracle-xe /u01
6) Конвертируем скачанный файл в deb (займет время)
sudo unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
cd Disk1
sudo alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
7) Из-за того, что инсталятор Red Hat использует /sbin/chkconfig, которого нет в Debian/Ubuntu, то сделаем финт ушами
sudo -i
cat > /sbin/chkconfig <<-EOF
#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Debian based Linux (by dude)
# Only run once.
echo "Simulating /sbin/chkconfig..."
if [[ ! \`tail -n1 /etc/init.d/oracle-xe | grep INIT\` ]]; then
cat >> /etc/init.d/oracle-xe <<-EOM
#
### BEGIN INIT INFO
# Provides: OracleXE
# Required-Start: \\\$remote_fs \\\$syslog
# Required-Stop: \\\$remote_fs \\\$syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Oracle 11g Express Edition
### END INIT INFO
EOM
fi
update-rc.d oracle-xe defaults 80 01
EOF
после чего дадим привилегии на выполнение
sudo chmod 755 /sbin/chkconfig
Дополнительные действия для совместимости с Red Hat:
sudo ln -s /usr/bin/awk /bin/awk
для Ubuntu еще надо сделать:
sudo mkdir /var/lock/subsys
9) Oracle 11gR2 XE под последними версиями Debian\Ubuntu вызывает ошибку "ORA-00845: MEMORY_TARGET not support on this system". Это вызвано новой версией пакета "systemd" в котором путь монтирования /dev/shm изменен и оракл не видит ее. Для этого можно сделать костыль:
sudo -i
cat > /etc/init.d/oracle-shm <<-EOF
#! /bin/sh
# /etc/init.d/oracle-shm
#
#
case "\$1" in
start)
echo "Starting script /etc/init.d/oracle-shm"
# Run only once at system startup
if [ -e /dev/shm/.oracle-shm ]; then
echo "/dev/shm is already mounted, nothing to do"
else
rm -f /dev/shm
mkdir /dev/shm
mount -t tmpfs shmfs -o size=2048m /dev/shm
touch /dev/shm/.oracle-shm
fi
;;
stop)
echo "Stopping script /etc/init.d/oracle-shm"
echo "Nothing to do"
;;
*)
echo "Usage: /etc/init.d/oracle-shm {start|stop}"
exit 1
;;
esac
#
### BEGIN INIT INFO
# Provides: oracle-shm
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Bind /run/shm to /dev/shm at system startup.
# Description: Fix to allow Oracle 11g use AMM.
### END INIT INFO
EOF
Установить скрипт инициализации:
chmod 755 /etc/init.d/oracle-shm
update-rc.d oracle-shm defaults 01 99
перезапустить систему:
reboot
Проверяем:
sudo cat /etc/mtab | grep shm
sudo df -h /run/shm
(должно быть не менее 1 гб)10) Производим установку пакета (длительный процесс)
sudo dpkg --install ./oracle-xe_11.2.0-2_amd64.deb
11) Выполняем конфигурацию БД
sudo /etc/init.d/oracle-xe configure
будет задан вопрос про порты (лучше оставить стандартными) и пароль администратора к базе данныхесли на данном этапе получаем ошибку ORA-00845: MEMORY_TARGET, то ковыряем настройки /dev/shm см.п.9 возможно в вашей системе потребуется больше размер или иные параметры ибо оракл сука привередливая 12) После инсталляции
задаем пароль для юзера oracle
sudo passwd oracle
<ввести новый пароль>настраиваем пользователя
su - oracle
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
su - oracle
sqlplus / as sysdba
13) Устанавливаем SQLDeveloper (если надо)
sudo alien -d --scripts sqldeveloper-3.2.09.30-1.noarch.rpm
sudo dpkg --install ./sqldeveloper_3.2.09.30-2_all.deb