Oracle ODBC Driver 11.2

DESCRIPTION

The Oracle ODBC Driver enables applications to connect to Oracle database from a Windows client as well as from a Unix client that use Microsoft Open Database Connectivity (ODBC) API to read from and write to Oracle databases.

The Oracle ODBC Driver distribution kit consists of Dynamic Link Libraries/ shared libraries (for Unix platforms), Windows help file (for installations on Windows platforms only), a copy of the license and this product description. To use an ODBC enabled application the following software is required in addition to the Oracle ODBC Driver:

- Oracle Client & Net version 11.2
- Oracle Database Server

Oracle ODBC Driver complies with ODBC 3.52 specifications.

NEW FEATURES

ODBC 11.2.0.1.0

Features of the Oracle ODBC Driver release 11.2.0.1.0 software for the Microsoft Windows XP, Microsoft Windows 2003 Server, Microsoft Windows Vista, Linux X86-32 (RHEL AS 4,5), Linux X86-64 (RHEL AS 4,5) (32/64 bit), Sun Solaris SPARC64 (9,10) (32,64 bit), IBM AIX 5L 5.2 (32,64 bit), Linux IA64 (64 bit), Linux on Power (32,64 bit), Sun Solaris X64 (64 bit), Hewlett Packard Itanium (32,64 bit) operating systems are described as follows:

- Oracle ODBC driver has been enhanced to prefetch LONG/ LONG RAW data to improve performance of ODBC applications. To do this the maximum size of LONG data (MaxLargeData) has to be set in registry on Windows (also need to add the registry key “MaxLargeData” in the DSN), and in odbc.ini file on Unix platforms manually. This enhancement has improved the performance of Oracle ODBC driver up to 10 times, depending on the MaxLargeData size set by the user. The default value of MaxLargeData is 0. The maximum value for MaxLargeData that can be set by the user is 64KB (65536 bytes). Even if the value of MaxLargeData is set to some value greater than 65536, the data fetched will be 65536 bytes only. If uses has LONG/ LONG RAW data in database which is greater that 65536 bytes, MaxLargeData should be set to 0 (the default value), which will result in single row fetch and complete LONG data can be fetched. Incase the user has passed the buffer less than MaxLargeData size in non-polling mode, the data truncation error will occur if LONG data size in database is greater than the buffer size. (Enhancement Request 7006879).
- Oracle ODBC Driver is now made to support OCIDescribeAny() call (to get metadata) to improve performance in case of application making heavy calls to small packaged procedures that return REF CURSORS through option called "UseOCIDescribeAny" in odbc.ini. To use OCIDescribeAny() on Unix platforms, set "UseOCIDescribeAny" to "T" (True) in odbc.ini file and on Windows through registry in DSN. (Enhancement Request 7704827).

ODBC 11.1.0.1.0

- Added support for Disable RULE Hint. Oracle ODBC Driver now allows user to specify the option to select whether to use RULE Hint in catalog API’s. The change has been done to increase the performance of ODBC driver for catalog API’s. The default value for the option is TRUE which means that RULE Hint will not be used in catalog API’s by default. (Bug4150034).
- Added support for Bind Number As Float. By introducing Column Binding for NUMBER Column as FLOAT when column contains float data speeds up the query execution that uses bind variables as FLOAT. (Bug4608183).
- Added support for OCI statement caching feature that provides and manages a cache of statements for each session. By implementing the support for OCI Statement Caching option, Oracle ODBC Driver will see the increase in performance where user have to parse the same statement multiple times in the same connection. The default value for the statement cache flag is FALSE.
- Changed the behavior of Result-set cache by saving the un-necessary memory calls to increase the ODBC Driver Performance.

ODBC 10.2.0.1.0

- Added support for named parameter, binding parameters by name. Oracle ODBC Driver now allows application to specify the parameters to a stored procedure by name, in the procedure call. Named parameters are only to be used in calls to stored procedures, and not to be used in other SQL statements. (Bug3617324)
- Changed the behavior of describing metadata for stored procedures that exist in some package. The change has been done to increase the performance of ODBC driver for stored procedure calls. Now if the stored procedure is in some package then the metadata will be described using PL/SQL procedure. (Bug4030664)
- The support for Oracle ODBC Driver for Linux and Solaris platforms is introduced in 10.2.0.1 version. From release 10.2.0.4 ODBC Driver was made available for AIX platform as well.

# ODBC 10.1.0.2.0

