Oracle 10g для Windows не запускается при загрузке системы.

Вопрос или проблема

У нас установлена Oracle 10g Enterprise Edition (версия 10.2.0.1.0) на виртуальной машине с Windows Server 2003. Изначально она была создана с использованием Virtual Server 2005 R2 SP1, но теперь перенесена на Windows Server 2008 Hyper-V.

Сервисы запускаются при загрузке системы, но экземпляр не запускается. Эта проблема возникала на Virtual Server после переноса с одного сервера на другой, но тогда мне удалось ее исправить с помощью:

oradim -edit -sid ORCL -startmode auto

Однако теперь это не имеет никакого эффекта.

oradim.log (в %OracleHome%\database\oradim.log) сообщает:

Чт Июн 10 14:14:48 2010
C:\oracle\product\10.2.0\db_3\bin\oradim.exe -startup -sid orcl -usrpwd* -log oradim.log -nocheck 0
Чт Июн 10 14:14:48 2010
ORA-12560: TNS:ошибка адаптера протокола

sqlnet.log в той же папке содержит:

Фатальная ошибка NI соединения 12560, при подключении к:
 (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracleorcl)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=C:\oracle\product\10.2.0\db_3\bin\oradim.exe)(HOST=ORACLE-VM)(USER=SYSTEM))))

  ИНФОРМАЦИЯ О ВЕРСИИ:
        TNS для 32-битной Windows: Версия 10.2.0.1.0 - Production
        Протокольный адаптер Oracle Bequeath NT для 32-битной Windows: Версия 10.2.0.1.0 - Production
  Время: 10-ИЮН-2010 14:14:48
  Отслеживание не включено.
  Структура ошибки Tns:
    Основной код ошибки ns: 12560
    TNS-12560: TNS:ошибка адаптера протокола
    Вторичный код ошибки ns: 0
    Основной код ошибки nt: 530
    TNS-00530: Ошибка адаптера протокола
    Вторичный код ошибки nt: 2
    Код ошибки ОС nt: 0

Значение реестра ORA_ORCL_AUTOSTART установлено в TRUE, поэтому должно автоматически запускаться, и видно, что это пытается сделать. Проблема также возникает при остановке и перезапуске службы OracleServiceORCL.

Я включил трассировку SQL*Net, которая показывает:

[10-ИЮН-2010 15:09:33.919] snlpcss: вход
[10-ИЮН-2010 15:09:34.419] snlpcss: Не удалось запустить Oracle oracle     (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) orcl, ошибка 2.
[10-ИЮН-2010 15:09:34.419] snlpcall: выход

Догадка, что ошибка 2 — это ошибка Windows 2 (файл не найден), я попытался перезапустить службу с Process Monitor, который наблюдает за oradim.exe, но это, похоже, задерживает процесс достаточно, чтобы он всегда работал.

На данный момент у меня ужасный обходной путь, где я создал запланированное задание, чтобы запускать oradim -startup -sid ORCL при входе в систему учетной записи Администратора, и настроил виртуальную машину на автоматический вход. Я все еще хотел бы выяснить, почему это не работает.

Возможно, стоит на тестирование добавить зависимость к сервису. Я думаю, он может пытаться запускаться слишком рано. В прошлом я видел похожую проблему и не могу вспомнить, что мы сделали для ее исправления, но теперь мы используем агент Oracle / Grid Control для запуска сервисов (например: Агент => Автостарт, Oracle => Вручную и т.д.).

выполните tnsping .
перейдите в каталог с файлом параметров sqlnet.ora
отредактируйте файлы tnsnames.ora & listener.ora
исправьте (HOST = ваше_имя_хоста_БД) на значение, возвращаемое командой hostname
выполните services.msc
перезапустите службу прослушивателя Oracle с именем OracleOra....Listener & службу экземпляра с именем OracleService....

Ответ или решение

Для решения проблемы с запуском Oracle 10g на виртуальной машине с Windows Server 2008 Hyper-V предстоит учесть несколько важных аспектов. Давайте разберём возможные причины и предлагаемые решения на основе предоставленного вами описания проблемы.

Теория (Theory):

Ошибка ORA-12560: TNS: protocol adapter error указывает на проблемы с подключением к сетевой службе Oracle (TNS), что может быть связано как с неверной конфигурацией, так и с ошибками во взаимодействии элементов операционной системы и службы Oracle. В вашем случае проблема связана с использованием виртуализированной среды, что может накладывать дополнительные сложности, связанные с порядком и своевременностью старта служб.

Пример (Example):

В вашей ситуации Oracle 10g находится в окружении, где само запускается при старте системы за счёт использования oradim -edit -sid ORCL -startmode auto, учитывая состояние реестра ORA_ORCL_AUTOSTART TRUE. Несмотря на это, служба не завершает успешный запуск, выдавая ошибки конфигурации сетевых адаптеров. Ко всему прочему, вы упомянули, что временные задержки, вызванные Process Monitor, позволяют соединению успешно установиться, что указывает на возможную проблему с порядком и моментом запуска служб системы.

Применение (Application):

  1. Проверка зависимостей служб:

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

    • Откройте services.msc и найдите вашу службу Oracle.
    • Настройте зависимости, используя вкладку "Зависимости" (Dependencies). Возможно, вам потребуется добавить такие службы как Net Logon или Workstation.
  2. Редактирование конфигурации TNS:

    В файлах конфигурации TNS, таких как tnsnames.ora и listener.ora, убедитесь, что в строке (HOST = your_db_host_name) указано правильное имя хоста, которое можно получить с помощью команды hostname. Эти файлы должны находиться в директории, указанной в настройках Oracle.

  3. Диагностика и отложенный запуск:

    Если ошибка связана с преждевременным стартом службы, рассмотрите возможность использования отложенного запуска (delayed start). Это позволит службе запускаться после того, как остальные системные службы уже будут доступны.

    • Вы можете добавить задержку в виде задачи планировщика, которая позже будет запускать вашу службу Oracle. Это уже примерно реализовано с вашим "временным способом", но рассмотрите настройку более адекватной задержки или триггера.
  4. Отказ от гипервизора Hyper-V:

    Поскольку вы упомянули, что проблема возникала и при использовании Virtual Server, у которой решение было найдено, постарайтесь полностью устранить фактор времени, когда происходит миграция со среды Hyper-V.

  5. Усиленная проверка логов:

    Обратите внимание на более подробные логи, такие как SQL*Net tracing. Это может выявить дополнительные ошибки, которые могут пролить свет на основную причину. Попробуйте включить более высокий уровень журналирования, если это возможно.

Если все вышеуказанные рекомендации не приводят к желаемому результату, рассмотрите возможность консультации с технической поддержкой Oracle или пересмотрите использование более современных программных решений для хостинга ваших баз данных, учитывая устаревшую природу Windows Server 2003 и Oracle 10g, который уже может иметь ограничения совместимости с текущими реалиями виртуализации и обновлениями операционных систем.

Оцените материал
Добавить комментарий

Капча загружается...