Skip Headers
Oracle® Call Interface Programmer's Guide,
11g Release 1 (11.1)

Part Number B28395-01
Go to Documentation Home
Go to Book List
Book List
Go to Table of Contents
Go to Index
Go to Master Index
Master Index
Go to Feedback page
Contact Us

Go to previous page
Go to next page
View PDF

D Getting Started with OCI for Windows

This appendix describes only the features of OCI that apply to the Windows 2003, Windows 2000, and Windows XP operating systems. Windows NT is no longer supported.

This chapter contains these topics:

What Is Included in the OCI Package for Windows?

The Oracle Call Interface for Windows package includes:

The OCI for Windows package includes the additional libraries required for linking your OCI programs.

See Also:

"OCI Instant Client" for a simplified OCI installation option.

Oracle Directory Structure for Windows

OCI is included in the default Oracle Database installation. When you install Oracle Database, Oracle Universal Installer creates the OCI files in the oci, bin, and precomp directories under the ORACLE_BASE\ORACLE_HOME directory. These files include the library files needed to link and run OCI applications, and link with other Oracle for Microsoft Windows products, such as Oracle Forms.

The ORACLE_BASE\ORACLE_HOME directory contains the following directories that are relevant to OCI:

Table D-1 ORACLE_HOME Directories and Contents

Directory Name Contents


Executable and help files


Oracle Call Interface directory for Windows files


Header files, such as oci.h and ociap.h


Sample programs


Object Type Translator utility and default configuration file

Sample OCI Programs for Windows

When OCI is installed, a set of sample programs and their corresponding project files are copied to the ORACLE_BASE\ORACLE_HOME\oci\samples subdirectory. Oracle recommends that you build and run these sample programs to verify that OCI has been successfully installed and to familiarize yourself with the steps involved in developing OCI applications.

To build a sample, run a batch file(make.bat)at the command prompt. For example, to build the cdemo1.c sample, enter the following command in the directory samples:

C:> make cdemo1

After you finish using these sample programs, you can delete them if you choose.

ociucb.c should be compiled using ociucb.bat. This batch file creates a DLL and places it in the ORACLE_BASE\ORACLE_HOME\bin directory. To load user callback functions, set the environment registry variable ORA_OCI_UCBPKG to OCIUCB.

Compiling OCI Applications for Windows

When you compile an OCI application, you must include the appropriate OCI header files. The header files are located in the \ORACLE_BASE\ORACLE_HOME\oci\include directory.

For Microsoft Visual C++, specify \ORACLE_BASE\ORACLE_HOME\oci\lib\msvc in the libraries section of the Option dialog box. For the Borland compiler, specify \ORACLE_BASE\ORACLE_HOME\oci\lib\bc.

For example, if you are using Microsoft Visual C++ 8.0, you need to put in the appropriate path, \oracle\ora10\oci\include, in the Directories page of the Options dialog in the Tools menu.


The only Microsoft Visual C++ releases supported for the current OCI release are 7.1 or higher.

See Also:

Your compiler's documentation for specific information about compiling your application and special compiler options

Linking OCI Applications for Windows

The OCI calls are implemented in dynamic link libraries (DLLs) that Oracle provides. The DLLs are located in the ORACLE_BASE\ORACLE_HOME\bin directory and are part of the Required Support Files (RSFs).

Oracle only provides the oci.lib import library for use with the Microsoft Compiler. Borland compiler is also supported by Oracle for use with OCI. Oracle recommends that applications must always link with oci.lib to avoid re-linking or compilation with every release.

When using oci.lib with the Microsoft Compiler, you do not have to indicate any special link options.


Oracle recommends that applications be linked with oci.lib, which takes care of loading the correct versions of the Oracle DLLs.

Client DLL Loading When Using Load Library()

The following directories are searched in this order by LoadLibrary():

  • Directory from which the application is loaded or the directory where oci.dll is located

  • Current directory

  • Windows:

    • 32-bit Windows system directory (system32). Use the GetWindowsDirectory() function to obtain the path of this directory.

    • 16-bit Windows directory (system). There is no Win32 function that obtains the path of this directory, but it is searched.

  • Directories that are listed in the PATH environment variable

