У меня есть некоторые смутные воспоминания о базах данных Oracle, которые нуждаются в некотором беспокойстве при первой перезагрузке после установки базы данных.Тем не менее, вы не дали нам достаточно информации для работы.Для начала:
- Какой код вы используете для подключения к базе данных?
- Не ясно, был ли запущен экземпляр базы данных.Можете ли вы подключиться к базе данных, используя
sqlplus / as sysdba
из виртуальной машины? - Что было записано в файл
listener.log
(в %ORACLE_HOME%\network\log
) с момента последней перезагрузки?
РЕДАКТИРОВАТЬ : Теперь я смог придумать сценарий, который генерирует то же самое сообщение об ошибке, которое вы получили.Мне кажется, база данных, к которой вы пытаетесь подключиться, еще не запущена.В приведенном ниже примере используется Oracle XE для Linux, но я не думаю, что это имеет существенное значение.
Сначала давайте подтвердим, что база данных закрыта:
$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 17 18:16:43 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
Это текст Connected to an idle instance
, который говорит нам, что база данных закрыта.
Использование sqlplus / as sysdba
соединяет нас с базой данных как SYS без пароля, но работает только на том же компьютере, что и сама база данных,В вашем случае вам нужно будет запустить это внутри виртуальной машины.У SYS есть разрешение на запуск и выключение базы данных, а также на подключение к ней, когда она выключена, но обычные пользователи не имеют этих разрешений.
Теперь давайте отключимся и попробуем повторно подключиться как обычный пользователь.тот, у которого нет разрешения на запуск / выключение базы данных или подключение к ней, когда она не работает:
SQL> exit
Disconnected
$ sqlplus -L "user/pw@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=XE)))"
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 17 18:16:47 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12505: TNS:listener does not currently know of SID given in connect
descriptor
SP2-0751: Unable to connect to Oracle. Exiting SQL*Plus
Это сообщение об ошибке, которое вы получаете.
Теперь давайтеЗапустите базу данных:
$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 17 18:17:00 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 805306368 bytes
Fixed Size 1261444 bytes
Variable Size 209715324 bytes
Database Buffers 591396864 bytes
Redo Buffers 2932736 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
Теперь, когда база данных запущена, давайте попытаемся войти как обычный пользователь:
$ sqlplus -L "user/pw@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=XE)))"
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 17 18:17:11 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL>
Мы находимся.
Я не видел ошибки ORA-12505 прежде, потому что я обычно не подключаюсь к базе данных Oracle, вводя всю строку подключения в командной строке.Это может быть похоже на то, как вы пытаетесь подключиться к базе данных.Обычно я либо подключаюсь к локальной базе данных, либо подключаюсь к удаленной базе данных, используя имя TNS (они перечислены в файле tnsnames.ora, в %ORACLE_HOME%\network\admin
).В обоих этих случаях вы получите другое сообщение об ошибке, если попытаетесь подключиться к базе данных, которая была закрыта.
Если вышеприведенное не поможет вам (в частности, если база данных уже была запущена)или вы получаете ошибки при запуске базы данных), пожалуйста, сообщите нам.
РЕДАКТИРОВАТЬ 2: кажется, что проблемы у вас действительно были, потому что база данных не была запущена.Также кажется, что ваша база данных не настроена на запуск при запуске службы.Можно заставить базу данных запускаться при запуске службы и завершать работу при остановке службы.Для этого используйте Oracle Administration Assistant для Windows, см. здесь .