2011-09-29 33 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

相關問題