У нас есть установка Oracle 10g Enterprise Edition (10.2.0.1.0) на виртуальной машине Windows Server 2003. Первоначально он был создан с Virtual Server 2005 R2 SP1, но теперь был перенесен на Windows Server 2008 Hyper-V.
Службы запускаются при загрузке системы, но экземпляр не запускается. Эта проблема фактически возникала на виртуальном сервере после миграции с одного сервера на другой, но мне удалось исправить ее с помощью:
oradim -edit -sid ORCL -startmode auto
Однако сейчас это не действует.
oradim.log (в% OracleHome% \ database \ oradim.log) говорит:
Thu Jun 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
Thu Jun 10 14:14:48 2010
ORA-12560: TNS:protocol adapter error
sqlnet.log в той же папке имеет:
Fatal NI connect error 12560, connecting to:
(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))))
VERSION INFORMATION:
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 - Production
Time: 10-JUN-2010 14:14:48
Tracing not turned on.
Tns error struct:
ns main err code: 12560
TNS-12560: TNS:protocol adapter error
ns secondary err code: 0
nt main err code: 530
TNS-00530: Protocol adapter error
nt secondary err code: 2
nt OS err code: 0
В ORA_ORCL_AUTOSTART
значение реестра установлено на TRUE
, поэтому он должен запускаться автоматически - и вы можете видеть, что он пытается это сделать. Проблема также возникает при остановке и перезапуске OracleServiceORCL служба.
Я включил трассировку SQL * Net, которая показывает:
[10-JUN-2010 15:09:33.919] snlpcss: entry
[10-JUN-2010 15:09:34.419] snlpcss: Unable to spawn Oracle oracle (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) orcl, error 2.
[10-JUN-2010 15:09:34.419] snlpcall: exit
Подозревая, что ошибка 2 - это ошибка Windows 2 (файл не найден), я попытался перезапустить службу с помощью Process Monitor, наблюдающего за oradim.exe, но это, похоже, задерживает работу настолько, чтобы она всегда работала.
Прямо сейчас у меня есть ужасный взлом, где я создал запланированную задачу для запуска oradim -startup -sid ORCL
когда учетная запись администратора входит в систему, и установите для виртуальной машины автоматический вход. Я все еще хотел бы разобраться, почему это не работает.
бегать tnsping .
перейти в каталог с файлом параметров sqlnet.ora
редактировать файлы tnsnames.ora
& listener.ora
верный (HOST = your_db_host_name)
к значению, возвращенному hostname
команда
бегать services.msc
перезапустить службу прослушивателя Oracle с именем OracleOra....Listener
& экземпляр службы с именем OracleService....
Возможно, для теста стоит добавить к сервису зависимость. Мне интересно, не слишком ли рано он пытается начать. Я видел подобную проблему в прошлом и не могу вспомнить, что мы делали, чтобы ее исправить, но теперь мы используем Oracle agent / Grid Control для запуска служб (например: Agent => Auto start, Oracle => Manual, И т.д).