2010-03-11 49 views
1

單聲道真的很棒。即使不重新編譯二進制文件,我們的一些應用程序也可以在Linux下使用。然而,我有困難的時間來配置oracle instantclient與單聲道使用它。如何爲單聲道配置oracle instantclient?

我在CentOS虛擬機上安裝了instantclient(通過安裝instantclient rpm),但是我沒有在任何地方找到TNSNAMES.ORA。

我搜索了甲骨文,我發現以下路徑包含甲骨文庫。

[[email protected] rupert]# ll /usr/lib/oracle/11.2/client/lib/ 
total 143280 
-rw-r--r-- 1 root root  7456 Aug 14 2009 cobsqlintf.o 
-rw-r--r-- 1 root root  342 Aug 14 2009 glogin.sql 
lrwxrwxrwx 1 root root  17 Mar 9 06:52 libclntsh.so -> libclntsh.so.11.1 
-rw-r--r-- 1 root root 40088477 Aug 14 2009 libclntsh.so.11.1 
-rw-r--r-- 1 root root 6986848 Aug 14 2009 libnnz11.so 
lrwxrwxrwx 1 root root  15 Mar 9 06:52 libocci.so -> libocci.so.11.1 
-rw-r--r-- 1 root root 1879549 Aug 14 2009 libocci.so.11.1 
-rw-r--r-- 1 root root 89377610 Aug 14 2009 libociei.so 
-rw-r--r-- 1 root root 152304 Aug 14 2009 libocijdbc11.so 
-rw-r--r-- 1 root root 1501651 Aug 14 2009 libsqlplusic.so 
-rw-r--r-- 1 root root 1218075 Aug 14 2009 libsqlplus.so 
-rw-r--r-- 1 root root 777979 Aug 14 2009 libsqora.so.11.1 
-rw-r--r-- 1 root root 1996228 Aug 14 2009 ojdbc5.jar 
-rw-r--r-- 1 root root 2111220 Aug 14 2009 ojdbc6.jar 
-rw-r--r-- 1 root root 298388 Aug 14 2009 ottclasses.zip 
drwxr-xr-x 3 root root  4096 Mar 9 06:52 precomp 
-rw-r--r-- 1 root root 37807 Aug 14 2009 xstreams.jar 

沒有TNSPING可用,沒有TNSNAMES.ORA,現在如何配置使用這個作爲Oracle客戶端的單?以及如何在app.config連接字符串部分指定oracle數據庫?

雖然mono是一個功能強大的框架,但它似乎有像linux一樣的問題,所有文檔只在郵件列表中可用,而官方網站上提供的任何文檔對於普通用戶來說都是過時的或不明確的。

希望事情很快就會改變,Mono將爲Linux編程框架。

+2

關於您最後的聲明,您可能會發現這篇文章有趣:http://www.fsf.org/news/dont-depend-on-mono。 – Blair 2010-03-11 05:25:52

回答

3

使用oracle easy connect命名方法或自己在正確的位置創建一個tnsnames.ora(查看位置搜索順序的即時客戶端文檔)。 tnsping不屬於即時客戶端(或任何附加軟件包)的組成部分。

即時客戶端faq 如何確保在Instant Client中使用我的「tnsnames.ora」文件? 始終將TNS_ADMIN環境變量或註冊表設置設置爲tnsnames.ora文件的完整路徑。這種做法將確保您在使用Instant Client運行時爲您的應用程序使用適當的tnsnames.ora。

如何在即時客戶端模式下指定連接字符串? 所有不需要使用ORACLE_HOME或TNS_ADMIN(定位配置文件,如tnsnames.ora或sqlnet.ora)的Oracle網絡命名方法都可以在即時客戶端模式下工作。特別地,所述連接字符串可以在下列格式來指定:

形式的SQL連接URL字符串:

//主機[端口] [/服務名稱]

如:

//質數據庫服務器-5:4321 /訂單

作爲Oracle網絡關鍵字值對。例如:

「(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = dlsun242) (PORT = 5521)) (CONNECT_DATA =(SERVICE_NAME = bjava21)))」

命名方法那如果設置了TNS_ADMIN環境變量,則需要TNS_ADMIN來定位配置文件才能繼續工作。

如果未設置TNS_ADMIN環境變量,並且使用了TNSNAMES條目(如inst1等),則必須設置ORACLE_HOME變量,並且配置文件應該位於$ ORACLE_HOME/network/admin目錄。

請注意,本例中的ORACLE_HOME變量僅用於查找Oracle Net配置文件,而客戶端代碼庫(OCI,NLS等)的其他組件不使用ORACLE_HOME的值。

不支持遺留適配器或空連接字符串。但是,使用空連接字符串的另一種方法是將UNIX上的TWO_TASK環境變量或Windows上的LOCAL變量設置爲tnsnames.ora條目或Oracle Net關鍵字 - 值對。如果TWO_TASK或LOCAL設置爲tnsnames.ora條目,則必須能夠通過TNS_ADMIN或ORACLE_HOME設置加載tnsnames.ora文件。

+0

@羅伯特這是非常有幫助的。 – funwithcoding 2010-03-11 13:49:34

2

單聲道不知道在哪裏搜索「libclntsh.so」。在我的系統上「libclntsh.so」可用@ /usr/lib/oracle/11.2/client/lib/。我的問題通過執行以下命令得到解決

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib/ 
+0

+1進行跟進 – 2010-03-19 11:54:03