- Added support for NCHAR columns in INSERT/UPDATE statements with parameter markers. (Bug 2827132) Previously the driver did not notice that the column was of NCHAR type and failed to set the proper attribute when binding at the OCI level. As a side effect the SQLDescribeParam call now returns useful information for parameters in INSERT/UPDATE statements, though not in other statement types.
- Added support for LOBs larger then 4gb. Requires the Oracle Client and Database to both be version Oracle 10g or higher.
- Added support for new BINARY_FLOAT and BINARY_DOUBLE datatypes in 10g and later servers.
- Added support for MONTHNAME and DAYNAME functions in SQL statements.

TESTING MATRIX

The following table summarizes the testing configurations on Windows XP that the ODBC driver was certified with.

The table is not meant to be a complete list of all supported environments.

Driver Database Operating

Version Version Systems MDAC

11.2.0.2 As Supported Windows XP 2.8

by OCI.

For testing matrix for Unix platforms, please refer to release notes on Oracle ODBC Driver for Unix platforms.

FUNCTIONALITY

The Oracle ODBC Driver complies with Version 3.52 of the Microsoft ODBC specification.

SOFTWARE SUPPORT

If you would like to receive Oracle Support for your Oracle ODBC Driver, please call (650) 506-5578 in the US, or contact your local Oracle Sales office. Please note that Oracle will not provide support for the Oracle ODBC Driver unless a support contract is in place.

HARDWARE REQUIRED

The Oracle ODBC Driver requires a system configuration supported by Windows XP and on few Unix platforms as documented in release notes.

SOFTWARE REQUIRED

Microsoft Windows XP and for Unix platforms refer to release notes on Oracle ODBC Driver release for Unix platforms.

Oracle Net Client 11.2

Oracle Universal Installer shipping with Oracle 11.2

SERVER SOFTWARE REQUIREMENTS

This section lists the server software required to support ODBC enabled applications through the Oracle ODBC Driver.

Oracle Server 10.2 or higher

MORE INFORMATION

1. Post-Installation

Use the Microsoft(R) ODBC Administrator to configure your Oracle ODBC Driver data sources on Windows. Refer to the Oracle ODBC driver help file section entitled Configuring the Data Source. For Unix Client refer to point-4 below.

2. Data Conversions

The Oracle ODBC Driver follows the Microsoft(R) ODBC 3.00 Software Development Kit (SDK) guidelines for manipulating and displaying real and double data types. Precision (the maximum number of digits used) of SQL_DOUBLE and SQL_FLOAT is 15.

If double values are stored in an Oracle database precision for these data types can be much greater than what ODBC currently supports. The end result will be the loss of precision. For Example:

A float data type defined in Oracle with the default precision contains a number such as:

123.9991029382123

When converted on the Windows Platform the number will drop precision to

123.999102938212

This loss of precision may have different behavior for different applications. For Microsoft Access(R), the user is not allowed to update the data. Microsoft Access(R) thinks the data has changed, because Oracle has the value 123.9991029382123 and Microsoft Access(R) now has the original but truncated number 123.99910293821. Microsoft Access(R) cannot update the row using the 123.99910293821 truncated number as a selection criteria since that row does not exist in the Oracle database. Only the original row with 123.9991029382123 exists in the Oracle database.

In Microsoft Query(R) the display will be incorrect. Lets take for example the following double precision number to display:

-1.123400000000000E-001

with Microsoft Query(R) the number is displayed as

-1.123400000000000E-00

Microsoft Query(R) makes a call to SQLColAttributes returning the display size of 22. The format defined in the ODBC SDK for display of a double precision data is the following:

Total 22 Length

(a sign,15 digits,a decimal point,the letter E,a sign and 3 digits)

Our example contains a total string length of 23 with 16 digits instead of the 15 digits for precision. This is why the data is displayed wrong.

In general to avoid precision problems using ODBC, ensure that data stored in the Oracle database for a double data type conform to the specifications described in the Microsoft ODBC Programmer's Reference and SDK Guide.

3. Known Software Problems for Oracle ODBC Driver

- The SQLSetStmtOption SQL_QUERY_TIMEOUT does not work if the database server is running on Windows NT. As a workaround,Setting BREAK_POLL_SKIP=1 in server's sqlnet.ora solves the problem. By default, this is set to 100, and the database would not check for timeout set by the ODBC application.
- SQLCancel does not work if you are canceling a statement that is executing on Windows NT database server.
- SQLBindParameter when used to bind a buffer as SQL_PARAM_INPUT_OUTPUT and having a pl/sql procedure with IN OUT parameter and if the parameter is not changed in the procedure,then driver will not return SQL_NULL_DATA in StrLen_or_IndPtr.

