ORA-24408:无法生成唯一的服务器组名称

时间:2012-05-07 14:53:22

标签: php oracle

系统:

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时 - 接收

  

ORA-24408:无法生成唯一的服务器组名称

无法理解这种错误是什么以及如何解决它。

8 个答案:

答案 0 :(得分:39)

如果你愿意,你可以降级到10g(显然不关心这个),但这不是必要的......

11g即时客户端需要/etc/hosts个主机名的文件条目,指向127.0.0.1。正常的“localhost”条目是不够的。

假设您的主机名为foomachine,您需要检查两个地方:

/etc/hosts中,请确保您有任何条目 - 如果不存在则添加:

127.0.0.1   foomachine

并确保/etc/sysconfig/network文件也有HOSTNAME=foomachine

这应该可以解决问题。

答案 1 :(得分:4)

有点老问题,但我在将Mac升级到Sierra之后偶然发现了它。在那之前我没有遇到过这个问题。

诀窍肯定是将您的主机名添加到/ etc / hosts,但您必须拥有正确的主机名。这在linux上很容易,它在/ etc / sysconfig / network中。在Mac上,在系统偏好设置>中找到它共享。在它所说的计算机名称将类似于computer-name.local。在/ etc / hosts中放

% Read the entire file into memory
fid = fopen(loaddata, 'rb');
contents = fread(fid, '*char')';
fclose(fid);

% Replace `,` with `.`
contents = strrep(contents, ',', '.');

% Now convert to numbers
data = str2num(contents);

当然用您的计算机名替换计算机名:)。 无论数据库是远程数据库还是本地数据库,都需要这样做。

我有127.0.0.1的其他很多别名但不是那个。一旦我添加了一个我的应用程序再次开始工作。

答案 2 :(得分:0)

我有完全相同的问题。我修复了我的/ etc / hosts和/ etc / sysconfig / network文件并重新启动了网络,现在工作正常。以下是一些快速而肮脏的说明:

http://ahmadzainuddinzakaria.blogspot.com/2012/06/warning-ociconnect-functionoci-connect.html

答案 3 :(得分:0)

在CentOS 6.5中,我更改了文件的值:/etc/sysconfig/network

原始值:

HOSTNAME=localhost.localdomain

新价值:

HOSTNAME=127.0.0.1

答案 4 :(得分:0)

在我的情况下,我尝试连接的OracleDB服务器是远程的,而不是本地的,所以上面的127.0.0.1 localhost技巧不起作用。

以前,我通过将我的Oracle数据库服务器的条目添加到我的hosts文件中来暂时修复了DNS问题。 我的主机文件中的IP仍然是正确的 - 它仍然指向正确的OracleDB服务器IP。

通过删除主机文件中的条目,问题就消失了。

我不知道为什么这对OracleDB来说是一个问题,或者为什么错误信息如此钝,但我希望这有助于其他人。

(这是在MacOS v10.11.5上使用InstantClient v12.1.0.2)

答案 5 :(得分:0)

您实际上不需要127.0.0.1中的/etc/hosts与类似的

一起使用
echo -e "127.0.0.1\t$HOSTNAME" >> /etc/hosts

这是违反常识的(仅从2013年2月起才正式反对RFC 6761)。

幸运的是,如果您只注册了您的真实IP地址-类似

192.0.2.5 mymachine.example.net

在使用DHCP创建的虚拟机中经常缺少此功能。

或-不得已的情况-使用127.0.0.0/8中的其他IP地址

127.0.1.1 mymachine.example.net

经过 Oracle Instant Client 11.2 测试。

处理诸如Legato Backup之类的怪异事物的系统管理员将感谢您不要弄乱/etc/hosts

答案 6 :(得分:0)

将此添加到/ etc / hosts即可解决此问题。

127.0.0.1 someHostName

要查找计算机的主机名,只需在终端中键入主机名。使用诸如vim之类的文本编辑器来编辑主机。

~ hostname
someHostName
~ cd /etc
/etc sudo vim hosts

答案 7 :(得分:-5)

这是运行时oracle 11g和PHP Oci支持兼容性的错误。正如OP确认的那样,将客户降级到10g是有效的。找到了解决方案here