[[ Установка Oracle Database 12c для Чайников на CentOS 7 ]]

CentOSOracle

Установка Oracle Database 12c для Чайников на CentOS 7

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0
Red Hat Enterprise Linux Server release 7.6 (Maipo)

Произведем установку в минимальной конфигурации в целях обучения и ознакомления.

Скачать

Качаем с официального сайта https://edelivery.oracle.com

Требуется зарегистрироваться!

Подготовка

Oracle Database Preinstallation Tasks

Установка пакетов, список из документации.

[root@server ~]$ yum install --setopt=skip_missing_names_on_install=False \
    binutils \
    compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 \
    gcc gcc-c++ \
    glibc.i686 glibc glibc-devel.i686 glibc-devel \
    ksh \
    libaio.i686 libaio libaio-devel.i686 libaio-devel.x86_64 \
    libgcc.i686 libgcc \
    libstdc++.i686 libstdc++ libstdc++-devel.i686 libstdc++-devel \
    libXi.i686 libXi libXtst.i686 libXtst \
    make sysstat

Установщик Oracle Database это приложение c GUI, поэтому необходимо установить X'ы на машину в самом минимальном варианте

[root@server ~]$ yum install --setopt=skip_missing_names_on_install=False \
    xorg-x11-server-Xorg xorg-x11-server-utils xorg-x11-xauth xorg-x11-utils xorg-x11-apps

Есть возможность установки без X'ов, но это совсем другая история.
Reasons for Using Silent Mode or Response File Mode

Дополнительно

[root@server ~]$ yum install unzip

Configuring Users, Groups and Environments for Oracle Database

Создание пользователей

[root@server ~]$ groupadd -g 54321 oinstall                  # Oracle Inventory group
[root@server ~]$ groupadd -g 54322 dba                       # Oracle administrative (SYSDBA) privileges group
[root@server ~]$ groupadd -g 54323 oper                      # This is an optional group. Oracle operator (SYSOPER) privileges.
[root@server ~]$ useradd -u 54321 -g oinstall -G dba oracle  # Oracle Software Owner User

Создание директорий

[root@server ~]$ mkdir -p /u01/app/oracle
[root@server ~]$ mkdir -p /u01/app/oraInventory
[root@server ~]$ chmod -R 775 /u01/app
[root@server ~]$ chown -R 770 /u01/app/oraInventory
[root@server ~]$ chown -R oracle:oinstall /u01/app

Changing Kernel Parameter Values

Настройки параметров ядра. Некоторые рекомендованные значения зависят от объема RAM, другие возьмем из документации.

[root@server ~]$ MEM=$(cat /proc/meminfo | grep MemTotal | head -n1 | tr -s [:blank:] ' ' | cut -d' ' -f 2)
[root@server ~]$ let "SHMALL=$MEM/10"
[root@server ~]$ let "SHMMAX=$MEM*1024/2"
[root@server ~]$ echo $SHMALL
26343020
[root@server ~]$ echo $SHMMAX
134876264448

/etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 26343020               <---------- SHMALL
kernel.shmmax = 134876264448           <---------- SHMMAX
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65535
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

Если сохранить параметры, например, в /etc/sysctl.d/97-oracle-database-sysctl.conf, то установщик их не найдет и выдаст WARNING при проверке.

Применить

[root@server ~]$ sysctl --system

Настройка лимитов

/etc/security/limits.conf

[root@server ~]$ nano 
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft core unlimited
oracle hard core unlimited
# at least 90 percent of the current RAM when HugePages memory is enabled and at least 3145728 KB (3 GB) when HugePages memory is disabled
oracle soft memlock 33554432
oracle hard memlock 33554432

Setting Remote Display and X11 Forwarding Configuration

Настройка разрешения X11Forwarding на сервере

/etc/ssh/sshd_config

X11Forwarding yes

[root@server ~]$ systemctl restart sshd

Переподключиться

[user@pc ~]# ssh -XC server.example.ru

Проверка

