Установка Oracle Database 11gR2 на CentOS 6.5

Задача – установить Oracle Database 11gR2 на CentOS 6.5. Система при этом установлена в минимальной конфигурации из образа CentOS-6.5-x86_64-minimal.iso without all bells and whistles. Графический интерфейс не используется.

Disclaimer: инструкция “для себя”, делалась на скорую руку, но общие принципы работают.

После установки и первоначальной настройки системы, добавляем репозиторий и ключ Oracle:

1
2
3
cd /etc/yum.repos.d
sudo wget --no-check-certificate https://public-yum.oracle.com/public-yum-ol6.repo
sudo wget --no-check-certificate https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

Ключ --no-check-certificate используется из-за того, что wget у нас версии 1.12, а поддержка SNI появилась только в 1.14.

Устанавливаем мета-пакет oracle-rdbms-server-11gR2-preinstall, он произведёт часть подготовительных операций:

1
sudo yum install oracle-rdbms-server-11gR2-preinstall

Чтобы не иметь проблем с разрешением собственного адреса, добавляем имя хоста в /etc/hosts:

/etc/hosts
1
2
127.0.0.1   db-oracle localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         db-oracle localhost localhost.localdomain localhost6 localhost6.localdomain6

Устанавливаем пароль пользователя oracle:

1
sudo passwd oracle

Меняем лимиты и политику SELinux:

/etc/security/limits.d/90-nproc.conf
1
2
3
4
5
6
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     16384
root       soft    nproc     unlimited
/etc/selinux/config
1
SELINUX=permissive

И перезагружаемся.

Добавляем переменные окружения в профиль пользователя oracle:

/home/oracle/.bash_profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=db-oracle
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/var/lib/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export TZ=UTC/GMT

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

1
2
3
4
5
6
sudo mkdir -p /var/lib/oracle/product/11.2.0/dbhome_1
sudo chown -R oracle:oinstall /var/lib/oracle
sudo chmod -R 775 /var/lib/oracle
sudo mkdir -p /var/lib/oraInventory
sudo chown -R oracle:oinstall /var/lib/oraInventory
sudo chmod -R 775 /var/lib/oraInventory

Создаём файл ответов для инсталлятора:

/home/oracle/db.rsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_AND_CONFIG
ORACLE_HOSTNAME=db-oracle
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/var/lib/oraInventory
SELECTED_LANGUAGES=en,ru
ORACLE_HOME=/var/lib/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/var/lib/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryLimit=748
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.installExampleSchemas=true
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/var/lib/oracle/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=

Скачиваем дистрибутив в домашнюю директорию пользователя oracle. Распаковываем и запускаем установщик:

1
2
3
4
5
6
sudo su - oracle
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
rm linux.x64_11gR2_database_*
cd database/
./runInstaller -responseFile ~/db.rsp -silent -nowelcome -ignorePrereq

В самом конце установщик попросит выполнить пару скриптов от имени пользователя root. Выполняем.

1
2
/var/lib/oraInventory/orainstRoot.sh
/var/lib/oracle/product/11.2.0/dbhome_1/root.sh

Ну и для полноты картины – init-скрипт для автоматического запуска Oracle Database:

/etc/init.d/oracle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 90 10
# description: The Oracle Database Server is an RDBMS created by Oracle Corporation
#
# processname: oracle

. /etc/rc.d/init.d/functions

LOCKFILE=/var/lock/subsys/oracle
ORACLE_USER=oracle

case "$1" in
  'start')
      if [ -f $LOCKFILE ]; then
          echo $0 already running.
          exit 1
      fi
      echo -n $"Starting Oracle Database:"
      su - $ORACLE_USER -c '$ORACLE_HOME/bin/lsnrctl start'
      su - $ORACLE_USER -c '$ORACLE_HOME/bin/dbstart $ORACLE_HOME'
      su - $ORACLE_USER -c '$ORACLE_HOME/bin/emctl start dbconsole'
      touch $LOCKFILE
  ;;
  'stop')
      if [ ! -f $LOCKFILE ]; then
          echo $0 already stopping.
          exit 1
      fi
      echo -n $"Stopping Oracle Database:"
      su - $ORACLE_USER -c '$ORACLE_HOME/bin/lsnrctl stop'
      su - $ORACLE_USER -c '$ORACLE_HOME/bin/dbshut $ORACLE_HOME'
      su - $ORACLE_USER -c '$ORACLE_HOME/bin/emctl stop dbconsole'
      rm -f $LOCKFILE
  ;;
  'restart')
      $0 stop
      $0 start
  ;;
  'status')
      if [ -f $LOCKFILE ]; then
          echo $0 started.
      else
          echo $0 stopped.
      fi
  ;;
  *)
      echo "Usage: $0 [start|stop|status]"
      exit 1
esac

exit 0
1
2
chkconfig --add oracle
chkconfig --list oracle

В файле /etc/oratab меняем последнюю строчку:

/etc/oratab
1
orcl:/var/lib/oracle/product/11.2.0/dbhome_1:Y

Не забываем разрешить 1158/tcp и 1521/tcp в правилах файерволла, если нужно.

Комментарии