У нас есть серия серверов Amazon Web Services, работающих под управлением Amazon Linux и Oracle XE, которая используется локальным приложением. OracleXE устанавливается и работает отлично, наше приложение может подключаться к БД, все отлично.ORA-12514 после восстановления сервера из моментального снимка
Для одного из наших конкретных серверов нам нужно было закрыть его и архивировать. Сегодня мне нужно привести его в интернет. Это делается путем создания нового экземпляра AWS, создания нового виртуального жесткого диска из моментального снимка резервной копии, настройки нового общедоступного IP-адреса для сервера и изменения параметров DNS на то, что старый домен указывает на новый IP-адрес, подключая восстановленный виртуальный диск в качестве основного диска и запуск его.
OracleXE не хочет работать. Использование sqlplus для подключения к localhost: 1521/XE создает «ORA-12514: TNS: слушатель в настоящее время не знает о запросе службы в дескрипторе соединения».
Эта система работала нормально, когда я снял ее и архивировал ее в первый раз, и после ее восстановления я не изменил никаких настроек. Все должно быть точно таким же, так почему OracleXE теперь не работает?
У listener.ora и tnsnames.ora был установлен хост с использованием общедоступного имени сервера. Я попытался изменить это на localhost, но он все еще не работает.
Единственное, что я могу думать об этом, это разные публичные IP-адреса сервера и «отпечаток пальца rsa2» (о чем жалуется Putty из-за того, что ключ SSH является тем же, но является новым экземпляром AWS) , Все советы, которые я видел до сих пор, это исправление ошибок конфигурации для ORA-12514 при настройке новой системы или после перезапуска, но это система, которая работает нормально, но была восстановлена из моментального снимка.
БД и слушатель находятся в одной системе. Я не знал, что база данных имеет свои собственные настройки, чтобы определить, как она связалась с слушателем. Googling «local_listener» разорвал эту информацию: Значение по умолчанию: (ADDRESS = (PROTOCOL = TCP) (HOST = имя хоста)> (PORT = 1521)), где hostname - сетевое имя локального хоста. Проблема была в том, что я не разрешил новый публичный IP-адрес сервера через свой собственный брандмауэр, и я не знал, что он пытается использовать публичный IP-адрес. – Len