[user@server ~]$ ls -la ~/.Xauthority
-rw------- 1 user user 67 апр 27 12:30 /home/user/.Xauthority
 
 
# Узнаем значение screennumber для переменной DISPLAY
[user@server ~]$ xauth list
                       ↓↓
server.example.ru/unix:10 MIT-MAGIC-COOKIE-1 7ef68685c2e6eb06da473830aa350195
 
# Запустим демо приложение. Окно с часами должно открыться на рабочей машине.
[user@server ~]$ xclock
 
# Скопировать .Xauthority пользователю oracle
[user@server ~]$ sudo -i
[root@server ~]$ cp /home/user/.Xauthority /home/oracle/
[root@server ~]$ chown oracle:oinstall /home/oracle/.Xauthority
[root@server ~]$ su - oracle
[oracle@server ~]$ xauth list
server.example.ru/unix:10 MIT-MAGIC-COOKIE-1 7ef68685c2e6eb06da473830aa350195
[oracle@server ~]$ export DISPLAY=0.0.0.0:10
 
# Запустим демо приложение. Окно с часами должно открыться на рабочей машине.
[oracle@server ~]$ xclock

Установка

Запуск установщика

Закинуть архив дистрибутива на сервер, распаковать, запустить установку от имени oracle

[root@server ~]$ su - oracle
[oracle@server ~]$ ls -lh
total 2.6G
-rwxr-x--- 1 oracle contract 1.6G Apr 30 10:07 V46095-01_1of2.zip
-rwxr-x--- 1 oracle contract 968M Apr 30 10:08 V46095-01_2of2.zip
 
[oracle@server ~]$ unzip V46095-01_1of2.zip
[oracle@server ~]$ unzip V46095-01_2of2.zip
 
[oracle@server ~]$ du -ch database
2.8G total

[oracle@server ~]$ ./database/runInstaller
Starting Oracle Universal Installer...
 
Checking Temp space: must be greater than 500 MB.   Actual 24500 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2021-04-27_05-35-29PM. Please wait ...
[oracle@server ~]$
# Программа форкается и отпускает консоль

Откажемся от получения новостей.

Разница между Desktop и Server в количестве опций, которые будут предложены во время установки.

Разница между Typical и Advanced в количестве опций, которые будут предложены во время установки.

Оптимизация СУБД под задачи процессинга данных или хранилища.

Glossary

Global database name: Уникальное имя, которое идентифицирует базу данных в сети.

Oracle System Identifier (SID): Имя конкретного инстанса БД на хосте. Для красоты рекомендую в верхнем регистре.

Как правило Oracle ставят на отдельную машину, где все ресурсы отданы ему, в нашем случае следует ограничить его аппетиты памяти, это важно.

Выберите желаемую кодировку, поменять ее потом будет не так легко.

Задать пароль для системных пользователей.

Oracle recommends that the password entered should be at least string characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].

Проверка рекомендуемых требований к настройкам sysctl и т.п. В данном случае Oracle хочет больше SWAP'a, игнорируем.

Смотрим, проверяем.

Процесс установки

Установщик попросит запустить скрипты от root'a. Не нажимать OK, пока не выполнили.

[root@server ~]$ /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
 
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@server ~]$ /u01/app/oracle/product/12.1.0/dbhome_1/root.sh
Performing root user operation.
 
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0/dbhome_1
 
Enter the full pathname of the local bin directory: [/usr/local/bin]:    <---------- Диалог. Оставить как есть, нажать Enter
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
 
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

Если Oracle не сможет выделить тот объем памяти, который ему указали в настройках, то произойдет ошибка.

Настройка

Настройка переменных окружения пользователя oracle

[root@server ~]$ su - oracle

~/.bash_profile

...

# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
export ORACLE_SID=DSP
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH

Перезайти

[oracle@server ~]$ exit
[root@server ~]$ su - oracle

Установщик оставляет запущенной БД и listener.

Сразу после установки зайти в консоль sqlplus и сделать pfile (init<SID>.ora), без него БД не запуститься после остановки.

