Документация iSZN

12. Установка и настройка СУБД Oracle на Linux-сервере

Подготовка к установке Oracle

ORAINST-I

Скопировать во временный каталог файлы1) orainst.pl, dbora.

Сконвертировать все переводы строк в этих файлах в UNIX-стандарт командой:

dos2unix *.pl dbora

Выполнить в этом каталоге команду:

perl orainst.pl -i

BASEDIRS

Из-под root сделать пользователя oracle и группу oinstall владельцами каталогов, в которых будут храниться файлы базы данных.

chown -R oracle:oinstall /Base?

ORACLE-INSTALL: Установка Oracle

Подготовка

Выполнить действия, требуемые скриптом orainst.pl:

  • Зайти как oracle на другой консоли.
  • Запустить X Window (startx).
  • Вставить и смонтировать первый диск дистрибутива Oracle 9i.
  • Не делать cd в каталог со смонтированным компакт-диском, иначе потом его невозможно будет размонтировать.

Для предотвращения ошибки2) при запуске установщика необходимо выполнить скрипты gccFedora/gccfedora.sh и gccFedora/rpm/rpm.sh (при этом находясь внутри каталогов, в которых они расположены).

В CentOS 5.1 необходимо дополнительно установить пакет libXp. Это делается командой yum install libXp.

Установка

  • Запустить /mnt/cdrom/runInstaller (либо /media/cdrom/runInstaller, либо /media/cdrecorder/runInstaller).
  • Установить Oracle в каталог /opt/oracle (создаётся в orainst.pl); Inventory будет в /opt/oracle/oraInventory.
  • Unix Group Name: oinstall.
  • Destination: Oracle Home Name — Ora920, Path — /opt/oracle/product/9.2.0.
  • Выбрать установку Oracle Database, Enterprise Edition (2.04 GB).
  • В качестве модели базы данных выбрать только Data Warehouse.
  • Имя базы данных и Service: orcl.
  • Файлы баз данных помещать в каталог /opt/oracle/oradata.
  • Кодировку базы данных выбрать явно: Cyrillic CL8MSWIN1251.

Проблемы при линковке

ins_oemagent.mk: около 70%

Ошибка «Error in invoking target install of makefile /opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk».

Необходимо выполнить следующие действия (не нажимая кнопок в диалоге ошибки):

  • Заменить файл /opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk готовым, исправленным файлом ins_oemagent.mk

или

  • Открыть в редакторе файл /opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk.
  • В строке 18: LDFLAGS= … после $(STDMODE) добавить параметр L$(LIBHOME)/stubs.
  • Записать файл.
  • Нажать на кнопку Retry в диалоге ошибки.

ins_ctx.mk: около 85%

В диалоге с сообщением об ошибке «Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk» нажать на кнопку Ignore.

Запуск Oracle Enterprise Manager

Для работы с табличными пространствами необходимо открыть Oracle Enterprise Manager (OEM). Он автоматически запускается после выхода из инсталлятора Oracle. Кроме того, OEM может также быть запущен на рабочей станции с установленным Oracle Client'ом или на сервере (из-под X Window) командой oemapp console.

С помощью Oracle Enterprise Manager открыть локальный сервер (логин SYS, вход в качестве SYSDBA), раздел Storage.

Создание табличных пространств

Создать два табличных пространства:

  • NEW в датафайле /opt/oracle/oradata/NEW.dbf,
  • NEW_I в датафайле /Base2/NEW_I.dbf (при наличии только одного диска — /opt/oracle/oradata/NEW_I.dbf).

Если база будет очень большой и на диске для этого имеется свободное место, можно создать несколько датафайлов с предельным максимальным размером (32767 МБ).

  • Для датафайлов обоих табличных пространств включить Autoextend (автоматическое расширение) с шагом в 100 Мбайт. Файлы расширятся до нужного размера при первом восстановлении дампа.
  • Максимальный размер всех датафайлов рабочих табличных пространств, а также временного и откатного (TEMP и UNDOTBS) нужно ограничить так, чтобы при их одновременном расширении до этого размера на разделе осталось ещё несколько гигабайт свободного пространства.

Следует учитывать, что ограничения на максимальный размер табличных пространств NEW, NEW_I, TEMP и UNDOTBS должны быть не ниже 5 Гбайт каждое.

ORAINST-F

Закрыть Enterprise Management Console. Из-под root выполнить завершение установки: perl orainst.pl -f.

Создание файла настроек базы данных

INITORCL.ORA

Переместить файл initorcl.ora и открыть его для редактирования:

mv /opt/oracle/admin/orcl/pfile/initorcl.ora.* /opt/oracle/product/9.2.0/dbs/initorcl.ora
mcedit /opt/oracle/product/9.2.0/dbs/initorcl.ora

