Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Установка Оracle XE  (Прочитано 7994 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Staim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Установка Оracle XE
« : 19 Сентября 2012, 11:51:07 »
Тут по работе ставил 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 = 6815744

5) Создаем папку, в которую потом установим БД
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
8) Дополнительные действия для совместимости с 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
« Последнее редактирование: 21 Сентября 2012, 10:48:06 от Staim »

Оффлайн Staim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Установка Оracle XE
« Ответ #1 : 27 Сентября 2012, 10:32:59 »
Для пущего удобства - написал скрипт, выполняющий все действия автоматически!

Для работы скрипта требуется файл oracle-xe-11.2.0-1.0.x86_64.rpm.zip, скачанный с официального сайта Oracle.
Скрипт вместе со скачанным файлом поместить в домашнюю папку пользователя root (/root) и запустить от имени root (либо используя утилиту sudo).

Работоспособность скрипта проверена на чистых свежеустановленных:

1) CrunchBang 11 "Waldorf"
2) Ubuntu 12.04.1

Исходный код представлен ниже. Открыто для любого использования и изменения. Улучшения\апдейты, выложенные в эту ветку приветствуются.

#!/bin/bash

FILENAME=oracle-xe-11.2.0-1.0.x86_64.rpm.zip
WEB_PORT=8082
ORACLE_PORT=1521
SYS_PASSWORD=oracle
USER_PASSWORD=oracle
LOG_FILE=~/instora.log

if [ "$(whoami)" != "root" ]; then
echo "Sorry, you are not root."
exit 1
fi

cd ~

if [ ! -f $FILENAME ]; then
    echo Error: file $FILENAME not found. Please download it from http://oracle.com/.
    exit 1
fi

echo "Starting install ...."
echo "Starting install ...." > $LOG_FILE

echo "Installing pre-requisites ..."
echo "Installing pre-requisites ..." >> $LOG_FILE
apt-get -y install alien libaio1 unixodbc >> $LOG_FILE 2>&1

echo "Creating additional swap ..."
echo "Creating additional swap ..." >> $LOG_FILE 2>&1
dd if=/dev/zero of=/swapfile bs=1024 count=1048576 >> $LOG_FILE 2>&1
mkswap /swapfile >> $LOG_FILE 2>&1
swapon /swapfile >> $LOG_FILE 2>&1
cp /etc/fstab /etc/fstab.orig >> $LOG_FILE 2>&1
echo /swapfile swap swap defaults 0 0 >> /etc/fstab

echo "Setting up kernel parameters ..."
echo "Setting up kernel parameters ..." >> $LOG_FILE 2>&1
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

echo /etc/sysctl.d/60-oracle.conf: >> $LOG_FILE 2>&1
cat /etc/sysctl.d/60-oracle.conf >> $LOG_FILE 2>&1
service procps start >> $LOG_FILE 2>&1
sysctl -q fs.file-max >> $LOG_FILE 2>&1

echo "Creating directories ..."
echo "Creating directories ..." >> $LOG_FILE 2>&1
mkdir /home/oracle-xe >> $LOG_FILE 2>&1
ln -s /home/oracle-xe /u01 >> $LOG_FILE 2>&1

echo "Preparing DEB package ..."
echo "Preparing DEB package ..." >> $LOG_FILE 2>&1
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip >> $LOG_FILE 2>&1
mv Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm . >> $LOG_FILE 2>&1
rm -r Disk1 >> $LOG_FILE 2>&1
alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm >> $LOG_FILE 2>&1

echo "Preparing fake chkconfig ..."
echo "Preparing fake chkconfig ..." >> $LOG_FILE 2>&1
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

echo /sbin/chkconfig: >> $LOG_FILE 2>&1
cat /sbin/chkconfig >> $LOG_FILE 2>&1
chmod 755 /sbin/chkconfig >> $LOG_FILE 2>&1

