2011-09-29 19 views
3

我有一个使用OCI与数据库交谈的C应用程序。我正在使用即时客户端方法,因此服务器上没有独立的Oracle安装 - 只是应用程序链接的一对库。Oracle OCI - 以另一个用户身份运行时出现ORA-12705故障

通常,应用程序以用户戴运行,并且一切正常。但是,如果应用被其他用户身份运行(在傣语支),它无法运行,报告:

Error while trying to retrieve text for error ORA-12705 

所以我可以想像,这是一个权限错误,但我不知道它是什么文件试图访问。 Oracle库的权限是

dai:/dai/oracle/lib> ls -l 
total 201872 
-rwxrwxrwx 1 dai  dai  24719097 16 Feb 2009 libclntsh.a 
-rwxrwxrwx 1 dai  dai   5972457 16 Feb 2009 libocci.a 
-rwxrwxrwx 1 dai  dai  72651344 04 Jun 2010 libociei.so 

正如您可以猜到的主要OCI库是静态链接的,但有一个动态链接库(不知道为什么,但AIX instantclient包这些文件来... )。我的LIBPATH对于这两个用户来说都不错:

LIBPATH=/dai/oracle/lib 

我需要检查哪些其他权限?

编辑:我刚刚尝试运行truss(AIX等效于Linux strace)以查看发生了什么。作为戴用户运行时,我看不到它读取任何意外的文件。桁架似乎有问题的追踪一组的uid程序 - 在C应用程序的权限设定这样的:

dai:/dai/bin> ls -l stats_backup 
-rwsrwsr-x 1 dai  dai   6173358 Aug 12 10:08 stats_backup 

所以,我没有chmod a-s了一次又一次,它现在的作品!

所以程序运行没问题,但是一旦我把它放回去,它又会破坏。我无法运行s位置的桁架,这很难找出原因。在没有s位设置的情况下,该程序在其他情况下不起作用,所以这不是一个可行的解决方案,但希望指出问题的出现位置。

+0

许多老用户在这里S.O.只要看看他们的兴趣/特色标记的消息,如果您将您的aix标签更改为unix,您会更加关注您的问题。祝你好运。 – shellter

+0

感谢您的建议,我会给它一个!实际上,当问及周围的人在工作时,事实证明Solaris上也存在一个极其类似的问题,所以无论出现什么问题,它都可能不是AIX特有的。 – asc99c

+0

它可能与ora客户端创建的'oradiag'目录有关,它的名字是'/ home/yourname/oradiag_yourname' –

回答

0

大概有一些Oracle数据文件位于其他用户无法访问的地方。 According to Google, ORA-12705是因为无法访问NLS数据文件(无论它们在哪里),或者可能存在一些环境变量问题。

+0

据我所知,相关文件是libociei.so。只要我没有设置NLS_LANG(并且只使用ASCII字符),OCI的东西都可以在没有这个的情况下运行。然而,该软件在西班牙运行,所以ASCII不是一个可行的选择。 – asc99c

+0

您应该在问题描述中包含此信息。你的问题似乎很好。鉴于你已经确定NLS_LANG是一个问题,你有没有将2个用户环境区分为可能会在作品中抛出扳手的其他变量?祝你好运! – shellter

相关问题