Установка Oraсle 10g в пакетном режиме

Предисловие

В предисловии к этому разделу хочу описать свой личный жизненный опыт: я работал в одной приличной компании, расположенной географически в Академгородке. Контора писала некую серьёзную софтину для заказчиков из Мск. Железо заказчика располагалось на М9, на входе перед серверами стоял пакетный фильтр, ака фаервол.

Необходимо было развернуть новую серверную инфраструктуру, смигрировать на неё и отключить старую. Всё это, разумеется, с минимальным временем простоя. Как это и бывает в реальной жизни, на время развёртывания новая-красивая-стройная система была, мягко говоря, доступна не так удобно, как того хотелось. А если говорить откровенно, то необходимо было выполнить два транзитных входа по SSH, и только после этого можно было попасть на машину, приговорённую к роли ораклового сервера. Разумеется, ни о каком туннелировании иксового трафика речи быть не могло.

Именно для таких ситуаций и предназначен режим инсталляции silent-mode. Для выполнения такой инсталляции необходимо подготовить несколько response-файлов, содержащих всю информацию, которая требуется инсталлятору для вылонения его работы.

В заключении моей success story хотелось бы сказать, что при расширении бизнеса, у заказчика появились площадки в Дойчландии, Индии, Малазии и Сингапуре. Благодаря раз и навсегда заготовленному набору response-файлов и небольшой «склеротичке», с описанием, что и где надо поправить, среднее время установки Оракла «с нуля» занимало около 15-30 минут. Самое главное, с гарантией какчества! :)

Шаг 0. Проверка готовности ОС принять Oracle.

Данный шаг (имеется ввиду проверка требований, прописанных в документации на Оракл) ни в коем случае нельзя пропускать! Самое неприятное состоит в том, что, скорее всего, Оракл у Вас нормально встанет и даже взлетит,.. вот только летать он будет нестабильно и падать в самый не подходящий момент. Оно надо?..

Итак, проверяем, что в /etc/sysctl.conf есть такие строки:

sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144

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

/sbin/sysctl -p /etc/sysctl.conf

Кроме того, необходимо создать группы и пользователя, от имени которых будет работать СУБД:

groupadd -g 200 oinstall
groupadd -g 201 dba
useradd -g oinstall -u 200 -G dba -c 'Oracle Software Owner' -m oracle
passwd oracle

Предполагается, что директорией, в которую будет ставиться Oracle, будет /ora.

chown oracle:oinstall /ora

В зависимости от версии и архитектуры ОС, версии самого Оракла, в системе должен быть проставлен определённый набор пакетов. Для RHEL4U2 x86_64 и Oracle 10.2.0.1.0 для 64-битных архитектур этот набор выглядит так:

binutils-2.15.92.0.2-24.x86_64
compat-db-4.1.25-9.i386
compat-db-4.1.25-9.x86_64
compat-gcc-32-3.2.3-47.3.x86_64
compat-gcc-32-c++-3.2.3-47.3.x86_64
compat-libcom_err-1.0-5.i386
compat-libcom_err-1.0-5.x86_64
compat-libgcc-296-2.96-132.7.2.i386
compat-libstdc++-296-2.96-132.7.2.i386
compat-libstdc++-33-3.2.3-47.3.i386
compat-libstdc++-33-3.2.3-47.3.x86_64
compat-openldap-2.1.30-8.el4_6.4.i386
gcc-3.4.6-9.x86_64
gcc-c++-3.4.6-9.x86_64
gcc-g77-3.4.6-9.x86_64
gcc-java-3.4.6-9.x86_64
glibc-2.3.4-2.39.i686
glibc-2.3.4-2.39.x86_64
glibc-common-2.3.4-2.39.x86_64
glibc-devel-2.3.4-2.39.i386
glibc-devel-2.3.4-2.39.x86_64
glibc-headers-2.3.4-2.39.x86_64
glibc-kernheaders-2.4-9.1.100.EL.x86_64
java-1.4.2-gcj-compat-1.4.2.0-27jpp.noarch
libaio-0.3.105-2.i386
libaio-0.3.105-2.x86_64
libaio-devel-0.3.105-2.x86_64
libgcc-3.4.6-9.i386
libgcc-3.4.6-9.x86_64
libstdc++-3.4.6-9.i386
libstdc++-3.4.6-9.x86_64
libstdc++-devel-3.4.6-9.x86_64
make-3.80-6.EL4.x86_64
pdksh-5.2.14-30.6.x86_64
sysstat-5.0.5-16.rhel4.x86_64