echo "Creating RedHat compatibility tweaks ..."
echo "Creating RedHat compatibility tweaks ..." >> $LOG_FILE 2>&1
ln -s /usr/bin/awk /bin/awk >> $LOG_FILE 2>&1
mkdir /var/lock/subsys >> $LOG_FILE 2>&1

echo "Creating /dev/shm tweak ..."
echo "Creating /dev/shm tweak ..." >> $LOG_FILE 2>&1
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

echo /etc/init.d/oracle-shm: >> $LOG_FILE 2>&1
cat /etc/init.d/oracle-shm >> $LOG_FILE 2>&1
chmod 755 /etc/init.d/oracle-shm >> $LOG_FILE 2>&1
update-rc.d oracle-shm defaults 01 99 >> $LOG_FILE 2>&1
service oracle-shm start  >> $LOG_FILE 2>&1

echo "Proceeding with oracle install..."
echo "Proceeding with oracle install..." >> $LOG_FILE 2>&1
echo "Checking for /dev/shm..." >> $LOG_FILE 2>&1
cat /etc/mtab | grep shm >> $LOG_FILE 2>&1
df -h /dev/shm >> $LOG_FILE 2>&1
echo "Installing DEB Package..."
echo "Installing DEB Package..." >> $LOG_FILE 2>&1
dpkg --install ./oracle-xe_11.2.0-2_amd64.deb >> $LOG_FILE 2>&1
echo "Configuring Oracle XE..."
echo "Configuring Oracle XE..." >> $LOG_FILE 2>&1
service oracle-xe configure >> $LOG_FILE 2>&1 <<-EOF
$WEB_PORT
$ORACLE_PORT
$SYS_PASSWORD
$SYS_PASSWORD
y
EOF
echo "Setting up Oracle user..."
echo "Setting up Oracle user..." >> $LOG_FILE 2>&1
passwd oracle >> $LOG_FILE 2>&1 <<-EOF
$USER_PASSWORD
$USER_PASSWORD
EOF
OHOME=/u01/app/oracle
cp /etc/skel/.bash_logout $OHOME/ >> $LOG_FILE 2>&1 
cp /etc/skel/.bashrc $OHOME/ >> $LOG_FILE 2>&1 
cp /etc/skel/.profile $OHOME/ >> $LOG_FILE 2>&1 
echo "" >> $OHOME/.profile
echo '. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh' >> $OHOME/.profile
chown -R oracle:dba $OHOME >> $LOG_FILE 2>&1

echo "Installaion finished! Please refer to logfile: $LOG_FILE"
echo "Installaion finished!" >> $LOG_FILE 2>&1

exit 0

Оффлайн Kristyush

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Установка Оracle XE
« Ответ #2 : 12 Сентября 2013, 18:01:17 »
Дорогой Staim!
Большое. Большущее. Пребольшущее. СПАСИБООООООО!!!!
Добрый умный человек. Несколько дней я шастала по сети, пыталась ставить на виртуалку ORACLE Linux, OpenSuse, Windows 7, но то для обновлений нужна подписка на саппорт, то ошибки в сусе после установки ораклы, то(для венды) XE есть только для 32 бит, а в универе взяла ключ к 64... в общем...
Пока не нашла этот топик, ничего не получалось. Следуя этой инструкции поставила oracle на Ubuntu 13.04,
спасибо большущее,
Я ТЕБЯ ЛЮБЛЮ!!!!!!!!! :D

Оффлайн soarin

  • Старожил
  • *
  • Сообщений: 1850
  • ubuntu 20.04
    • Просмотр профиля
Re: Установка Оracle XE
« Ответ #3 : 12 Сентября 2013, 18:20:38 »
Извращенцы...
Kristyush,
Какая подписка? public-yum оракловский.
Oracle XE на oracle linux даже ребёнок поставит, главное чтоб версия подходила. Например СУБД 11.2 нормально ставится на oraclel linux 5.9, а с 6-ыми проблемы.
« Последнее редактирование: 12 Сентября 2013, 18:24:05 от soarin »

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.