Novell Identity Manager and How JDBC Triggerless Works in the JDBC Driver

  • 7000909
  • 10-Jul-2008
  • 26-Apr-2012

Environment

Novell Identity Manager 3.5.1
Novell Identity Manager Driver - JDBC

Situation

I have some questions about how triggerless publication with the JDBC driver works.
1) What criteria does the JDBC driver(Triggerless) use to determine which events have changed an Oracle 10g database?
2) What query is the driver using against the database to determine whether it should do a resync?
3) What response is the driver expecting back from the database?
4) Is the timestamp being used to determine what to resync? If the answer is yes, How is the timestamp being used?

Resolution

The answers with the questions are listed below:
1) What criteria does the JDBC driver(Triggerless) use to determine which events have changed an Oracle 10g database?
1. The driver checks the hashmap containing the key and the instance id during each polling loop. It reads the instance and verifies with the database if any of the attributes was modified. If anything got modified then the state file is updated with the modification. A hash map contains the key and value pair. The key is the prime id of the user (i.e user.idu) and the value is CRC value of the complete row or the record. State file will always keep back up of this CRC value for the individual user row. So whenever the changes happen to any of the user row, the CRC value will get changed. In the polling event, the publisher compares this CRC value of the state file and the user row. If any changes happened in the user row then these CRC values won't match. Then the driver will update the statefile with the new value and the publisher will update the ID Vault. In Triggerless mode this is the way driver identifies the changes of the database records.
 
2) What query is the driver using against the database to determine whether it should do a resync?
2. The driver does not generate a resync. That's an engine function which is covered in TID's. The driver will recreate the state files as detailed in the driver documentation. The query that is executed in the polling period can be identified in the Trace level 5 or above. The query varies per database.

Example:

SELECT a.idu, a.fname, a.lname, a.pwdminlen, a.pwdexptime, a.disabled, a.photo, a.manager, b.idu, b.faxno, c.idu, c.idg, d.idu, d.phoneno FROM usr a LEFT OUTER JOIN usr_fax b ON a.idu = b.idu LEFT OUTER JOIN usr_mbr_of c ON a.idu = c.idu LEFT OUTER JOIN usr_phone d ON a.idu = d.idu ORDER BY a.idu ASC
 
3) What response is the driver expecting back from the database?
3. I think that has already been answered.
 
4) Is the timestamp being used to determine what to resync? If the answer is yes, How is the timestamp being used?
4. No.