oracle連線串的一種寫法

左直拳發表於2016-07-15

我在.NET專案裡訪問oracle,向來是規規矩矩地這樣寫:

DATA SOURCE=PDBGZFBC;PASSWORD=test;PERSIST SECURITY INFO=True;USER ID=123;

那麼這個 PDBGZFBC 只是一個名稱,它定義在oracle客戶端的檔案tnsnames.ora裡:

PDBGZFBC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.22)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = GZFBC)
    )
  )

我對oracle並不十分了解,雖然許多年以前,有用過一兩年,但當時也不怎麼懂,記性又不好,早忘得光噹噹的了。去年來到現在公司以後,反正見大家都這麼寫,也很乖地一直這麼寫。認為天經地義。

因為這次開發win form桌面程式,也同樣需要訪問oracle。問題是,本機作業系統64位,而oracle客戶端是32位,在沒有IIS支援的情況下,只好下載了64位的OCI.dll來支撐。但是,tnsnames.ora是屬於32位oracle客戶端的,所以,上面這個連線串
DATA SOURCE=PDBGZFBC;PASSWORD=test;PERSIST SECURITY INFO=True;USER ID=123;
在執行的時候就報錯了。

是否我!真的要裝一個64位的oracle客戶端?!

在網上尋尋覓覓,得到靈感。直接將連線串改成醬紫:

Server=(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.22)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = GZFBC)
    )
  );PASSWORD=test;PERSIST SECURITY INFO=True;USER ID=123;

呵呵,搞定。

相關文章