Driver Prerequisites
The DirXML® Driver for JDBC requires the following:
- Novell NsureTM Identity Manager 2
- Java Virtual Machine (JVM*) 1.2 or higher
- A third-party JDBC driver
Supported Platforms
The driver runs on all Identity Manager-enabled platforms, including Windows* NT*/2000, NetWare®, Solaris*, and Linux*.
Supported Databases
The driver uses the JDBC 1.0 API to execute SQL statements and obtain metadata from a database. As such, a database must be JDBC-accessible. The following databases have been tested and are recommended for use with this product:
IBM* DB2 Universal Database (UDB) |
7.2 or higher |
Microsoft* SQL Server 2000 |
Service Pack 2 or higher |
Microsoft SQL Server 7 |
Service Pack 4 |
Oracle 8i |
Release 3 (8.1.7) |
Oracle 9i |
Release 2 (9.2.0.1) or higher |
Sybase* Adaptive Server Enterprise (ASE) |
12.5 or higher |
MySQL* |
3.23 |
Informix* Dynamic Server (IDS) |
9.30 or higher |
You can use other databases; however, they must meet the following minimum requirements:
- Support the SQL-92 entry level grammar.
- Support triggers or some auditing capability suitable for event capture and replication (publication only).
Recommended Third-Party JDBC Drivers
We recommend using type 3 or type 4 third-party JDBC drivers whenever possible. We also recommend using the latest version of these drivers. If you choose to use a type 1 or type 2 driver, you must use the remote loader to ensure the integrity of the directory process.
The following third-party drivers have been tested and are recommended for use with the driver:
Oracle 8i JDBC Driver |
8.1.7.1 |
Oracle 9i JDBC Driver |
9.2.0.1 or later |
BEA* Weblogic* Type 4 jDriver for Microsoft SQL Server 7/2000 |
5.1.0, Service Pack 11 or later |
Sybase jConnect JDBC Driver |
5.5 or later |
Microsoft SQL Server 2000 Driver for JDBC |
2.2 or later |
Informix JDBC Driver |
9.3 or later |
MySQL Connector/J |
2.0.14 or later |
IBM Type 3 JDBC Driver for DB2 UDB |
7.2 or later |
The following third-party JDBC drivers have been tested, but are not recommended for use with this product:
- Sun Type 1 JDBC-ODBC Bridge driver (JRE 1.2)
We strongly recommend that you use the recommended third-party drivers whenever possible.
Minimum Third-Party JDBC Driver Requirements
The driver might not work with all third-party drivers. If you choose to use another third-party driver, it must meet the following requirements to work with the DirXML Driver for JDBC:
- Support required metadata methods.
Refer to java.sql.DatabaseMetaData Methods for a current list of the required and optional java.sql.DatabaseMetaData method calls made by the driver. This list of requirements might be extended in future releases. As such, all java.sql.DatabaseMetaData methods should be supported. If the third-party driver does not meet these requirements, you might have to purchase a different third-party driver in the future.
- Return accurate data from select statements.
- Correctly execute the insert, update, and delete statements issued by the driver.
Refer to JDBC 1.0 Methods for a list of JDBC methods used by the driver. This list can be used in collaboration with third-party driver documentation to identify potential incompatibilities.
Considerations When Using Other Third-Party JDBC Drivers
- Because the driver is dependent upon third-party drivers, bugs in those drivers might cause the driver to malfunction. In order to assist you in debugging third-party drivers, the driver's trace output has been enhanced to include JDBC API-level tracing (level 5) and third-party driver tracing (level 6).
- Stored procedure or function support and connectivity (specifically reconnection) are likely points of failure.
Using The Sun JDBC-ODBC Bridge Driver
Because of the increased instability inherent in using an ODBC driver and known issues with the 1.3.x Java Runtime Environment (JRE) JDBC-ODBC Bridge driver, We strongly recommend using a pure Java (type 3 or 4) JDBC driver whenever possible. If you choose to use a type 1 or type 2 driver, you must use the remote loader to ensure the integrity of the directory process.
The principle disadvantage to using a type 1 JDBC bridge driver and a native ODBC driver is increased instability. Errors in the native libraries from the ODBC driver imported through the JDBC bridge driver could bring down the directory.
The driver and JDBC-ODBC Bridge driver might not work with all third-party ODBC drivers. The list of third-party JDBC driver requirements applies to ODBC drivers as well. Refer to Recommended Third-Party JDBC Drivers for more information.
- If you choose to use the Microsoft ODBC driver for SQL Server (SQLSRV32.DLL), We recommend installing the latest version of Microsoft Data Access Components (MDAC). MDAC can be downloaded from free from Microsoft's Web site..
- The Bridge driver included in the JRE (Java Runtime Environment) 1.3.x contains a known defect regarding IN OUT stored procedure parameters. Calling a stored procedure with IN OUT parameters results in a memory access violation that brings down the directory. The recommended solution to this problem is to use the 1.2.x JRE with Identity Manager. However, doing so will reduce the performance of all drivers running on the server. Identity Manager supports the use of Hotspot only with the 1.3.x JRE or greater. 1.4.x JRE has not been tested with the driver.
Security
In order to ensure that a secure connection exists between the driver and a third-party driver, we recommends that you run the driver remotely.
When the driver cannot run remotely, you might want to use a type 2 or type 3 JDBC driver. These driver types often facilitate a greater degree of security through middleware servers or client APIs than other JDBC driver types.
Known Issues
This section lists the current known driver issues.
General
- Some databases, such as Sybase and DB2, have proprietary time stamp formats that cannot be parsed by the java.sql.Timestamp class.
When synchronizing time stamp columns from these databases, time stamp values placed in the event log table should be in ODBC canonical format (i.e., yyyy-mm-dd hh:mm:ss.fffffffff). Alternatively, these values can be converted to ODBC canonical format via style sheets. When time stamps are used as primary keys, however, time stamp values must be placed in the event log table in ODBC canonical format. Time stamp values can be reformatted on the database using a general-purpose programming language, such as Java, or the database's native SQL programming language.
- When eDirectory Time and Timestamp syntaxes are interpreted as signed integers, they cannot store dates before Jan 1, 1902 or after Jan 1, 2038.
IBM DB2
- After applying an IBM Fixpack to your DB2 server, you should use the updated db2java.zip file on the database server with the driver. Otherwise, you might receive connectivity errors such as "CLI0601E Invalid statement handle or statement is closed."
JDBC-ODBC Bridge
- The Bridge driver included in the JRE (Java Runtime Environment) 1.3.x contains a known defect regarding IN OUT stored procedure parameters. Calling a stored procedure with IN OUT parameters results in a memory access violation that brings down the directory. The recommended solution to this problem is to use the 1.2.2 JRE with Identity Manager. However, doing so will reduce the performance of all drivers running on the server. Identity Manager only supports the use of Hotspot with the 1.3.x JRE or greater.
Oracle
- You may experience high CPU utilitization problems when executing embedded SQL statements unless you place a jdbc:type attribute on each <jdbc:statement> element. A general means of avoiding this problem is to set the driver parameter Handle Statement Results to single.
- The 8.1.6 version of the Oracle JDBC driver has a bug that effects publication. It incorrectly returns NULL values for some fields in the event log table when their values are actually non-NULL.
The net effect is that the driver treats several rows as No Operations or NOOPs, in which the rows are ignored, and the driver produces an incomplete publication document. Earlier versions might also exhibit the same problem. We recommend that you use the 8.1.7 version because it is backwards-compatible with most versions of Oracle 8.
- In order to connect to older versions of Oracle on NetWare (for example, Oracle 8.0.3), you must use the CLASS111.zip JDBC driver supplied on the Oracle installation CD.
Microsoft SQL Server
- Microsoft's ODBC driver for SQL Server returns an ambiguous type java.sql.Types.OTHER for data types NVARCHAR, NCHAR, NTEXT, and UNIQUEIDENTIFIER. The driver assumes type java.sql.Types.OTHER to be NVARCHAR, NCHAR, or NTEXT. Because of this, type UNIQUEIDENTIFIER is not supported.
- Microsoft's SQL Server 2000 Driver for JDBC issues the following error when the driver parameter driver parameter Reuse Statements is set anything other than no: "Can't start manual transaction mode because there are cloned."
Sybase
- In order to ensure ANSI-compliant padding and truncation behavior for binary values, binary columns (other than image) must be exactly the size of the eDirectory attribute that maps to them, constrained NOT NULL, and added to the publisher or subscriber Create rule. If they are constrained NULL, trailing zeros, which are significant to eDirectory, will be truncated. If binary columns exceed the size of their respective eDirectory attributes, extra 0s will be appended to the value.
MySQL
- TIMESTAMP columns, when updated after being initially set to 0 or NULL, are always set to the current date and time. To compensate for this behavior, we recommend you map eDirectory Time and Timestamp syntaxes to DATETIME columns.
- Publication is not supported. MySQL does not support the query used by the publisher to retrieve events from the Event Log table.
Informix
- NUMERIC or DECIMAL columns cannot be used as primary keys unless the scale (that is, the number of columns to the right of the decimal point) is explicitly set to zero when the table is created. By default, the scale is set to 255.
Limitations
The following section lists the known driver limitations.
- The driver does not support the use of delimited database identifiers.
- Direct synchronization (using views) does not support multi-valued or referential attribute synchronization.
- Informix Dynamic Server databases created with LOG MODE ANSI are not supported. Databases created with this option use delimited identifiers for user/schema names. The driver does not currently support delimited identifiers.
- Publication is not supported. MySQL does not support the query used by the publisher to retrieve events from the Event Log table.
- JDBC 2.0 data types are not supported with the exception of CLOB and BLOB.