Установка 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)
Произведем установку в минимальной конфигурации в целях обучения и ознакомления.
Скачать
Подготовка
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 в количестве опций, которые будут предложены во время установки.
Оптимизация СУБД под задачи процессинга данных или хранилища.
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
Открыть БД
Запустить БД 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
Обсуждение