Running OCI Applications for Windows

To run an OCI application, ensure that the entire corresponding set of Required Support Files (RSFs) is installed on the computer that is running your OCI application.

The Oracle XA Library

The XA Application Program Interface (API) is typically used to enable an Oracle database to interact with a transaction processing (TP) monitor, such as:

You can also use TP monitor statements in your client programs. The use of the XA API is supported from OCI.

The Oracle XA Library is automatically installed as part of Enterprise Edition. Table D-2 lists the components created in your Oracle home directory. oci.lib now contains the XA exports:

Table D-2 Oracle XA Components

Component Location



Compiling and Linking an OCI Program with the Oracle XA Library

To compile and link an OCI program:

  1. Compile program.c by using Microsoft Visual C++ or the Borland compiler, making sure to include ORACLE_BASE\ORACLE_HOME\rdbms\xa in your path.

    Table D-3 Link Libraries

    Library Location




    ORACLE_BASE\ORACLE_HOME\oci\lib\msvc or,


  2. Link program.obj with the following libraries shown in Table D-3:

  3. Run program.exe.

Using XA Dynamic Registration

The database supports the use of XA dynamic registration. XA dynamic registration improves the performance of applications interfacing with XA-compliant TP monitors. For TP Monitors to use XA dynamic registration with an Oracle database on Windows, you must add either an environmental variable or a registry variable to the Windows computer on which your TP monitor is running. See either of the following sections for instructions:

Adding an Environmental Variable for the Current Session

Adding an environmental variable at the command prompt affects only the current session.

Adding an Environmental Variable:

From the computer where your TP monitor is installed, enter the following at the command prompt:

C:\> set ORA_XA_REG_DLL = vendor.dll

where vendor.dll is the TP monitor DLL provided by your vendor.

Adding a Registry Variable for All Sessions

Adding a registry variable affects all sessions on your Windows computer. This is useful for computers where only one TP monitor is running.

Adding a Registry Variable:

  1. Go to the computer where your TP monitor is installed.

  2. Enter the following at the command prompt:

    C:\> regedt32

    The Registry Editor window appears.


  4. Choose the Add Value option in the Edit menu. The Add Value dialog box appears.

  5. Enter ORA_XA_REG_DLL in the Value Name text box.

  6. Select REG_EXPAND_SZ from the Datatype list box.

  7. Choose OK. The String Editor dialog box appears.

  8. Type vendor.dll in the String field, where vendor.dll is the TP monitor DLL provided by your vendor.

  9. Choose OK. The Registry Editor adds the parameter.

  10. Choose Exit from the Registry menu.

    The registry exits.

XA and TP Monitor Information

Refer to the following general information about XA and TP monitors:

Using the Object Type Translator for Windows

The Object Type Translator (OTT) is used to create C struct representations of objects that have been created and stored in a database.

To take advantage of objects run OTT against the database, and a header file is generated that includes the C structs. For example, if a PERSON type has been created in the database, OTT can generate a C struct with elements corresponding to the attributes of PERSON. In addition, a null indicator struct is created that represents null information for an instance of the C struct.

The INTYPE file tells the OTT which object types should be translated. This file also controls the naming of the generated structs.


The INTYPE File Assistant is not available, starting with Oracle Database 10g Release 1.

Note that the CASE specification inside the INTYPE files, such as CASE=LOWER, applies only to C identifiers that are not specifically listed, either through a TYPE or TRANSLATE statement in the INTYPE file. It is important to provide the type name with the appropriate cases, such as TYPE Person and Type PeRsOn, in the INTYPE file.

OTT on Windows can be invoked from the command line. Additionally, a configuration file may be named on the command line. For Windows, the configuration file is ottcfg.cfg, located in ORACLE_BASE\ORACLE_HOME\precomp\admin.