docs.intersystems.com
Home  /  Application Development: Language Bindings and Gateways  /  Using ODBC with InterSystems Products  /  Using InterSystems IRIS as an ODBC Data Source on UNIX®


Using ODBC with InterSystems Products
Using InterSystems IRIS as an ODBC Data Source on UNIX®
[Back]  [Next] 
InterSystems: The power behind what matters   
Search:  


An external application can use InterSystems IRIS™ as an ODBC data source. This chapter describes how to do this on UNIX®. It discusses the following topics:
If you are performing custom configuration of the InterSystems ODBC driver on UNIX®, you should be familiar with using UNIX®, compiling and linking code, writing shell scripts, and other such tasks.
Note:
The sample ODBC initialization file and test files may include the _SYSTEM/SYS or _system/sys username-password pair in unencrypted form. It is recommended that you remove this data before deployment; it is also recommended that you remove the _SYSTEM account before deployment.
Key File Names
Depending on your configuration needs, it may be useful to know the specific file names of some of the installed components. In the following lists, install-dir is the InterSystems IRIS installation directory (the path that $SYSTEM.Util.InstallDirectory() returns on your system).
ODBC driver managers
The install-dir/bin/ directory contains the following driver managers:
Note:
ODBC on 64-bit UNIX® platforms
Between releases of the ODBC specification, various data types such as SQLLen and SQLULen changed from being 32-bit values to 64-bit values. While these values have always been 64-bit on iODBC, they have changed from 32-bit to 64-bit on unixODBC. As of unixODBC version 2.2.14, the default build uses 64-bit integer values. InterSystems IRIS drivers are available for both 32-bit and 64-bit versions of unixODBC.
InterSystems ODBC client drivers
InterSystems ODBC client drivers are provided for both ODBC 2.5 and ODBC 3.5. The ODBC 3.5 versions will convert 3.5 requests to the older 2.5 automatically, so in most cases either driver can be used. The install-dir/bin/ directory contains the following versions (*.so or *.sl):
iODBC-compliant drivers
unixODBC-compliant drivers
InterSystems SQL Gateway drivers
The install-dir/bin/ directory contains the following versions of the shared object used by the InterSystems SQL Gateway (see Using the InterSystems IRIS SQL Gateway). This enables you to connect from InterSystems IRIS to other ODBC client drivers. These files are not installed if you perform a stand-alone installation.
linked against iODBC
linked against unixODBC
Other files
The install-dir/mgr/irisodbc.ini file is a sample ODBC initialization file.
The files for the test programs are discussed in Testing the InterSystems ODBC Configuration.
Troubleshooting for Shared Object Dependencies
After installing, you should validate dependencies on other shared objects and correct any problems. The process is as follows:
  1. Use the appropriate command to list the dynamic dependencies of the InterSystems ODBC driver.
    For example, on Solaris and other platforms, the command is ldd:
    # ldd install-dir/bin/libirisodbc.so
    Here install-dir is the directory where InterSystems IRIS is installed. If no dependencies are found, you will see a message like the following:
    libstlport_gcc.so => not found
  2. If there are no errors, then all dependencies are valid; if there are errors, run the following commands to force the shared object loader to look in the current directory:
    # sh
    # cd install-dir/bin
    # LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
    # export LD_LIBRARY_PATH
    
    The sh command starts the Bourne shell; the cd command changes to the appropriate directory; and the export command sets the path to look up shared objects.
    Note that on AIX®, you would use LIBPATH instead of LD_LIBRARY_PATH.
  3. Once you have added the current directory to the path, run ldd again and check for missing dependencies. If any shared objects cannot be found, add them to the same directory as the ODBC client driver.
Configuring the ODBC Initialization File
This section describes how to create a DSN for an InterSystems IRIS database on UNIX®, which you do by editing the ODBC initialization file. InterSystems IRIS provides a sample.
Introduction to the UNIX® ODBC Initialization File
The ODBC initialization file is used as follows:
Name and Location of the Initialization File
The initialization file can have any name, but, typically, it is called .odbc.ini when it is located in a user’s personal directory, odbc.ini when located in an ODBC-specific directory. The InterSystems IRIS sample is called irisodbc.ini and is located in the install-dir/mgr directory.
To locate this file, the InterSystems ODBC client driver uses the same search order as iODBC. It looks for the file in the following places, in this order:
  1. The file specified by the ODBCINI environment variable, if this is defined. When defined, this variable specifies a path and file, such as:
    ODBCINI=/usr/irissys/irisodbc.ini
    export ODBCINI
  2. The .odbc.ini file in the directory specified by the user’s $HOME variable, if $HOME is defined and if .odbc.ini exists.
  3. If $HOME is not defined, the .odbc.ini file in the “home” directory specified in the passwd file.
  4. The file specified by the system-wide SYSODBCINI environment variable, if this is defined. When defined, this variable specifies a path and file, such as:
    SYSODBCINI=/usr/irissys/irisodbc.ini
    export SYSODBCINI 
  5. The file odbc.ini file located in the default directory for building the iODBC driver manager (/etc/), so that the full path and file name are /etc/odbc.ini.
