среда, 27 февраля 2013 г.

Автостарт сервисов Oracle на *NIX


Oracle Autostart  Версия 2.2
                   
Данный   пакет  позволяет  активизировать  и  деактивировать автоматический  запуск  и  останов  сервисов  Oracle  в одно действие на следующих системах:

- Solaris 8,9
- Solaris 10 и выше
- Linux (RHEL3, RHEL4, RHEL5, SuSE, Fedora,
         Oracle Enterprise Linux/Oracle Unbreakable Linux)

Поддерживается автоматический запуск следующих служб:
- Oracle RDBMS
- Oracle ASM
- Oracle TNS Listener
- Oracle DB Console (OEM)
- Oracle iSQL*Plus
- Oracle HTTP Server (OHS/Apache)

Поддерживается  запуск OHS как из Database Companion CD, так и из iAS Companion CD.

Поддерживается автоматический запуск и останов множественных инстансов RDBMS/ASM, описанных в едином файле oratab.

Замечание:  Запуск и останов сервисов ASM+RDBMS производится в корректной последовательности.

Для   выполнения  автостарта  сервисов  Oracle  используется скрипт   init.oracle. В  зависимости   от  платформы (Solaris  8-10  или    выше),   создаются     либо    ссылки в       каталоге    /etc/rc3.d,       либо      производится регистрация    сервиса   и    создание    ссылок    командой chkconfig   (Linux)   либо производится  регистрация сервиса в службе SMF.

Распознавание     платформы    производится   автоматически.

Замечание: Онанирующим на upstart/systemd рекомендую обратить внимание на год написания и на тот факт, что, в первую очередь, это писалось под Solaris 10. Желающие могут своими собственными ручонками удовлетворить свои противоестественные потребности.

Конфигурация скриптов установки/удаления сервиса

Для   установки   скрипта   (-ов)   и/или   создания  ссылок и  регистрации  дескриптора сервисов,  используются  скрипт install.sh, для удаления, соответственно, remove.sh.

Скрипты    установки    и    удаления    имеют   собственные конфигурационные  файлы,  позволяющие  задать  нестандартное расположение   файла   oratab   (по   умолчанию   это   /etc
и  /var/opt/oracle соответственно) и имя владельца ПО Oracle (по  умолчанию oracle) и основную группу Oracle (по уолчанию dba).

Данные  настройки  необходимы  в случае, если ваши настройки отличаются от сложившихся исторически умолчаний.

Если    используются    стандартные    настройки,   оставьте конфигурационные   параметры  утилит  установки  и  удаления сервиса без изменений.

Конфигурирование сервиса

Конфигурационные  параметры  сервиса автоматического запуска находятся   в конфигурационном  файле  oracle.conf  (шаблон по умолчанию копируется при установке службы в /etc).

Редактируются следующие переменные:

#
# oratab location.
# Leave variable blank to use /var/opt/oracle/oratab
#
ORATAB=""
^^^^^^^^^  На некоторых платформах необходимо задавать явно, если  oratab  отсутствует  в  стандартных месторасположениях (/var/opt/oracle/oratab  либо  /etc/oratab). Задается полный
абсолютный  путь  и имя файла oratab (не обязательно oratab, но  стандартной  структуры).  

ВАЖНО    -  Флаг  автоматического  запуска  в  файле  oratab меняется  явно при установке и удаления сервиса - ставится Y, если   сервис   автоматического   запуска  активизируется  и ставится N при деинсталляции автоматического запуска. 

#
# ORACLE_SID and ORACLE_HOME variables.
# Leave variables blank to use oratab
#
ORACLE_SID=""
ORACLE_HOME=""
^^^^^^^^^^^^^   Если  параметры  заданы  явно,  для  запуска RDBMS/Listener  будут  использованы  они,  а  не  содержимое oratab  (взятое  в  стандартных  местах  или  явно  заданное в предыдущем параметре).

#
#  Startup/shutdown  privilege  for  "connect  as"  to RDBMS
#  instance(s).
# By default is "sysdba".
#
#ORACLE_DB_PRIV="sysoper"
ORACLE_DB_PRIV="sysdba"
^^^^^^^^^^^^^^^^^^^^^^   Системная  привилегия,  позволяющая выполнять   запуск/останов   Oracle.  По  умолчанию  sysdba. В  вашей  системе может отличаться (задается при инсталляции
Oracle).
#
#   Startup/shutdown  privilege  for  "connect  as"  to  ASM
#   instance(s).
# By default is "sysdba" (Oracle 10),
# set to "sysasm" for Oracle 11 and above.
#
#ORACLE_ASM_PRIV="sysasm"
ORACLE_ASM_PRIV="sysdba"
^^^^^^^^^^^^^^^^^^^^^^^^     Привилегия     запуска/останова инстансов  ASM.  В  Oracle  10 - sysdba, начиная с Oracle 11 - sysasm. По умолчанию sysdba.

