2013-10-28 135 views
3

對不起,我是這個問題很幼稚,但相同的是我與主題體驗真實的。OCI與即時客戶端SDK與Oracle數據庫

從我的理解,我只是想確認理解是正確的使然。歡迎大家指出我錯在哪裏。

  1. OCI基本上是一組API,其中C/C++程序員可以使用寫C/C++ 應用程序訪問Oracle數據庫。

  2. 一個)Oracle即時客戶端SDK是一個(DLL /共享庫),其使用OCI(???)。的C/C++ 由C/C++程序員鏈接到Oracle即時客戶端庫& 編寫的代碼,因此使用OCI爲好。 b)即時客戶端的好處是它可以讓程序員輕鬆地編寫一些 複雜的代碼(??)。 三)即使C/C++程序員不使用即時客戶端庫,他們仍然可以使用OCI &完成工作(這是正確的?)

    d)這是真的嗎? C/C++程序員只需要OCI庫來編寫一個應用程序,它連接到遠程Oracle數據庫&做表操作?我們是否需要任何ODBC驅動程序的ODBC
    ?如果是,爲什麼? oci.lib會不夠嗎?

  3. 是什麼Oracle客戶端&即時Oracle客戶端之間的區別? Instant Oracle客戶端只是FULL Oracle客戶端的一個子集,真的是 ?

  4. 我無法獲得即時客戶端的互操作性矩陣將各種各樣的 Oracle數據庫。在Oracle網站上搜索了很多。我唯一能找到的地方是鏈接 到我無法訪問的Oracle支持站點。

請澄清我的疑惑。提前謝謝了。

回答

3

簡言之:

  • OCI是C API libary。還有C++庫調用OCCI,但我不建議這樣做(你可以使用C的問題++ ABI更改/各種編譯器方言)

  • 都瞬間與「厚」 Oracle客戶端包含OCI庫(OCI.DLLlinclntsh.so) 。即時客戶端提供的一個或多或少是獨立的。 E.I.它不依賴於Oracle客戶端提供的其他庫(比較Linux上的ldd或Windows上的depwalk的輸出)。

  • 雙方還包含必要的標頭

  • 的C API在兩個客戶端實際上是相同的。我記得的唯一例外是一組受支持的數據庫本地字符集。 InstantClient僅支持UTF8,ISO Latin1ASCII

  • 「厚」客戶端還包含一個名爲「libxml的庫。一個」,當你想使用的數據類型SYS.XMLTYPE是必要的。這個庫是不是(不知什麼原因)與InstantClient

    捆綁
  • ‘厚’客戶端也包含像tnsping

  • InstantClient是一些有用的診斷工具很容易「設置」,用戶只需解壓一個.zip文件。不必設置ORACLE_HOMEPATHLD_LIBRARY_PATH信封變量。您只需dlopen()的一個庫文件,這一切。

  • InstanctCli耳鼻喉科可以不tnsnames.ora工作(儘管它支持它),而不是您可以使用類似JDBC EZCONNECT

  • 這兩種類型的客戶端可能無法重新分配,除非你是甲骨文的業務合作伙伴。所以你不能在你的應用程序中嵌入這些驅動程序的lib。每個用戶必須單獨下載。

  • 到目前爲止我還沒有找到如何區分InstantClient OCI.DLL庫的C API方式。

  • 有一個在InstantClient特定部分Oracle調用接口程序員指南

  • 我還記得當你設置ORACLE_HOME ENV可能有一些問題InstantClient。變量,它的價值端(?或者沒有結束?)用斜線'/'

0

Oracle即時客戶端是全/「厚」客戶端的一小部分。它包括OCI C庫,JDBC和ODBC,使用C,Perl,Python,Java,Scala等編寫的程序可以連接到Oracle數據庫服務器。即時客戶端不包含熟悉的Oracle工具,如sqlplus,sqlldr,exp,imp等。但是,sqlplus可以單獨安裝以使用即時客戶端而不需要完整的客戶端。

相關問題