Установка Oracle 10gR2 + Companion CD

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск

Здесь я не буду пытаться охватить все стороны данной темы, так как далеко не являюсь знатоком баз данных, а попробую лишь описать инсталяцию Oracle 10gR2 + Companion CD на Gentoo для поклонников этой операционной системы которые не захотят переходить на что-либо другое ради установки сабжа.

Требуется установленная система с Х-ами. В моём случае это была 2006.1 с KDE-3.5.2. (Cпросите почему KDE? Потому что удобно, можете закидать меня кедами :-)

[править] Подготовка:

# emerge libaio libstdc++ rpm
# ln -s /usr/bin/rpm /bin/
# ln -s /usr/lib/libstdc++-v3/libstdc++.so.5 /usr/lib/
Примечание: Почему-то исталятор оракла пытается найти эти файлы именно там :)

Проверьте размер swap'а, оракл требует не меньше 1 Гига. Если меньше – не беда, можно добавить:

# dd if=/dev/zero of=/root/tmpswp bs=1k count=500000
# mkswap /root/tmpswp
# swapon /root/tmpswp

Установка параметров ядра:

# nano /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
# sysctl -p

Добавление групп и пользователя от которого будет запускаться оракл и создание директории для установки:

# groupadd dba
# groupadd oinstall
# useradd -g oinstall -G dba -d /home/oracle -m oracle
# passwd oracle
# mkdir -p /opt/oracle
# chown -R oracle:oinstall /opt/oracle

Установка переменных окружения:

# nano /home/oracle/.bash_profile
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin/
export ORACLE_SID=ocla (или какой хотим ID сессии)
export ORACLE_HOSTNAME=localhost (или какой у нас хост, но имя должно резольвится) 
export LOGNAME=oracle

Изменение маскимального количества открытых файлов и запущеных процессов для пользователя oracle:

# nano /etc/security/limits.conf
oracle             soft    nofile  4096
oracle             hard    nofile  63536 
@dba               soft    nproc   2047
@dba               hard    nproc   16384
@oinstall          soft    nproc   2047
@oinstall          hard    nproc   16384
# nano /etc/profile
if [ "$USER" = "oracle" ]; then
  if [ "$SHELL" = "/bin/ksh" ]; then
     ulimit -p 16384
     ulimit -n 63536
    else
     ulimit -u 16384 -n 63536
  fi
fi

Распаковываем базу:

# unzip 10201_database_linux32.zip -d /tmp/
# chown -R oracle:oinstall /tmp/database

[править] Начинаем установку.

В Х-ксах запускаем консоль от пользователем под которым заупущены сами Х-ы. В ней:

$ xhost +
$ echo $DISPLAY

у меня пишет:

:0.0

но могут быть варианты

$ su - oracle
$ export DISPLAY=:0.0 (или то что написало)
$ cd /tmp/database
$ ./runInstaller -IgnoreSysPrereqs

В принципе я ставил Enterprise Edition и всё по-умолчанию, устанавливаем пароли (или пароль), после проверки параметров системы можно проигнорировать предупреждения о неверной версии операционной системы и недостаточном размере свопа/памяти, на другие предупреждения советую обратить внимание и добиться того чтобы их не выдавало (прервать инсталяцию, исправить и запустить заново). В конце установки выполняем скрипты которые требуется от root'а.

После установки запускается база, isqplus и Enterprise manager, что можно проверить, для этого от пользователя oracle:

$ tnsping ocla (или SID кот. указали при установке базы, по-простому имя БД)

и в браузере, не обязательно от пользователя oracle :-)

http://localhost:5560/isqlplus
http://localhost:1158/em
Примечание: В конце установки инсталятор выдаёт сообщение со списком ссылок, так что номера портов могут и не совпадать с моими :)

После установки нужно поправить конфиг в котором указывается какие базы запускать и скрипт который их запускает. От root'а:

# nano /etc/oratab
ocla:/opt/oracle/product/10.2.0/db_1:Y

