我创建了一个小应用程序,它应该连接到运行在virutal计算机(W8.1)中的远程Oracle数据库。
在成功的连接上,应该会弹出一条显示消息。
我遵循这些步骤,以确保我的应用程序能够连接:installing Oracle Instantclient on Mac OS/X without setting environment variables?
该应用程序使用FireDac的Oracle FireDAC.Phys.Oracle驱动程序进行连接,使用TFDGUIxLoginDialog登录。

实际上,没有什么特别之处:
procedure TForm1.Button1Click(Sender: TObject);
begin
FDConnection1.Connected := True;
end;
procedure TForm1.FDConnection1AfterConnect(Sender: TObject);
begin
ShowMessage('Connected');
end;
procedure TForm1.FDConnection1Error(ASender: TObject;
const AInitiator: IFDStanObject; var AException: Exception);
begin
ShowMessage(AException.ToString);
end;这在Windows8.1和10中运行得很好,而且速度很快。
然而,在小牛中,我得到了OID generation failed错误,如图中所示。
如果我使用VM、IP或DNS名称进行连接,这并不重要。根本连不上。
Oracle的SQL开发人员能够连接。
Oralce SQL开发人员在建立到数据库的连接之前需要花费大约15-20秒的时间。
我的应用程序连连接的时间都不长。它在7s后失败了。
也许在一个稳定的连接可用之前就超时了?
如果是的话,在抛出错误之前是否有任何方法来延长登录进程时间?
或者这是另一个完全的问题?
请注意,我花了大约5个小时已经解决了这个问题,但没有成功。
任何帮助都是非常感谢的。
发布于 2014-11-16 10:14:23
好的,这是出了什么问题。
我的OSX小牛客系统的主机文件不正确。
就像@whosrdaddy发布的一样,您必须更改您的主机文件,如以下链接中所解释的:http://chaos667.tumblr.com/post/20006357466/ora-21561-and-oracle-instant-client-11-2
我确实输入了在OSX控制面板中共享-> Devicename中可以找到的Devicename。

所以我在主机文件中输入了这个名字。

但是,我使用的是不正确的名称。
我使用echo "127.0.0.1 $(hostname)获得了正确的名称,它打印了正确的名称:127.0.0.1 LionVM.local。
我很长一段时间没有使用这个VM了,并且可能忘记了我在一段时间前升级到小牛队之后重新命名了这个设备名。
现在我的应用程序能够连接。
https://stackoverflow.com/questions/26950890
复制相似问题