Ответ 1
Это ошибка с совместимостью версии oracle 11g и PHP Oci. По мере подтверждения OP отменяется переход клиента на 10g. Решение найдено здесь.
:
Linux web 2.6.27.21-0.1-pae #1 SMP 2009-03-31 14:50:44 +0200 i686 i686 i386 GNU/Linux
PHP Version 5.3.8
Apache Version Apache/2.2.21 (Linux/SUSE)
OCI8 Support enabled
Version 1.4.7
Revision $Revision: 321634 $
Active Persistent Connections 0
Active Connections 0
Oracle Run-time Client Library Version 11.2.0.3.0
Oracle Instant Client Version 11.2
при вызове oci_connect
- receiv
ORA-24408: невозможно создать уникальное имя группы серверов
не может понять, что такое ошибка типа и как его исправить.
Это ошибка с совместимостью версии oracle 11g и PHP Oci. По мере подтверждения OP отменяется переход клиента на 10g. Решение найдено здесь.
Вы можете понизить до 10g, если хотите (это, очевидно, не заботится об этом), но это не обязательно...
Для мгновенного клиента 11g требуется запись файла /etc/hosts
для вашего имени хоста, указывающего на 127.0.0.1. Нормальная запись "localhost" недостаточно для нее.
Предполагая, что ваше имя хоста foomachine
, вам нужно проверить два места:
В /etc/hosts
убедитесь, что у вас есть какая-либо запись - добавьте ее, если она отсутствует:
127.0.0.1 foomachine
И также убедитесь, что файл /etc/sysconfig/network
также имеет HOSTNAME=foomachine
Это должно сделать трюк.
Вид старого вопроса, но я просто наткнулся на него после обновления моего Mac до Sierra. До тех пор у меня не было проблемы.
Трюк, безусловно, должен добавить ваше имя хоста в /etc/hosts, но вы должны иметь правильное имя хоста. Это легко на linux, это в /etc/sysconfig/network. На Mac найдите его в разделе "Системные настройки" > "Обмен". В разделе где указано имя компьютера будет что-то вроде computer-name.local. В /etc/hosts положите
127.0.0.1 computer-name.local
Замена имени компьютера именем компьютера конечно:). Он нуждается в этом независимо от того, является ли база данных удаленной или локальной.
У меня было много других псевдонимов для 127.0.0.1, но не для этого. Как только я добавил, что мои приложения снова начали работать.
У меня была точно такая же проблема. Я исправил свои /etc/hosts и/etc/sysconfig/сетевой файл и RESTARTED THE NETWORK, и теперь он отлично работает. Вот несколько быстрых и грязных инструкций:
http://ahmadzainuddinzakaria.blogspot.com/2012/06/warning-ociconnect-functionoci-connect.html
В CentOS 6.5 я изменил значение файла: /etc/sysconfig/network
Исходное значение:
HOSTNAME=localhost.localdomain
Новое значение:
HOSTNAME=127.0.0.1
В моей ситуации сервер OracleDB, к которому я пытался подключиться, был удаленным, а не локальным, поэтому вышеупомянутый трюк 127.0.0.1 localhost
не работал.
Раньше я временно исправил проблему DNS, добавив запись для моего сервера Oracle DB в файл моих хостов. Этот IP-адрес в моем файле hosts все еще был прав - он все еще указывал на правильный IP-адрес сервера OracleDB.
Удалив запись из файла моих хостов, проблема исчезла.
Я понятия не имею, почему это проблема для OracleDB или почему сообщение об ошибке настолько тупое, но я надеюсь, что это поможет кому-то еще.
(Это использовало InstantClient v12.1.0.2 в MacOS v10.11.5)
На самом деле вам не нужно идти с 127.0.0.1
в /etc/hosts
с чем-то вроде
echo -e "127.0.0.1\t$HOSTNAME" >> /etc/hosts
что противоречит здравому смыслу (и формально против RFC 6761 только с февраля 2013 г.).
К счастью, это также будет работать, если у вас зарегистрирован только ваш реальный IP-адрес - что-то вроде
192.0.2.5 mymachine.example.net
что часто отсутствует в виртуальных машинах, созданных с помощью DHCP.
или - в крайнем случае - использовать какой-либо другой IP-адрес из 127.0.0.0/8
127.0.1.1 mymachine.example.net
Протестировано с Oracle Instant Client 11.2.
Системные администраторы, имеющие дело с такими странными вещами, как Legato Backup, будут благодарны за то, что вы не возитесь с /etc/hosts
.