2013-10-28 73 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可以单独安装以使用即时客户端而不需要完整的客户端。

相关问题