Oracle C and C++ Interfaces

Oracle Database supports C and C++ programmers with a choice of high performance APIs, including standards-compliant, open-source and proprietary interfaces.

Oracle Call Interface (OCI)

Oracle Call Interface (OCI) is the comprehensive, high performance, native C language interface to Oracle Database for custom or packaged applications.

OCI is highly reliable. Oracle tools such as SQL*Plus, Real Application Testing (RAT), SQL*Loader, and Data-Pump all use OCI. OCI provides the foundation on which other language-specific interfaces such as Oracle JDBC-OCI, Oracle Data Provider for Net (ODP.Net), Oracle Precompilers, Oracle ODBC, and Oracle C++ Call Interface (OCCI) drivers are built. OCI is also used by leading scripting language drivers such as node-oracledb for Node.js, PHP OCI8, ruby-oci8, Perl DBD::Oracle, Python cx_Oracle, and the statistical programming language R's ROracle driver.

A broad range of customers including Fortune 500 customers and ISVs develop high performance applications directly in OCI.

OCI libraries are included by default in Oracle Database 18c. OCI is also in the lightweight Oracle Instant Client, allowing ISVs and customers to quickly install and deploy OCI applications and tools. See the Oracle Instant Client page for more information.

Oracle Database Programming Interface for C (ODPI-C)

New! ODPI-C 2.4.1 is available with improved support for CQN and AQ

Oracle Database Programming Interface for C (ODPI-C) is a new open source library of C code that simplifies the use of common OCI features for Oracle Database drivers and user applications.

ODPI-C is a thin layer on top of OCI and requires Oracle client libraries.

ODPI-C's goal is to expose common OCI functionality in a readily consumable way to the C or C++ developer. OCI's API is extremely flexible and is highly efficient, giving very fine-grained control to the developer for a wide range of use cases. ODPI-C is also flexible but is aimed primarily at language driver creators. These creators are programming within the confines of a scripting language's type system and semantics. The languages often expose simplified data access to users through cross-platform, 'common-denominator' APIs. Therefore ODPI-C provides easy to use functionality for common data access, while still providing the power of Oracle Database.

Of course ODPI-C isn't just restricted to drivers. ODPI-C is licensed under the Apache 2.0 and/or the Oracle UPL licenses, so the code can be resused in your own projects.

Oracle C++ Call Interface (OCCI)

Based on the Standard C++ and object-oriented paradigm, OCCI is designed for improved productivity and quality in developing Oracle Database applications.

OCCI is being successfully used for client-server, middle-tier, and complex object modeling applications.

OCCI is the natural interface for accessing Oracle object-relational features like object types, inheritance, relationships and collections. Objects are represented as C++ class instances in OCCI leading to seamless integration between the application and database. The navigational access method with the client object cache provides complete database transparency.


The Oracle ODBC driver for Oracle Database enables ODBC applications to connect to Oracle Database. In addition to standard ODBC functions, users can leverage Oracle specific features for high performance data access.

The Oracle ODBC driver is an ODBC 3.52 compliant driver and is available as an easy to install Oracle Instant Client package.