4. ODBC Driver For Unix platforms

Please refer to release notes of Oracle ODBC Driver for Unix platforms.

5. Software Problems Fixed

Note: Most of the fixes are generic in nature though may be discovered on a particular platform. There could be small number of platform specific fixes as well.

# Version 11.2.0.2.0

- ODBC driver used to abort when SQL Server EXEC statement containing procedure without parameters is passed and EXECSyntax=T(Bug#8393140)
- ODBC driver used to return wrong suffix and prefix lengths on 64-bit environment(Bug#8429289)
- ODBC driver used to fail during SQLConnect on AIX environment when when DM version is set to SQL_OV_ODBC2(Bug#8639577)
- ODBC application used to fail on Unix 64-bit environment when SQLFetchScroll() with bind type SQL_C_SLONG(Bug#8735155)
- ODBC driver used to truncate the data when there is multi-byte data in a selected row with combination of NLS_LENGTH_SEMANTICS=CHAR and AL32UTF8 char set(Bug#8771556)
- ODBC driver used to crash on Solaris sparc64 while executing the statement(Bug#8775499)
- ODBC driver used to crash on HPUXIA64 while fetching float/double data(Bug#8974909)
- ODBC Driver used to hang during transfer of MS access table data to oracle table(Bug#8984021)
- ODBC driver used to fail on Windows 64-bit while adding data source using SQLConfigDataSource() API(Bug#9023338)
- ODBC driver used to crash on Solaris while dealing with float/double(Bug#9058381)
- ODBC driver used return incorrect data on big endian environment when application binds date field to SQL_C_WCHAR(Bug#9070694)
- ODBC driver used to crash on Unix 64-bit environment when SQLGetConnectAttr() is used with pointer to unsigned int(Bug#9105601)
- ODBC driver used to map incorrect size for SQL_C_ULONG, SQL_C_SLONG and SQL_C_LON types on Unix 64-bit environment(Bug# 9463231)
- Unicode ODBC application used to fail while SQL execution(Bug# 9743383)
- ODBC Driver Configuration of "ODBC Data Source Administrator" used to show garbage values in the drop down list for "TNS Service Name" when TNS_ADMIN value is set in registry and not as environment variable(Bug# 8796983)

- ODBC Driver used to return no-data-found in case of SQLROWSET_SIZE is more than remaining rows application returns no-data-found when SQLROWSET_SIZE is set more than the remaining rows after first fetch(Bug# 9264668)

# Version 11.2.0.1.0

- ODBC Driver used to return wrong length for SQLBindCol on Solaris (port specific) (Bug 7660125)
- Memory leak was reported in ODBC driver while retrurning result set from stored procedure. (Bug 7586197)
- ODBC was failing to update the LONG RAW when size is more than 65536 (Bug 7585970)
- ODBC application used to fail with NULL password error when MTS is enabled (Bug 7509964)
- ODBC Driver used to return access violation on executing stored procedure. (Bug 7458976)
- ODBC application used to hang when more connections are created. (Bug 7388606)
- ODBC application used to crash when SQLSetParm() is called with string which is non NULL terminated. (Bug 7011807)
- ODBC Driver used to report ORA-24817 on querying bulk operation (Bug 6908070)
- ODBC Driver used to return wrong length and data for SQLGetData() when using NLS character in literal and with NLS settings as NLS_LENGTH_SEMANTICS= CHAR , NLS_CHARACTERSET = AL32UTF8. (Bug 6801797)
- ODBC driver used to crash on 64-bit environments while fetching data. (Bug 6801211)
- ODBC Driver used to show wrong types when using SQLDescribeParam(), SQLDescribeCol(), SQLColumns(), SQLGetTypeInfo(). (Bug 6598695)
- ODBC driver used to crash in SQLGetStmtAttr(). (Bug 6416638)
- ODBC driver used to report SIGBUS on Solaris SPARC as memory for cache blocks is not aligned. (Bug 6411945)
- ODBC Driver used to return [ORACLE][ODBC]Memory Allocation Error, while describing meta data for a procedure. (Bug 6085754)
- ODBC Driver used to report error on executing procedure after execution of insert statement. (Bug 5961436)
- ODBC Driver used to report ORA-24374, whenever a SQL Statement is preceded by any valid tokens which does not give the SQL Statement type. (Bug 5383456)
- ODBC Driver used to return same error message twice at SQLExecute(). (Bug 5222165)
- ODBC Driver used to return ORA-24374 when executing query including line comment. (Bug 4743995)

# Version 11.1.0.1.0

- ODBC driver used to fail in updating output parameter of stored procedure incase it contains large CLOB parameter as input parameter. (Bug5365475).
- ODBC Driver used to do improper round off for Double data if connecting to 10GB database. (Bug5389003).
- ODBC driver used to fail in updating output parameter of stored procedure incase it contains large CLOB parameter as input parameter.(Bug5365475).
- ODBC driver used to truncate CLOB data in case of UNICODE characterset of client. (Bug5220440).
- ODBC driver used to return old data on requering the data for Read Only connection. (Bug5202103).
- ODBC driver used to report ora-1008, when MFC application requeries the database. (Bug5147229).
- ODBC driver used to return wrong value on Fetching a NUMBER Value Which is converted to SQL_C_CHAR. (Bug5128512).
- ODBC driver used to return wrong information for few column types. (Bug5015342).
- ODBC driver used to report ORA-12704 on second invocation of SQLExecute() for NCLOB columns. (Bug4965677).
- ODBC Driver used to report crash on exit of ADO/Excel application. (Bug4893583).
- ODBC Driver used to return 0 as the Datatype on Calling SQLBindCol() after SQLColumns().This problem appears only on solaris platform but the fix is generic. (Bug4880062).
- ODBC Administrator used to show ODBC entries even after uninstalling the ODBC. (Bug4761792).
- ODBC driver used to truncate the data retrieved with SQLFetchScroll() call. (Bug4735799).
- ODBC driver used to result in application crash while executing stored procedure having large number of parameters. (Bug4727495).
- DM from UNIXODBC.ORG reports error: Driver does not support SQLSETSTMTATTR(). This is a port specific (Linux/Solaris) bug. (Bug4710548).
- ODBC driver used to report undefined symbol 'SLEEP' when failover happens. (Bug4698310).
- ODBC Driver used to report crash on inserting NULL data using bind offsets. (Bug4694220).
- ODBC Driver used to set the value corresponding to attribute SQL_ATTR_PARAMS_PROCESSED_PTR improperly in case of stored procedure execution with array binds. (Bug4690201).
- ODBC Driver used to report crash when returning an array of Varchars from an stored procedure. (Bug4690147).
- ODBC Driver use to give in complete result set incase the stored procedure contains REF CURSOR arguments. (Bug4624776).
- ODBC driver used to report error on executing stored procedure containing REF CURSOR parameters. (Bug4622561).
- ODBC Driver used to take more time for fetching data from a NUMBER column containing FLOAT data. (Bug4608183).
- ODBC driver used to return Duplicate results for SQLProcedures() API. (Bug4565416).
- ODBC Driver used to report memory leak for stored procedure containing REF cursors. (Bug4551675).
- ODBC Driver used to return ora-1406 when selecting calculated number with large precision from view. (Bug4546618).
- ODBC driver used to report crash for executing queries in multithreaded application. (Bug4519067).
- ODBC administrator used to invoke English ODBC help in Japanese environment. (Bug4506552).
- ODBC driver used to report error "Input string too long, limit 4096", when the long string contains CRLF code in the starting (Bug4371966).
- ODBC administrator used to get failed while opening help file under Instant Client environment. (Bug4309867).
- ODBC Driver used to return wrong data for stored procedures having NCLOB as OUT Param. (Bug4235212).
- ODBC catalogue functions used to take more time to complete. (Bug4150034).

****************************************************************************

For More Information

Contact your Oracle Sales Representative, your Oracle Sales Office, or call 1-800-ORACLE1. Outside of the United States please call 650-506-5701.

Copyright Oracle Corporation 2009. All Rights Reserved. Printed in the U.S.A. This document is provided for informational purposes only. No contract is implied or allowed. Oracle is a registered trademark. Oracle9 and Oracle Net9 are trademarks of Oracle. Microsoft, Microsoft Access, Microsoft Query, MS, Windows XP, Windows NT, Windows 2000 and Windows 98 are trademarks of Microsoft Corporation. PowerBuilder is a registered trademark of Sybase Inc. All other company and product names mentioned are used for identification purposes only, and may be trademarks of their respective owners. Oracle Corporation World Headquarters is located at 500 Oracle Parkway, Redwood Shores, CA 94065 U.S.A.