
Установка Java, Oracle 11g на Debian/Ubuntu/Mint
Недавно я попытался установить Oracle 11g на 64-битной Ubuntu. Это оказалось не так просто, как можно было бы ожидать. Есть много блогов и статей на эту тему и я попробовал их все. Но мало что работало, я пробовал и пробовал найти решение и собрал все необходимое в статье «Установка Java, Oracle 11g на Debian/Ubuntu/Mint».
Установка Java
Т.к Oracle работает на java, то нужно нам ее установить. Начнем с установки Java на машине. Мое личное предпочтение использовать Oracle Java JDK. Установка этого JDK не сложная и не займет много вашего времени.
Добавим репозиторий java:
# sudo add-apt-repository ppa:webupd8team/java
Обновим систему:
Устанавливаем java-1.7:
В ходе установки нажимаем «OK» и соглашаемся с лицензий нажав на «YES». После чего начнется установка. Можно проверить какую версию java мы используем:
Следующий шаг — установить переменную окружения JAVA_HOME. Чтобы сделать это, откройте:
# sudo vim·/etc/bash.bashrc
#листаем в самый низ файла и добавляем следующие строки кода
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export PATH=$JAVA_HOME/bin:$PATH
Сохраните файл и закройте редактор. Чтобы загрузить изменения, выполните следующую команду:
# source /etc/bash.bashrc
Проверяем работу:
Результатом этого заявления должны быть следующие:
/usr/lib/jvm/java-7-oracle
Установка Oracle 11g
Для установки Oracle 11g R2 Express Edition (XE), нужно установить пару дополнительных пакетов. Эти пакеты могут быть установлены путем выполнения следующей команды:
Перейдем в папку:
Нужно скачать oracle 11 с официального сайта (буду думать что уже скачали) затем нужно установить его.
Следующим шагом будет распаковка скачанного архива с оракл:
# unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
Данный архив довольно большой и на распаковку потребуется некоторое время, ждем окончания и после чего переходим в нужную директорию для установки:
Теперь мы должны преобразовать пакет Red Hat (RPM) в пакет Debian. Это может быть сделано с помощью команды alien. Параметр «-d » используется для информирования, что пакет Debian уже сформирован. Выполняем преобразование:
#·sudo alien --scripts -d·oracle-xe-11.2.0-1.0.x86_64.rpm
Этот шаг может занять некоторое время, мне потребовалось подождать около минут 15 наверное, по этому если хотите жди окончания, а можно еще открыть один терминал для работы и в нем уже выполнять следующие шаги.
Пакет Red Hat, полагается на файл /sbin/chkconfig, который не используется в Ubuntu. Для успешной установки Oracle XE мы используем простой трюк.
#·sudo vim·/sbin/chkconfig
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
#EOF
Сохраните файл и закройте редактор. Теперь мы должны предоставить файл с соответствующими привилегиями исполнения.
#·sudo chmod 755 /sbin/chkconfig
Установим дополнительные параметры ядра. Откройте файл, выполнив:
#·sudo vim·/etc/sysctl.d/60-oracle.conf
Скопируйте и вставьте следующий код в файле. Kernel.shmmax является максимально возможное значение физической памяти в байтах. 536870912/1024/1024 = 512 Мб.
# 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 restart
Изменения могут быть вновь проверено командой:
# sudo sysctl -q fs.file-max
Должны увидеть следующий вывод на экран:
После этого, выполните следующие инструкции, чтобы сделать еще несколько необходимых изменений:
# sudo ln -s /usr/bin/awk /bin/awk
# mkdir /var/lock/subsys
# touch /var/lock/subsys/listener
Все сделал, но осталось установить уже пересобранный пакет (убедитесь в этом хорошо, а то не будет работать):
Возможно вы увидите следующее сообщение о ошибке «Execute the following to avoid getting a ORA-00845: MEMORY_TARGET error. Note: replace “size=4096m” with the size of your (virtual) machine’s RAM in MBs.«Исправляем это с легкостью.
Нужно удалить папку:
Создаем папку:
Монтируем папку для работы:
# sudo mount -t tmpfs shmfs -o size=4096m /dev/shm
Создаем файл и пропишем параметры в него
#·sudo vim·/etc/rc2.d/S01shm_load
#!/bin/sh
case "$1" in
start) mkdir /var/lock/subsys 2>/dev/null
touch /var/lock/subsys/listener
rm /dev/shm 2>/dev/null
mkdir /dev/shm 2>/dev/null
mount -t tmpfs shmfs -o size=4096m /dev/shm ;;
*) echo error
exit 1 ;;
esac
Сохраните файл, закройте редактор и предоставить соответствующие привилегии выполнения:
# sudo chmod 755 /etc/rc2.d/S01shm_load
После такого должно все заработать!
Настройка Oracle 11g
Если вы успешно установили на сервер Oracle 11g, пора настроить сервер. Чтобы начать конфигурацию сервера, выполните следующую команду и следовать «wizard» в терминале. Значения по умолчанию показаны в скобках для каждого вопроса.
#·sudo /etc/init.d/oracle-xe configure
Теперь настало время для настройки некоторых параметров для переменных среды:
#·sudo vim·/etc/bash.bashrc
#В самый низ добавляем следующие строки
[...]
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
Сохраните файл и закройте редактор. Чтобы загрузить изменения, выполните следующую инструкцию:
#·source /etc/bash.bashrc
Чтобы проверить изменения, которые вы можете выполните:
Должны увидеть следующее:
/u01/app/oracle/product/11.2.0/xe
После этого шага рекомендуется перезагрузить компьютер. После перезагрузки запускаем сервер с oracle:
# sudo service oracle-xe start
reconfigure Oracle
Нужно было мне переконфигурировать настройки oracle, долго мучался и не знал что и как сделать, но после долгого старания, все таки нашел решение. Сейчас я покажу как это сделать. Открываем файл и немного мы его видоизменим:
# vim·/etc/default/oracle-xe
[...]
#Ищем строчку
CONFIGURE_RUN=true
# заменяем на следующую
CONFIGURE_RUN=false
[..]
И после этого можно запустить уже переконфигурацию настроек сервера с ораклом:
# sudo /etc/init.d/oracle-xe configure
Бывает так, что не помогает и это, тогда просто удаляем файл с настройками и запускаем переконфигурирование:
# rm -rf·/etc/default/oracle-xe
# sudo /etc/init.d/oracle-xe configure
Должно работать! Проверено!
Удаление Oracle
Чтобы это сделать нужно выполнить:
#·sudo dpkg --purge oracle-xe
или можно вот так:
#··apt-get autoremove oracle-xe
Удаляем все файлы и папки с настройками:
# sudo rm -rf /u01/app/oracle/
# sudo rm -rf /etc/default/oracle-xe
# sudo rm -rf /etc/init.d/oracle-xe
Вот такое простое удаление.
Работа с Oracle 11g
Чтобы можно было работать с sqlplus и другие программами, пользователь Oracle требует специфичных переменных окружения. Я ниже сделал описание, как сделать, чтобы эти переменные устанавливались автоматически при каждом входе в Oracle:
Копируем все нужны для работы файлы пользователя и добавьте в .profile скрипт Oracle env:
#·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
Настройка удаленного доступа.
По дефолту, графический часть юзера Oracle Database XE доступна только на locahost. Но нужно я сейчас активирую удаленный доступ к графическому интерфейсу.
Чтобы это изменить нужно для начала войти как юзер Oracle, далее, войдем в систему управления БД как SYSDBA:
#·su - oracle
#·sqlplus / as sysdba
# SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
# exit
ВСЕ!
Не получается войти в админскую часть которая на сайте? Сейчас исправим это:
#·su - oracle
# cd $ORACLE_HOME/apex
# sqlplus / as sysdba
# @apxconf.sql
Вводим новый пароль и порт на котором размещен сервер oracle, после чего открываем браузер и переходим в админ часть, у меня это выглядит следующим образом:
http://178.62.54.68:8081/apex
http://178.62.54.68:8081/apex_admin
Создание нового пользователя в Oracle 11.
Подключаемся чтобы создать пользователя:
#·su - oracle
#·sqlplus / as sysdba
Создаем пользователя «captain» с паролем «captain»:
#·CREATE USER captain IDENTIFIED BY captain;
Даем только что созданному юзеру право на подключение к базе:
#·GRANT CONNECT TO captain;
Даем так же права на использование ресурсов:
#·GRANT RESOURCE TO captain;
Даем право на использование таблицы:
# GRANT ALL ON captain.tablename TO captain;
Создание новой базы данных (БД) в Oracle 11.
Подключаемся:
#·su - oracle
#·sqlplus / as sysdba
или выполняем:
После чего вводим пользователя ( я например его создал немного выше, имя которого — captain) и пароль.
Создаем БД (создам 3 базы):
SQL> create database oracleitoutsourcer;
SQL> create database oracleclients;
SQL> create database oraclevnuk;
У меня возникла проблема, показало ошибку «ORA-01100: database already mounted«, решаем ее следующим образом:
SQL>shutdown immediate;
SQL>startup nomount;
После чего можно уже создавать свои базы данных и использовать их. Если нужно подключится к серверу oracle с другого сервера (UnixLinux), то это делается следующим образом:
# ssh -X oracle@server_or_ip_address
На этом завершаю я свою тему «Установка Java, Oracle 11g на Debian/Ubuntu/Mint» и благодарю за использование сайта http://linux-notes.org