#
# ASM shutdown mode. In some cases (not patched DB etc.) ASM
# instance cannot shutdown in immediate mode after correctly
# shutdown main DB  and  must be stopped # in shutdown abort
# mode.
#
# Beware, that this stop mode can damage your ASM diskgroups!
#
#ASM_SHUTDOWN_MODE="abort"
ASM_SHUTDOWN_MODE="immediate"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  Режим  останова сервисов ASM. В  некоторых  случаях  после  корректного  останова основных сервисов  баз  данных  сервисы ASM не могут быть остановлены в  режиме  immediate  (не  установленные  патчи  итп.).  Для подобных   ситуаций   предусмотрен   останов  инстансов  ASM в  режиме  abort.  Учтите, что подобное завершение ASM может привести к повреждению дисковых групп и не рекомендуется без крайней необходимости.

#
# Standalone Apache home (OHS Home). Set if OHS installed
# and must be started/stopped, leave blank of not.
# Note: Supported both OHS - from Database Companion CD and
#       from iAS Companion CD.
#
#OHSHOME="/export/home/OraHome2/app/oracle/product/10.2.0"
OHSHOME=""
^^^^^^^ Домашний каталог Standalone Apache (OHS) с Companion CD.  Используется  в  явном  виде  при  запуске сервиса OHS. Оставьте пустым если не используете OHS.

#
# If OHS use ports <1024 443="" 80="" and="" i.e="" nbsp="" or="" p=""># set OHSPORT to 80.
# Otherwise leave it blank
#
OHSPORT=""

^^^^^^^^^^^^^^^^^  Данный  параметр _не задает_ порт запуска OHS,   он   лишь   используется   в  запускном  скрипте  для управления.  Конфигурирование  OHS  на  запуск  на  80 порту должно выполняться посредством httpd.conf. Параметр  определяет,  будет  ли  запуск  OHS осуществляться от  аккаунта  root  (если задан), что необходимо при запуске
для  портов  ниже  1024,  либо  от аккаунта владельца oracle -  если OHS слушает исключительно порты выше 1024 (например, 7777  или  7778).  При  этом  запуск  для любых портов может осуществляться   от   аккаунта  root  (в  этом  случае  лишь потребуется  изменение  владельца  (owner)  файла apachectl, однако  для  портов  ниже  1024 запуск должен осуществляться исключительно от аккаунта root. Либо можно использовать RBAC для ограничения привилегий на биндинг портов, избегая задействования суперпользователя. Что, в общем и целом, более предпочтительно с точки зрения безопасности.

#
# If SSL configured, this variable must be set
# (Apache SSL command option is "-D SSL")
#
#OSSL="-D SSL"
OSSL=""
^^^^^^^^^^^^^^^^^^^^^^^ Параметр определяет включение режима SSL  OHS  при  запуске  посредством  apachectl.  Если запуск производится  посредством opmn (включен следующий параметр), для   включения   SSL   режима   OHS  используется  параметр ssl_enabled  файла  opmn  и  параметр будет проигнорирован.

#
# If using OPMN for start OHS, set USEOPMN to 1.
# For use apachectl, leave it blank.
#
USEOPMN=""
^^^^^^^  Если  задан,  запуск  OHS  производится посредством OPMN, в противном случае используется apachectl. Если OHS не установлен  или не должен запускаться автоматически, следует задать пустой параметр OHSHOME (выше).

#
# If configured OEM dbconsole, set USEOEM to 1.
# Leave blank if not.
#
USEOEM=""
^^^^^^^^^^   Если  сконфигурирована  dbconsole  (Oracle  10g и  выше)  и  необходимо  запускать  ее  в  рамках  процедуры автозапуска,   параметр   необходимо   задать.  При  доступе
к  системе из Интернет, dbconsole должна быть предварительно сконфигурирована  для  работы  под  SSL  (например, командой emctl  secure  dbconsole).  В некоторых очень редких случаях
автоматический  запуск  консоль  управления  не  может  быть выполнен и запускать ее следует вручную.

#
# If configured iSQL*Plus, set USEISQLPLUS to 1.
# Leave blank if not.
#
USEISQLPLUS=""
^^^^^^^^  Параметр  задается,  если необходимо автоматически стартовать    также    iSQL*Plus    (нельзя   активизировать на  системах  с  высокой  степенью  защиты  или  с  доступом
из Интернет).

#
# Log file. Default /var/log/oracle.log
#
LOG="/var/log/oracle.log"
^^^^^^^^^^^^^^^^^  Путь  и  имя лог-файла по умолчанию. Если файл   не   существует   (скажем,   регулярно  обслуживается процессом   cron)   то   он   будет  создан  при  выполнении init.oracle  .

Установка сервиса

Для   установки   сервисов   необходимо  распаковать архив в необходимый   каталог   и   выполнить   с  правами  аккаунта root    скрипт   install.sh.   После   его   завершения  все
необходимые   файловые  структуры   будут  созданы  и  можно выполнить   активацию   сервиса   либо   перезапустив   хост (Solaris  8,9,  Linux) либо выполнив команду (Solaris 10 или
выше):

# svcadm enable oracle

контролируя запуск сервисов в отдельной сессии:

#  tail  -f /var/log/oracle.log  (путь и имя лога могут быть другими и настраиваются в файле oracle.conf параметром LOG)

Управляющий  скрипт  может  запускаться  также  интерактивно (например, для отладки):

root @ server /lib/svc/method # init.oracle start
init.oracle will execute start for services:
Listener:started.
+ASM:started.
SUN11:started.

При  выполнении  данных     операций    на    Solaris  10  и выше    необходимо   предварительно    отключить      сервис Oracle    при    помощи  интерфейса    SMF,   в    противном случае   рестартер  SMF будет    перезапускать остановленные вручную  сервисы  без предупреждения).