Список указанных пакетов можно получить командой

rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\n'|egrep 'compat|glibc|gcc|libst|binu|make|pdksh|sysstat|libaio'|sort

Наиболее простой способ установить все недостающие пакеты ‑ выполнить следующие команды:

up2date -v --nox --arch x86_64 --download binutils compat-db compat-gcc-32 compat-gcc-32-c++ compat-libcom_err compat-libstdc++ gcc gcc-c++ gcc-g77 gcc-java glibc glibc-common glibc-devel glibc-headers glibc-kernheaders libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat
up2date -v --nox --arch x86_64 binutils compat-db compat-gcc-32 compat-gcc-32-c++ compat-libcom_err compat-libstdc++ gcc gcc-c++ gcc-g77 gcc-java glibc glibc-common glibc-devel glibc-headers glibc-kernheaders libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat
up2date -v --nox --arch i386 --download compat-db compat-libcom_err compat-libgcc compat-libstdc++ compat-libstdc++ compat-openldap glibc-devel libaio libgcc libstdc++
up2date -v --nox --arch i386 compat-db compat-libcom_err compat-libgcc compat-libstdc++ compat-libstdc++ compat-openldap glibc-devel libaio libgcc libstdc++
up2date -v --nox --arch i686 glibc
up2date -v --nox --arch noarch java-1.4.2-gcj-compat

При этом решающее значение имеет не конкретная версия пакета, а наличие данного пакета под указанную архитектуру: x86_64, i386 и т.п. Обсуждая список требуемых пакетов, надо упомянуть очень приятные грабли, на которые можно легко наступить, особенно, если ОС на сервере устанавливалась другим человеком (а ещё хлеще - сторонней организацией). Дело в том, что этот список размазан по нескольким документам с одной стороны, при этом один документ исправляет написанное в другом… А с другой стороны, нет никакой уверенности, что полученный из документации список будет полным. Это особенно актуально для 64-битной архитектуры. Представленный выше список, вообще говоря, является избыточным, но он гарантировано содержит все необходимые пакеты.

Шаг 1. Установка СУБД Oracle 10g.

Установка СУБД происходит в пакетном режиме, все действия выполняются от имени пользователя oracle. После распаковки архива с дистрибутивом Oracle, необходимо убедиться, что дистрибутив расположен в директории /home/oracle/database.

cd /home/oracle/database
gzip -d 10201_database_linux_x86_64.cpio.gz
cpio -idmv < 10201_database_linux_x86_64.cpio

В директории /home/oracle распаковывается файл response_files10g.tar.bz2, переходим в директорию с response-файлами, редактируем файлы, указывая новые правильные значения параметров (содержимое файлов указано в приложении):

tar jxf response_files10g.tar.bz2
cd response_files/database
nano environment
nano 00-enterprise.rsp
nano 01-netca.rsp
nano 02-dbca.rsp

В файле environment необходимо исправить параметры:

  • ORACLE_HOSTNAME
  • ORACLE_BASE
  • ORACLE_SID.

В файле 00-enterprise.rsp необходимо исправить параметры:

  • ORACLE_HOME
  • REMOVE_HOMES
  • ORACLE_HOSTNAME
  • s_globalDBName
  • s_dbSid
  • s_dlgRBOPassword
  • s_superAdminSamePasswd
  • s_superAdminSamePasswdAgain.

В файле 01-netca.rsp ничего менять не надо.

