Limitations

The following limitations apply to the D3 Oracle Gateway.

Item Locks

The Oracle database implements row locking on a transactional level. In a typical transaction, a row is retrieved using a select statement with the for update clause, and then updates are performed using the update or delete statements. A commit or rollback statement is executed to update the database, releasing the row lock. A transaction can consist of multiple rows retrieved and locked, which are all released when a commit or rollback statement is executed.

Since a D3 transaction can consist of multiple item locks, this behavior can pose a problem to an application. To overcome this limitation, the D3 Oracle Gateway internally keeps track of all item locks (readu) set and released (write/release) and only commits transactions when there are no outstanding item locks. This means that if an application locks multiple items and then performs a write on one of the locked items, the update will not be visible in the Oracle database until the remaining item locks are released.

Item-ID Must be Unique

The item-ID must be constrained to be unique in the underlying Oracle table. If it is not, then inserts will not fail when they should. Then each D3 write will create a new record, even if the item-ID already existed.

Supported Data Types

The following data types are supported for the underlying Oracle Table or View:

VARCHAR2 NUMBER CHAR DATE

Date Data Type

The date data type returns the date in the external (oconv) format, not the internal (iconv) numeric format.