user1940257
user1940257

Reputation:

OCI & Instant Client SDK & Oracle Database

Sorry for being the question very naive but the same is true for my experience with the subject.

From the googling what i understood i just want to confirm that the understanding is correct. Everyone is welcome to pin point where i am wrong.

  1. OCI is basically a set of APIs which the C/C++ programmers can use to write C/C++ applications to access Oracle Database.

  2. a) Oracle instant client SDK is a (DLL/Shared library) which USES OCI (???). The C/C++ code written by C/C++ programmers links to the Oracle instant client libraries & hence uses OCI as well. b) The benefit of instant client is that it eases the programmers pain to write some complex code(??). c) Even if C/C++ programmer doesn't use Instant Client libraries, they can still use OCI & get the work done (Is this correct??)

    d) Is this true? C/C++ programmers just need OCI library to write an application which connects to Remote Oracle database & does table operations? Do we need any ODBC
    drivers also? If yes, why? Won't oci.lib be enough?

  3. What is the difference between FULL Oracle Client & Instant Oracle Client? Is it true that Instant Oracle client is just a subset of FULL Oracle client?

  4. I am not able to obtain the interoperatibility matrix of Instant Client will various Oracle databases. Searched alot on Oracle website. The only thing i could find is link to Oracle support site which i can't access.

Please clarify my doubts. Many thanks in advance.

Upvotes: 3

Views: 2462

Answers (2)

Kjetil S.
Kjetil S.

Reputation: 3777

Oracle instant client is a small subset of the full/"thick" client. It includes the OCI C-libraries, JDBC and ODBC which makes is possible for programs written in C, Perl, Python, Java, Scala and so on to connect to an Oracle database server. Instant client dont include familiar Oracle tools like sqlplus, sqlldr, exp, imp and more. However, sqlplus can be installed separately to work with instant client without needing a full client.

Upvotes: 0

ibre5041
ibre5041

Reputation: 5288

Briefly:

  • OCI is C API libary. There is also C++ library called OCCI, but I do not recommend it(you can have problems with C++ ABI changes/dialects on various compilers)

  • Both Instant and "thick" Oracle client contain OCI library (OCI.DLL or linclntsh.so). The one provided by Instant client is more-or-less self-contained. e.i. it does not depend on other libs provided with Oracle client (compare output from ldd on Linux or depwalk on Windows).

  • Both also contain necessary headers

  • The C API in both clients is practically identical. The only exception I recall is a set of supported database native characters sets. InstantClient supports only UTF8, ISO Latin1 and ASCII.

  • "thick" client also contains a library named "libxml.a" which is needed when you want to use datatype SYS.XMLTYPE. This library is not (for some unknown reason) bundled with InstantClient

  • "thick" client also contains some handy diagnostic tools like tnsping

  • InstantClient is very easy to "setup". Users simply unpack a single .zip file. Do not have to set ORACLE_HOME PATH LD_LIBRARY_PATH env. variables. You simply dlopen() one library file and that's all.

  • InstanctClient can work without tnsnames.ora (although it supports it) instead of that you can use jdbc-like EZCONNECT

  • Both types of clients may not be re-distributed, unless you're Oracle businesses partner. So you must not embed these driver's lib in your application. Each user must download then separately.

  • So far I have not found a C API way how to distinguish InstantClient OCI.DLL libary.

  • There is InstantClient specific section in Oracle Call Interface Programmer's Guide

  • I recall there might be some problems with InstantClient when you set ORACLE_HOME env. variable and it's values ends (?or does not end?) with slash '/'

Upvotes: 3

Related Questions