В файле 02-dbca.rsp необходимо исправить параметры в секции CREATEDATABASE:

  • GDBNAME
  • SID
  • SYSPASSWORD
  • SYSTEMPASSWORD
  • SYSMANPASSWORD
  • DBSNMPPASSWORD
  • HOSTUSERPASSWORD
  • SMTPSERVER
  • EMAILADDRESS

Файл runAll.sh содержит команды, которые должны быть выполнены, для успешной установки СУБД. Каждая команда должна выполняться отдельно, для этого все остальные команды должны быть закомментированы. Первая строка, импортирующая файл environment, комментироваться не должна. После выполнения команды ~/database/runInstaller необходимо от имени root'а запустить два скрипта:

/ora/oraInventory/orainstRoot.sh
/ora/product/10.2.0.1.0/root.sh

При выполнении всех предварительных условий, выполнение команд из файла runAll.sh успешно завершится, и будут запущены: сетевая служба Oracle (listner), процессы базы данных, Oracle Enterprise manager.

Шаг 2. Послеустановочные действия

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

${ORACLE_HOME}/bin/emctl stop dbconsole
sqlplus "/ as sysdba" << EOT
 SHUTDOWN NORMAL
 EXIT
EOT
${ORACLE_HOME}/bin/lsnrctl stop

В результате, ps x должен показать только два либо три процесса, принадлежащие пользователю oracle: ps, bash, sshd (если вход в систему выполнялся по SSH) Следующие команды запускают экземпляр базы данных:

${ORACLE_HOME}/bin/lsnrctl start
sqlplus "/ as sysdba" << EOT
 STARTUP
 EXIT
EOT
${ORACLE_HOME}/bin/emctl start dbconsole

После удачного старта базы, надо отредактировать файл /etc/oratab, заменив в нем N на Y в последней строке. От имени пользователя root копируем файл response_files/database/environment с настройками окружения и редактируем его согласно внутренним комментариям:

cp ~oracle/response_files/database/environment /etc/profile.d/zz-oracle-environment.sh
nano /etc/profile.d/zz-oracle-environment.sh

Опционально создаем файл /etc/profile.d/zz-local-environment-tuning.sh с указанием прочих переменных окружения для повышения комфортности работы. Для автоматического запуска Oracle при рестарте системы необходимо создать файл /etc/init.d/oracle, разрешить его исполнение и создать символические ссылки из директорий /etc/rc3.d и /etc/rc5.d с именами S89oracle. Также, необходимо создать символические ссылки в директориях /etc/rc0.d и /etc/rc6.d с именами K01oracle:

nano /etc/init.d/oracle
chmod +x /etc/init.d/oracle
cd /etc/rc3.d; ln -s ../init.d/oracle S99oracle
cd /etc/rc5.d; ln -s ../init.d/oracle S99oracle
cd /etc/rc0.d; ln -s ../init.d/oracle K01oracle
cd /etc/rc6.d; ln -s ../init.d/oracle K01oracle

Возможные проблемы.

При установке может возникнуть необходимость удалить результат предыдущей неудачной попытки установки Oracle. Наиболее простой вариант для этого:

  • убедиться, что серверные процессы Oracle остановлены (см выше)
  • выполнить команду:
rm -rf /ora/{admin,flash_recovery_area,oraInventory,product} /etc/{oraInst.loc,oratab} /usr/local/bin/{coraenv,dbhome,oraenv}
  • в файле /etc/oratab удалить соответствующие строки

Проблема: При рестарте системы процессы Oracle не запускаются

Решение: Проверить существование файла /etc/init.d/oracle, права доступа к этому файлу, существование символических ссылок на данный файл. (см. раздел Послеустановочные действия.)

Проблема: При рестарте системы, либо при ручном запуске команды dbstart, запускается TNS listner, но экземпляр Oracle не создаётся.

Решение: Отредактировать файл /etc/oratab


Andrew A. Sabitov 2010-11-20 16:00


oracle/oracle10g_silent-mode_installation.txt · Последние изменения: 2011-06-28 16:39 — Andrew A. Sabitov