LRM-00109: could not open parameter file '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/init<SID>.ora'

[oracle@server ~]$ sqlplus / AS SYSDBA
SQL> create pfile from spfile;
 
File created.

[oracle@server ~]$ ls -lah  /u01/app/oracle/product/12.1.0/dbhome_1/dbs/
-rw-rw----  1 oracle oinstall 1.6K May 11 12:39 hc_DSP.dat
-rw-r--r--  1 oracle oinstall  966 May 11 12:43 initDSP.ora   <---------- pfile
-rw-r--r--  1 oracle oinstall 3.0K Feb  3  2012 init.ora
-rw-r-----  1 oracle oinstall   24 May 11 12:26 lkDSP
-rw-r-----  1 oracle oinstall 7.5K May 11 12:36 orapwDSP
-rw-r-----  1 oracle oinstall 2.5K May 11 12:39 spfileDSP.ora

Создадим systemd сервис

/etc/systemd/system/oracle-rdbms.service

# Invoking Oracle scripts to start/shutdown Instances defined in /etc/oratab and starts Listener
[Unit]
Description=Oracle Database(s) and Listener
Requires=network.target
 
[Service]
Type=forking
Restart=no
ExecStart=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart /u01/app/oracle/product/12.1.0/dbhome_1
ExecStop=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbshut /u01/app/oracle/product/12.1.0/dbhome_1
User=oracle
 
[Install]
WantedBy=multi-user.target

Перезагрузка конфигов

[root@server ~]$ systemctl daemon-reload
[root@server ~]$ systemctl enable oracle-rdbms

Утилита dbstart запускает listener и инстанс(ы) БД, указанные в файле oratab, которые помечены опцией 'Y' для запуска.

Отредактируем файл

/etc/oratab

- DSP:/u01/app/oracle/product/12.1.0/dbhome_1:N
+ DSP:/u01/app/oracle/product/12.1.0/dbhome_1:Y

Остановим БД и listener что бы проверить запуск

[oracle@server ~]$ sqlplus / AS SYSDBA
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@server ~]$ lsnrctl stop
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 28-APR-2021 16:31:34
 
Copyright (c) 1991, 2014, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
 
The command completed successfully

Пока сервис listener остановлен, можно поменять его конфиг:

  • Разрешить подключения с удаленных хостов, указав слушать все адреса;
  • Заменить SID на SERVICE_NAME (если коротко, то на имя БД), что бы пользователи сразу попадали в нужную pluggable database

$ORACLE_HOME/network/admin/listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
-     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
+     (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

$ORACLE_HOME/network/admin/tnsnames.ora

DSP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = server.example.ru)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
-     (SERVICE_NAME = DSP)
+     (SERVICE_NAME = PDBORCL)
    )
  )

Запускаем

[root@server ~]$ systemctl start oracle-rdbms
[root@server ~]$ systemctl status oracle-rdbms

Открыть БД

Starting Up and Shutting Down

Запустить БД Oralce еще не достаточно, что бы начать с ней начать работать.

[oracle@server ~]$ sqlplus / AS SYSDBA
SQL> show pdbs;                                         <---------- Список БД
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBORCL MOUNTED 0
 
 
SQL> ALTER session set container=PDBORCL;               <---------- Перейти в БД
Session altered.
 
SQL> ALTER DATABASE OPEN;                               <---------- Открыть БД
Database altered.
 
 
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 PDBORCL READ WRITE NO

Firewall

Откроем порты на firewall'e, если конечно он включен.

[root@server ~]$ firewall-cmd --add-port=1521/tcp --add-port=5500/tcp --add-port=5520/tcp --add-port=3938/tcp --permanent
[root@server ~]$ firewall-cmd --reload
[root@server ~]$ firewall-cmd --list-ports
1521/tcp 3938/tcp 5500/tcp 5520/tcp








Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
182 +13 = 
 
howto/oracle/oracle_db_12c_install.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki