程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Instant Client連接oracle的環境變量設置

Instant Client連接oracle的環境變量設置

編輯:Oracle數據庫基礎

Instant ClIEnt連接Oracle數據庫,直接連接會出現問題,必須要設置環境變量,下面就讓我們來了解一下Instant ClIEnt連接Oracle的環境變量設置方法。

最近寫個代碼用OCI在局域網內鏈接Oracle數據庫,開始天真的以為像鏈MySQL數據庫那樣簡單:下載了頭文件和庫文件開發包後就可以直接鏈接數據庫了,結果我發現我錯了,Oracle聲名在外果然不是蓋的。

首先,去Oracle官網下載C語言的庫文件和頭文件網址如下,選擇對應的Instant ClIEnt版本(我下載的都是zip包,沒有下載rpm包,rpm包應該安裝的時候就把那些東西配置好了
http://www.Oracle.com/technology/software/tech/oci/instantclIEnt/index.Html
下面是Linux i386版本的
http://www.Oracle.com/technology/software/tech/oci/instantclIEnt/htdocs/Linuxsoft.Html
Instant ClIEnt Package - Basic     裡面包含了動態庫文件 libclntsh.so.11.1(最新版本可能不一樣) 並將其加載到動態庫搜索路徑中去,這裡就不說詳細步驟了,有疑問百度/狗狗搜索,實在不行在下面留言。
*Instant ClIEnt Package - SDK     這個則是包含的頭文件

運行程簡單的C鏈接序報錯: ORA-12541: TNS:no listener 網絡上一搜索都說是沒有配置好oracle數據庫的監聽器或者是監聽器沒有啟動,而那太oracle10g數據庫的監聽器明明啟動了,而且網內另外一太機器安裝了oracle client客戶端用sqlplus能鏈接並操作數據庫(那個標准client快500M,太肥了,不想裝),於是我也下載了sqlplus包: *Instant ClIEnt Package - SQL*Plus 配置好以後發現在終端運行sqlplus命令鏈接Oracle數據庫錯誤依舊:
ERROR:
ORA-12541: TNS:no listener
   
連sqlplus都報一樣的錯誤那就不是oci的問題了,是instant的環境配置問題鳥。在百度/狗狗上搜索一通,發現配置oracle的instant,要配置兩個環境變量參數:TNS_ADMIN 和 Oracle_HOME 。用export命令只對當前運行的系統有效,重啟系統後就沒了,因此要做到一次配置永久生效就要編輯 ~/.bashrc 文件,在文件末尾加上兩句:

  1. export TNS_ADMIN=/home/Oracle/network/admin  
  2. export Oracle_HOME=/home/Oracle 

注:Oracle_HOME 環境變量的路徑是解壓 Instant ClIEnt Package - Basic zip包的解壓路徑,路徑下包含了從Basic包裡解壓出來的so文件jar文件等。

TNS_ADMIN環境則是標識tnsnames.ora文件的路徑,在 ORACLE_HOME 路徑下新建立network文件夾,然後在network文件夾內新建admin文件夾在admin文件夾內有 tnsnames.ora 文件即可,至於為什麼TNS_ADMIN要這麼設置,oracle默認路徑的層次結構就是這樣,因此我也照抄,理論上說TNS_ADMIN 沒必要一定要在 Oracle_HOME 路徑裡面,我沒試過,誰有興趣可以去試試,我的tnsnames.ora是從其他機器上直接拷過來的,內容如下:

  1. # tnsnames.ora Network Configuration File: /home/oracle/Oracle/product/10.2.0/db_1/network/admin/tnsnames.ora  
  2. TEST =  
  3. (DESCRIPTION =  
  4.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))  
  5.     (CONNECT_DATA =  
  6.       (SERVER = DEDICATED)  
  7.       (SERVICE_NAME = test)  
  8.     )  
  9. )  
  10.  
  11. EXTPROC_CONNECTION_DATA =  
  12. (DESCRIPTION =  
  13.     (ADDRESS_LIST =  
  14.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
  15.     )  
  16.     (CONNECT_DATA =  
  17.       (SID = PLSExtProc)  
  18.       (PRESENTATION = RO)  
  19.     )  
  20. )  

配置好上面這些後,注銷用戶重新登錄,讓 Oracle_HOME 和 TNS_ADMIN 兩個環境變量生效,檢查方法很簡單,分別在終端輸入命令:

  1. [mgqw@localhost cutest]$ echo $Oracle_HOME  
  2. /home/Oracle  
  3. [mgqw@localhost cutest]$ echo $TNS_ADMIN  
  4. /home/Oracle/network/admin 

如果像上面那樣有路徑輸出則說明配置成功了,如果沒有輸出那重新再編輯一下 ~/.bashrc 看看哪裡出了問題吧。

檢查完成以後運行sqlplus登錄數據庫成功,運行C程序鏈接數據庫也成功。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved