Установка Oracle Database на Ubuntu — задача, которая может показаться сложной из-за различий между дистрибутивами Linux. Oracle официально поддерживает Red Hat и Oracle Linux, но это не значит, что на Debian-системах она невозможна. Давай разберем пошаговый процесс, который позволит тебе развернуть полноценный экземпляр Oracle для разработки или тестирования на Ubuntu.
Представь, что это твой личный чек-лист от опытного DevOps-инженера. Мы пройдем через все этапы: от подготовки системы до первого подключения к базе данных, обращая внимание на подводные камни.
Подготовка системы Ubuntu к установке Oracle
Перед тем как начать установку Oracle Database, необходимо правильно подготовить операционную систему. Oracle предъявляет специфические требования к ресурсам и конфигурации.
Требования к системе
| Компонент | Минимальные требования | Рекомендуемые |
|---|---|---|
| Оперативная память | 1 ГБ | 4 ГБ и более |
| Дисковое пространство | 10 ГБ | 50 ГБ для данных |
| Процессор | 2 ядра | 4+ ядер |
| Версия Ubuntu | 20.04 LTS, 22.04 LTS | |
Установка необходимых пакетов
Первым делом обновим систему и установим пакеты, необходимые для работы Oracle:
sudo apt update && sudo apt upgrade -y
sudo apt install -y alien libaio1 libaio-dev unzip \
build-essential libstdc++6 libcap1 libelf1 \
libgcc-s1 libstdc++6 ksh libnuma1 sysstat \
bc rpm lsb-release libnsl2 libnsl-dev
Настройка параметров ядра и системы
Oracle требует специфических настроек ядра Linux. Давай настроим их правильно.
Настройка sysctl.conf
Отредактируем файл конфигурации ядра:
sudo nano /etc/sysctl.conf
Добавь или измени следующие параметры в конце файла:
# Oracle Database параметры
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.ip_local_port_range = 9000 65500
vm.swappiness = 10
Примени изменения:
sudo sysctl -p
Создание пользователей и групп
Oracle требует наличия специальных пользователей и групп:
sudo groupadd -g 54321 oinstall
sudo groupadd -g 54322 dba
sudo groupadd -g 54323 oper
sudo groupadd -g 54324 backupdba
sudo groupadd -g 54325 dgdba
sudo groupadd -g 54326 kmdba
sudo groupadd -g 54327 asmdba
sudo groupadd -g 54328 asmoper
sudo groupadd -g 54329 asmadmin
sudo useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin oracle
sudo passwd oracle
Настройка лимитов для пользователя oracle
Создадим файл с ограничениями:
sudo nano /etc/security/limits.d/oracle.conf
Добавь следующие строки:
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
Подготовка директорий и загрузка Oracle
Создание структуры каталогов
sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
sudo mkdir -p /u01/app/oracle/oradata
sudo mkdir -p /u01/app/oraInventory
sudo mkdir -p /u01/app/oracle/fast_recovery_area
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01
Загрузка Oracle Database
Скачай Oracle Database 19c с официального сайта Oracle (требуется регистрация). Файлы будут в формате .zip:
# Переходим в домашнюю директорию oracle
sudo su - oracle
# Создаем директорию для загрузок
mkdir -p /home/oracle/downloads
cd /home/oracle/downloads
# Здесь должны быть файлы:
# LINUX.X64_193000_db_home.zip
# LINUX.X64_193000_grid_home.zip (опционально)
Распаковка и установка Oracle Database
Распаковка архива
cd /home/oracle/downloads
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
Настройка переменных окружения
Добавим настройки в .bashrc пользователя oracle:
nano ~/.bashrc
Добавь в конец файла:
# Oracle Settings
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=RUSSIAN_RUSSIA.AL32UTF8
export TNS_ADMIN=\$ORACLE_HOME/network/admin
Примени изменения:
source ~/.bashrc
Запуск установщика Oracle
Теперь запустим графический установщик Oracle Universal Installer:
cd $ORACLE_HOME
./runInstaller
sudo apt install xorg openbox и установи переменную DISPLAY: export DISPLAY=:0
Ключевые шаги в установщике
- Выбери "Set Up Software Only" (только установка ПО)
- Укажи ORACLE_BASE: /u01/app/oracle
- Укажи ORACLE_HOME: /u01/app/oracle/product/19.0.0/dbhome_1
- Выбери группы: oinstall (привилегированная), dba (стандартная)
- Пропусти проверку prerequisites (мы уже настроили систему вручную)
- Заверши установку
Запуск скриптов от root
После установки запусти скрипты от имени root:
# Выйди из пользователя oracle
exit
# Запусти скрипты от root
sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
Создание базы данных Oracle
Запуск Database Configuration Assistant
Вернись в пользователя oracle и запусти DBCA:
sudo su - oracle
dbca
Параметры создания базы данных
- Выбери "Create a database"
- Выбери "Advanced configuration"
- Тип базы: "General Purpose or Transaction Processing"
- Имя БД: orcl (или свое)
- Конфигурация хранения: File System
- Расположение файлов: Use Common Location - /u01/app/oracle/oradata
- Fast Recovery Area: включи, путь /u01/app/oracle/fast_recovery_area
- Пароли: установи единый пароль для системных пользователей
- Память: настрой автоматическое управление (AMM)
- Характеристики: оставь по умолчанию
- Заверши создание
Проверка установки и подключение
Проверка статуса базы данных
sqlplus / as sysdba
SQL> SELECT name, open_mode FROM v$database;
SQL> SELECT * FROM v$version;
SQL> exit
Настройка автоматического запуска
Создадим службу для автоматического запуска Oracle:
sudo nano /etc/systemd/system/oracle.service
Добавь содержимое:
[Unit]
Description=Oracle Database
After=network.target
[Service]
Type=simple
RemainAfterExit=yes
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
Environment="ORACLE_SID=orcl"
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME
[Install]
WantedBy=multi-user.target
Активируй службу:
sudo systemctl daemon-reload
sudo systemctl enable oracle.service
sudo systemctl start oracle.service
sudo systemctl status oracle.service
Частые проблемы и их решения
1. Ошибка линковки
Проблема: Ошибки при запуске sqlplus или других утилит Oracle
Решение: Проверь переменные LD_LIBRARY_PATH и установи недостающие библиотеки:
sudo apt install libnsl2 libnsl-dev libaio1
2. Недостаточно памяти shared memory
Проблема: ORA-27102: out of memory
Решение: Увеличь размер shared memory:
sudo nano /etc/sysctl.conf
# Увеличь kernel.shmmax и kernel.shmall
sudo sysctl -p
3. Проблемы с кодировкой
Проблема: Кракозябры в выводимом тексте
Решение: Установи правильную локаль и NLS_LANG:
export NLS_LANG=RUSSIAN_RUSSIA.AL32UTF8
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
Оптимизация производительности
- Используй Automatic Memory Management (AMM) для упрощения управления памятью
- Настрой Fast Recovery Area для автоматического бэкапа
- Регулярно обновляй патчи Oracle для безопасности и стабильности
- Используй мониторинг через Enterprise Manager или сторонние инструменты
- Настрой автоматическое расширение табличных пространств чтобы избежать ошибок нехватки места
Заключение
Установка Oracle Database на Ubuntu требует внимания к деталям, но вполне выполнима. Ключевые моменты успеха:
- Тщательная подготовка системы (пакеты, настройки ядра)
- Правильная настройка пользователей и прав доступа
- Внимание к переменным окружения
- Понимание различий между дистрибутивами Linux
Теперь у тебя есть рабочая среда Oracle для разработки и тестирования. Помни, что для production-сред рекомендуется использовать официально поддерживаемые дистрибутивы, но для локальной разработки этот вариант отлично подходит.