To use a different odbc.ini file, delete or rename the InterSystems IRIS sample initialization file to allow the driver manager to search the $HOME or /etc/odbc.ini paths. For example, go to <iris_sys>/bin and execute the following command:
    mv libodbc.so libodbc.so.old 
and then move your user-defined odbc.ini to etc/odbc, where the driver manager can find it.
Details of the ODBC Initialization File
The following is a sample initialization file for the InterSystems ODBC driver:
[ODBC Data Sources]
sampleodbc=sampleodbc

[sampleodbc]
Driver          = /usr/irissys/bin/libirisodbc.so
Description     = InterSystems IRIS ODBC driver
Host            = localhost
Namespace       = USER
UID             = _SYSTEM
Password        = SYS
Port            = 51773
Protocol        = TCP
Query Timeout   = 1
Static Cursors  = 0
Trace           = off
TraceFile       = iodbctrace.log
Authentication Method   = 0
Security Level          = 2
Service Principal Name  = iris/localhost.domain.com

[Default]
Driver = /usr/irissys/bin/libirisodbc.so
This file includes the following variables:
For more information on Kerberos, see the Security Administration Guide.
Custom Installation and Configuration for iODBC
If you want to build your own iODBC driver manager to operate under custom conditions, you can do so. The iODBC executable and include files are in the directory install-dir/dev/odbc/redist/iodbc/. You need to set LD_LIBRARY_PATH (LIBPATH on AIX®) and the include path in order to use these directories to build your applications.
If you want to customize the iODBC driver manager, you can also do that. Download the source from the iODBC Web site (www.iodbc.org) and follow the instructions.
Configuring PHP with iODBC
You can use the ODBC functionality of InterSystems IRIS in conjunction with PHP (PHP: Hypertext Processor, which is a recursive acronym). PHP is a scripting language that allows developers to create dynamically generated pages. The process is as follows:
  1. Get or have root privileges on the machine where you are performing the installation.
  2. Install the iODBC driver manager. To do this:
    1. Download the kit.
    2. Perform a standard installation and configuration, as described earlier in this chapter.
    3. Configure the driver manager for use with PHP as described in the iODBC+PHP HOWTO document on the iODBC web site (www.iodbc.org).
    Note that LD_LIBRARY_PATH (LIBPATH on AIX®) in the iODBC PHP example does not get set, due to security protections in the default PHP configuration. Also, copy libiodbc.so to /usr/lib and run ldconfig to register it without using LD_LIBRARY_PATH.
  3. Download the PHP source kit from http://www.php.net and un-tar it.
  4. Download the Apache HTTP server source kit from http://httpd.apache.org/ and un-tar it.
  5. Build PHP and install it.
  6. Build the Apache HTTP server, install it, and start it.
  7. Test PHP and the Web server using info.php in the Apache root directory, as specified in the Apache configuration file (often httpd.conf). The URL for this is http://127.0.0.1/info.php.
  8. Copy the InterSystems IRIS-specific initialization file, irisodbc.ini to /etc/odbc.ini because this location functions better with the Apache Web server if the $HOME environment variable is not defined.
  9. Configure and test the libirisodbc.so client driver file.
  10. Copy the sample.php file from the InterSystems ODBC kit to Apache root directory (that is, the directory where info.php is located), and tailor it to your machine for the location of InterSystems IRIS.
  11. You can then run the sample.php program, which uses the InterSystems IRIS USER namespace, by pointing your browser to http://127.0.0.1/sample.php
Testing the InterSystems ODBC Configuration
You should test the ODBC configuration to make sure that the InterSystems ODBC driver and the driver manager have been installed and configured correctly.
To test the ODBC configuration, you can use the following tools:
Using the Select Test Program
The InterSystems IRIS select test program consists of files in the directory install-dir/dev/odbc/samples/select
Modifying the Shell Script for the SELECT Test
You may need to modify the shell script (select.sh), depending on your configuration:
Using the SELECT Test
To use the test program:
  1. Execute the test script by typing the following:
    ./select dsn
    
    where dsn is the name of the DSN that you want to use in the test.
This test works as follows:
  1. The shell script calls the select program.
  2. The select program is linked to a driver manager, which reads the ODBC initialization file to get connection information for the given DSN.
  3. The driver manager determines the location of the InterSystems ODBC client driver and loads it into memory.
  4. The client driver then establishes a TCP/IP connection to the port specified in the ODBC initialization file and is connected to the given InterSystems IRIS namespace using the DSN definition from the ODBC initialization file.
  5. Once the connection is established, the client application executes your SELECT statement against the InterSystems IRIS database.