В разделе [Optimizer] исправить:

star_transformation_enabled=FALSE

Добавить:

query_rewrite_integrity=TRUSTED
optimizer_index_cost_adj=75

В разделе [Pools] исправить:

java_pool_size=150000000
shared_pool_size=150000000

В конец файла добавить:

utl_file_dir='/FiServ'

CREATE-SPFILE

Под пользователем oracle выполнить:

cd /opt/oracle/product/9.2.0/dbs
sqlplus "/ as sysdba"

В запустившемся sqlplus выполнить следующие команды

shutdown immediate
create spfile from pfile='initorcl.ora';

Должно появиться сообщение «File created». После этого надо выйти из sqlplus (quit или exit).

REBOOT

Перезагрузить сервер (reboot) и проверить запуск Oracle. После перезагрузки инстанция должна запуститься сама, то есть команда ps ax | grep ora_ должна показывать процессы tnslsnr, ora_pmon_orcl, ora_dbw0_orcl, ora_lgwr_orcl, ora_ckpt_orcl, ora_smon_orcl, ora_reco_orcl, ora_cjq0_orcl, ora_qmn0_orcl, ora_s000_orcl, ora_d000_orcl. В случае установки shared_servers также должны присутствовать процессы серверов ora_sXXX_orcl.

Установка патчсета

PATCHSET-INSTALL

Для патчсета 9.2.0.6 нужно исправить версию дистрибутива в /etc/redhat-release, иначе установщик патчсета не запустится:

echo 3 > /etc/redhat-release

Для патчсета 9.2.0.8 содержимое файла с версией дистрибутива должно быть исправлено следующим образом:

echo "Red Hat Enterprise Linux ES release 4 (Nahant)" > /etc/redhat-release

После этого необходимо остановить экземпляр СУБД Oracle. Из под root выполнить: /etc/init.d/dbora stop

Предположим, что архив с патчсетом находится в каталоге /FiServ и называется Oracle_9.2.0.6_Linux.zip. Последовательность команд:

# Переходим во временный каталог
cd /tmp

# Распаковываем архив с патчсетом
unzip /FiServ/Oracle_9.2.0.6_Linux.zip

# Устанавливаем полный доступ ко всем распакованным файлам для всех пользователей
chmod -R 777 Disk1

# Переходим в каталог с установщиком
cd Disk1/install/

# Запускаем установщик
./runInstaller

При первом запуске необходимо выбрать установку продукта Oracle Universal Installer. После завершения установки Universal Installer'а закрыть установщик и запустить его заново. Только после этого выбирать установку Oracle Patchset.

PATCHSET-CATPATCH

Пользователем oracle выполнить:

cd /opt/oracle/product/9.2.0
sqlplus "/ as sysdba"

В запустившемся sqlplus выполнить:

spool patch.sql
startup migrate
@rdbms/admin/catpatch.sql

Дождаться завершения выполнения скрипта (выполняется более получаса) и проверить отображаемые в консоли результаты установки. Версии установленных продуктов должны соответствовать версии патчсета, состояние должно быть VALID, UPGRADED либо OPTION OFF.

Всё ещё находясь в sqlplus, выполнить:

spool off
shutdown
startup

Выйти из sqlplus.

PATCHSET-LOWMEM

Если на сервере менее 1 Гбайта ОЗУ: отредактировать файл /opt/oracle/product/9.2.0/dbs/initorcl.ora:

В разделе [Pools]:

java_pool_size=50000000 [исправить существующий]
shared_pool_size=50000000 [исправить существующий]

Повторить шаг CREATE-SPFILE.

LOADJAVA

Из-под пользователя oracle выполнить:

loadjava -user sys/<пароль пользователя SYS> -r -s -g public /opt/oracle/product/9.2.0/jlib/regexp.jar

DBSHUT-FIX

Подправить скрипт завершения работы СУБД dbshut на использование команды немедленного отключения (shutdown immediate).3)

Под пользователем oracle:

vi `which dbshut`

Все (два) вхождения shutdown (кроме строки sqldba command=shutdown) заменить на shutdown immediate, либо скопировать готовый (уже исправленный) файл dbshut в каталог /opt/oracle/product/9.2.0/bin/.

См. также

1) Архив с этими и другими необходимыми при установке базы данных iSZN под Linux файлами находится по адресу http://files.ites.ru/iszn/private/oracle-linux-iszn-install-pack.tar.gz (12 МБ).
2) Unable to load native library... libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6...
3) Если этого не сделать, при выключении или перезагрузке сервер сначала будет ждать отключения всех подключённых к нему клиентов, и только после этого сможет отключиться или перезагрузиться.