Transactions (Oracle)

The OLE DB Provider for Oracle implements local transaction support. The consumer can use distributed or coordinated transactions by using Microsoft Distributed Transaction Coordinator. For consumers requiring transaction control that spans multiple sessions, this provider can join transactions initiated and maintained by Microsoft Distributed Transaction Coordinator.

By default, the OLE DB Provider for Oracle uses an auto-commit transaction mode, where each discrete action on a consumer session comprises a complete transaction against an Oracle server. For this provider, auto-commit mode is local. Auto-commit transactions never span more than a single session.

This provider exposes the ITransactionLocal interface, allowing the consumer to use explicitly and implicitly started transactions on a single Oracle connection. It also supports ITransactionJoin, which is used for enlisting a transaction in a distributed transaction. This provider does not support nested local transactions.

The Transaction Unit Of Work (UOW) as reported by ITransaction::GetTransactionInfo will always be NULL. For example, if a transaction is obtained from a session and GetTransactionInfo is called on it, the XACTUOW from the XACTTRANSINFO will always be NULL.

When using this provider with Component Services (or MTS, if you are using Windows NT) to enlist global transactions, the file Mtxoci.dll is required.

Note Note

When accessing an Oracle8.x database and using a "select ... for update" statement, you first must start a transaction. Otherwise, the following error will occur: "Fetch out of sequence (ORA-01002)"

The OLE DB Provider for Oracle does not support nested transactions. A nested transaction occurs when a transaction is begun within the scope of another transaction. Nested transactions can be simulated, however, by using the native Oracle SQL SAVEPOINT keyword in an execute command. This sets a bookmark for uncommitted statements in an Oracle session. For more information about transactions in Oracle, search the MSDN Knowledge Base (keyword "kbOracle").