Oracle ODBC
Driver 12.1
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), help file (on Unix and Windows platforms), 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
12.1
- Oracle Database Server
Oracle ODBC Driver complies with ODBC 3.52
specifications.
NEW FEATURES
ODBC 12.1.0.1.0
Features of the Oracle ODBC Driver release 12.1.0.1.0 software for the Microsoft Windows Server 2008, Windows Server 2008 R2, Windows 7,Windows 8, Windows Server 2012,Linux X86-64 (32/64 bit), Sun Solaris SPARC64 (32,64 bit), IBM AIX 5L (32,64 bit), Sun Solaris X64 (32,64bit), HPUX IA64 (32,64 bit), ZLinux (32,64 bit) operating systems are described as follows:
- Oracle ODBC Driver now supports 32 KB data columns with VARCHAR2, NVARCHAR2 and RAW data. See Oracle Database PL/SQL Language Reference and Oracle Database SQL Language Reference for information about creating 32 KB columns.
- ODBC driver supports the migration of third-party applications to Oracle Databases by using the SQL Translation Framework. This enables non-Oracle database SQL statements to run against Oracle Database.For using this feature with an ODBC application, you must specify the service name, which was created as part of SQL Translation Framework setup, as the ServerName= entry in the .odbc.ini file.If you require support for translation of Oracle errors (ORA errors) to your the native database, once your application starts running against Oracle Database, then you must enable the SQLTranslateErrors=T entry in the .odbc.ini file.
Refer Oracle Database Migration Guide on "How to Use SQL Translation Framework" before migrating a third-party ODBC application to Oracle Database.
- Oracle ODBC driver now supports executing a stored procedure, which can return implicit results without using RefCursor. This support eases any third party ODBC application, which migrated to Oracle and wants to use this same functionality that was provided by their previous vendors.
Refer "Oracle Database Migration Guide" for more information about implicit results support by Oracle Database.
- Extended support of SQLColAttribute() field identifiers to support Oracle Database auto increment feature. You can use this feature by including Oracle ODBC driver specific header file sqora.h in the application. See Oracle Call Interface Programmer's Guide for more information about auto increment:
- SQL_COLUMN_AUTO_INCREMENT
Starting from Oracle Database Release 12c Release 1 (12.1), Oracle supports auto increment columns so the Oracle ODBC Driver has extended the same support through the existing SQLColAttribute() identifier SQL_COLUMN_AUTO_INCREMENT. This property is read only and returns SQL_TRUE if the column is auto increment; otherwise, it returns SQL_FALSE.
- SQL_ORCLATTR_COLUMN_PROP
Starting from Oracle Database Release 12c Release 1 (12.1), Oracle ODBC Driver supports a new driver specific field identifier SQL_ORCLATTR_COLUMN_PROP, which returns the attributes of the column. This identifier returns SQLULEN value, which has all the column properties, shown as follows:
+-----------------------------------------+
| 32 |...| 10 | 9 | 8 |......| 3 | 2 | 1 |
+-----------------------------------------+
| | |
| | |-> Column is auto-increment?
| |-> Auto value is always generated?
|-> If generated by default when null?
ODBC 11.2.0.1.0
- 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 APIs. The change has been done to
increase the performance of ODBC driver for catalog APIs. The default
value for the option is TRUE which means that RULE Hint will not be
used in catalog APIs 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.
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 contact your Oracle Sales Representative,your local Oracle Sales office or call 1-800-633-0738.Outside of the United States please call 650-506-5701. Please note that Oracle will not provide support for the Oracle ODBC Driver unless a support contract is in place.
SOFTWARE REQUIRED
Oracle ODBC driver was certified against
- Windows OS versions:Windows Server 2008, Windows Server 2008 R2, Windows 7,Windows 8, Windows Server 2012
- Unix versions: 32 and 64 bit ports of Linux X86-64,AIX5L,Solaris.Sparc64,Solaris X64,HPUX.IA64,ZLinux
Oracle Net Client 12.1
Oracle Universal Installer shipping with Oracle
12.1
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
HARDWARE REQUIRED
The Oracle ODBC Driver requires a system
configuration supported by certified Windows platforms as mentioned in "SOFTWARE REQUIRED" section above and on few Unix platforms as documented in Oracle ODBC Driver for Unix Platforms Readme.
TESTING MATRIX
The following table summarizes the Windows OS
Versions on which ODBC driver was certified.
Driver Version
Database Version
Operating Systems
12.1.0.1
As Supported by OCI
Refer "SOFTWARE REQUIRED" section above
For testing matrix for Unix platforms, please
refer to Oracle ODBC Driver for Unix Platforms Readme.
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-3 below.
2. 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.
- 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.
- Oracle ODBC driver
does not support the usage of Keyset cursors with CASE clause in SELECT
SQL query.
3. ODBC
Driver For Unix platforms
To use Oracle ODBC driver on Unix platforms, please refer to the file Oracle ODBC Driver for Unix Platforms Readme for the setup instructions.
4. 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
12.1.0.1.0
- Oracle ODBC driver used to give ORA-1410 followed by access violation with SELECT statement
where table is created and values are inserted with DB character set as AL32UTF8. (Bug#10132342)
- Oracle ODBC driver used to return ORA-1002 when ODBC application executes and fetch huge number
of rows second time but does not repreapre and bind column second time.(Bug#10131881)
- Oracle ODBC driver used to throw ORA-932 on inserting a record view MFC Recordset.(Bug#9952132)
- Oracle ODBC driver used to return ORA-1461 or access violation when used with
SQL_RESET_PARAMS in SQLFreeStmt() API.(Bug#9903704)
- Oracle ODBC function SQLSetPos() used to over right 2 bytes after row status
buffer when it is called with SQL_UPDATE paramter.(Bug#9764806)
- Oracle ODBC driver never used to timeout when SQL_ATTR_QUERY_TIMEOUT statement
option is set to non-zero value on Unix platforms.(Bug#9714490)
- Oracle ODBC driver used to return ORA-1406 when application with client side
character set as AL32UTF8 trying to read data from single byte character set
database.(Bug#8927110)
- Oracle ODBC driver used to return ORA-1410 after applying 11.2.0.1 Patch 7 against UTF8 Oracle database. (Bug#10422748)
- ODBC data Source Administrator never used to show the fully qualified service
name in the drop down box.(Bug#10236704)
- Oracle ODBC driver used to fail when 'CREATE PROCEDURE' statement has wide character '\r'.
(Bug#14458246)
- Oracle ODBC driver used to throw pop up window of change-password repeatedly when DB password expired.
(Bug#10353128)
- ODBC driver used to hang/crash under multi threaded environment and there was
memory leak during mutliple connect/disconnect. (Bug#9850419)
- SQLGetData() API of Oracle ODBC driver used to consume more time during scalability of threads vs
process. Threaded version of application used to take more time than process.(Bug#9835629)
- Oracle ODBC driver used to fail with access voilation in SQLFetchScroll() API with SQL_FETCH_NEXT option.
(Bug#9578533)
- Oracle ODBC driver used to return wrong columns_size and buffer_length through SQLColumns() APIs for char columns.(Bug#9414079)
- Oracle ODBC driver used to return SQL_NO_DATA_FOUND when SQL_ROWSET_SIZE was set to more
than remaining rows.(Bug#9264668)
- Oracle ODBC driver used to hang when transferring ms access table data to oracle table.(Bug#8984021)
- Oracle ODBC driver used to truncate returned data when there are more characters
with multibyte in a selected row, with NLS_LENGTH_SEMANTICS=CHAR and AL32UTF8 DB character set.(Bug#8771556)
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-633-0738. Outside
of the United States please call 650-506-5701.
Copyright Oracle Corporation 2009,2013. 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.
Oracle12c and Oracle Net12 are trademarks of Oracle.
Microsoft, Microsoft Access, Microsoft
Query, MS,Windows Server 2008, Windows Server 2008 R2, Windows 7,Windows 8, Windows Server 2012 are trademarks of Microsoft Corporation. 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.