От oracle :

$ nano /opt/oracle/product/10.2.0/db_1/bin/dbstart
исправить
ORACLE_HOME_LISTNER=/opt/oracle/product/10.2.0/db_1
Примечание: По-умолчанию там стоит судя по-всему имя каталога разработчика кот. писал этот скрипт :)

Если установка htmldb не требуется переходим к написанию стартовых скриптов, если же всё требуется тогда:

# unzip 10201_companion_linux32.zip -d /tmp/
# chown -R oracle:oinstall /tmp/companion

в консоли от oracle:

$ cd /tmp/companion
$ ./runInstaller -IgnoreSysPrereqs

И вот здесь обязательно: htmldb нужно установить в отдельный каталог, для этого меняем Name и Path например так OraHTMLDb10g_home1 /opt/oracle/product/10.2.0/htmldb_1 а когда будет спрашивать пароли и ID базы для установки вводим то с чем поставили базу, конечно для htmldb пароль можно поставить другой но не обязательно :-) Снова понеслась .... :-)

В конце установки скрипт от рута выполняем без замены файлов в /usr/local/bin. После установки htmldb запущена, что можно проверить:

http://localhost:7777/pls/htmldb/htmldb_admin
Логин: admin
Пароль: тот что ставили при устновке HTMLDB

Для автоматического запуска оракла во время загрузки пишем скрипты: от пользователя oracle

$ mkdir /opt/opracle/bin
$ nano /opt/oracle/bin/rundb.sh


Файл: /opt/oracle/bin/rundb.sh
#!/bin/bash
 DB_HOME=/opt/oracle/product/10.2.0/db_1
 HTMLDB_HOME=/opt/oracle/product/10.2.0/htmldb_1 # если устанавливали htmldb

 export ORACLE_BASE=/opt/oracle
 export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
 export PATH=$PATH:$ORACLE_HOME/bin/
 export ORACLE_SID=ocla 
 export ORACLE_HOSTNAME=localhost
 export LOGNAME=oracle

 case "$1" in
      'start')
        $DB_HOME/bin/dbstart
        $DB_HOME/bin/isqlplusctl start # если нужен запуск isqlplus'а
        $DB_HOME/bin/emctl start dbconsole # если нужен запуск Enterprise manager'а
        $HTMLDB_HOME/opmn/bin/opmnctl startall  # если устанавливали htmldb
      ;;
      'stop')
        $HTMLDB_HOME/opmn/bin/opmnctl stopall # если устанавливали htmldb
        $DB_HOME/bin/emctl stop dbconsole # если нужен запуск Enterprise manager'а
        $DB_HOME/bin/isqlplusctl stop # если нужен запуск isqlplus'а
        $DB_HOME/bin/dbshut
        $DB_HOME/bin/lsnrctl stop
      ;;
 esac


От рута:

  1. nano /etc/init.d/oracle
Файл: /etc/init.d/oracle
#!/sbin/runscript
depend() {
        use logger dns
        need net logger hostname clock
}
DB_ROOT=/opt/oracle
ORACLE_OWNER=oracle
start() {
        ebegin "Starting Oracle"
        /bin/su  $ORACLE_OWNER -c "$DB_ROOT/bin/rundb.sh start"
        eend $? "Failed to start Oracle."
}
stop() {
        ebegin "Stopping Oracle"
        /bin/su  $ORACLE_OWNER -c "$DB_ROOT/bin/rundb.sh stop"
        eend $? "Failed to stop Oracle."
}
# rc-update add oracle default

Если у вас что-то не получилось, дополнительную информацию можно найти здесь:

HOWTO Install Oracle 10g

Огромное спасибо за поддержку Serg (serg[at]sn.dp.ua) и Alien (alien[at]icon3.ru), за стартовый скрипт который я у себя упростил до безобразия, оригинал здесь:

Как я Установил ORACLE 10 r2 на Gentoo 2005.1
Личные инструменты