Удаление сервиса

Для  остановки  и  удаления  автостарта  необходимо  сделать следующее:

- Для Solaris 8,9, Linux:
1. Остановить сервисы Oracle вручную;
2. Выполнить  с  правами  root  скрипт remove.sh  из данного
архива

- Для Solaris 10 и выше:
1. Выполнить команду:
   # svcadm disable oracle
2. Выполнить с правами root скрипт remove.sh из данного
   архива.

Для    Солярис  10 или выше запуск/останов/перезапуск  служб oracle  выполняется   через  административный  интерфейс SMF (командами  svcadm/svcs).  ДЛя  контроля  состояния сервисов и  процессов  запуска    используется   как   основной   лог запуска/останова (/var/log/oracle.log  по  умолчанию), так и собственные  логи  сервисов   Oracle.

Замечания:

1.Для    запуска   OHS   от   аккаунта  root  (при  биндинге портов<1024 apachectl:="" nbsp="" p=""># chown root:dba apachectl

2.Скрипты установки/удаления автостарта используют несколько допущений и подчиняются определенным правилам, а именно:

-  Предполагается (либо проверяется),  что  они  выполняются в    режиме   выполнения  (run  level)  multi-user  (3).   В противном    случае  доступ  ко  многим  системным  командам
и  сервисам невозможен  и выполнение скриптов будет прервано с ошибкой.
-  Уровень  выполнения скрипта (-ов) автоматического запуска не  ниже  3  (то есть в signle user попыток запуска сервисов Oracle НЕ ПРОИЗВОДИТСЯ).
-  Предполагается,  что  администратор,  выполняющий  данные скрипты  установки/удаления,  запускает их с правами бюджета root.  Если  это  не так, выполнение прерывается с ошибкой и
кодом возврата 1.
-    Предполагается,    что   перед   выполнением   скриптов установки/удаления   системный   администратор/администратор базы  данных  выполнил  остановку  сервисов  Oracle вручную.
Для    запущенных    сервисов   Oracle   служба   автостарта не  выполняет  никаких действий, однако на Solaris 10 и выше (SMF)  сервис  автоматического  старта создается в состоянии
disbaled,   И  при  активации  будет  произведен  перезапуск сервисов Oracle, активных на момент установки службы. Также   не       производится     никаких     автоматических
операций  запуска/останова  (Solaris 8,9,Linux) или  активизации/деактивации сервисов Oracle (для Solaris 10 или выше).
- Для   Linux  RHEL 3/4  при останове хоста командой init 0/init 5 остановка системных сервисов выполняется командой kill. Это  приводит  к  аварийному  прекращению  работы экземпляра
Oracle   и  последующий  запуск  сервисов  может потребовать существенно  более длительного времени вследствие выполнения автоматического  восстановления  базы  данных и/или сервисов OHS/iAS.

3. В некоторых случаях на Solaris x86 при использовании OPMN может наблюдаться значительная задержка старта  Веб-сервисов или  невозможность  автоматического  запуска контролирующего процесса  OPMN.  Для  корректировки  данной ситуации следует
вручную  выполнить  команду  opmnctl  stopall, затем opmnctl startall     для     старта     процессов. Если сервисы OPMN по-прежнему  не  запускаются,  используйте логи OPMN/OHS для
выяснения причины невозможности запуска.

4.   При   зонной  установке  сервисов  Oracle на Solaris 10 и     выше,    необходимо   скопировать   запускной   скрипт init.oracle  в  каталог   /lib/svc/method  глобальной зоны с
правами root:sys ПЕРЕД ЗАПУСКОМ сервисов (для sparse-root инсталляций).

В    неглобальных    зонах    данный   каталог   монтируется из  глобальной  зоны  с  правами  read  only  и  необходимые действия   по   установке   управляющего   метода   в   него из неглобальной зоны не могут быть корректно выполнены.

PS. Пользуйтесь на здоровье. Этот пакет много лет использовался в продуктивных системах. Желающие продолжить - могут самостоятельно написать любой необходимый функционал.