Polling Data using Oracle Adapter in Biztalk

Friday, June 10, 2011


Configure Transaction Isolation Level and Transaction Timeout
While performing inbound operation (Polling) using the Microsoft BizTalk Adapter for Oracle Database with BizTalk Server, you should appropriately configure the transaction isolation level and the transaction timeout values. To do this:

Start the BizTalk Server Administration console.

In the console tree, expand the BizTalk Group, and then expand Applications.

Expand the BizTalk application that you have deployed after generating the metadata using the Oracle Database adapter.

Right-click Receive Ports, point to New, and then click One-way Receive Port.

In the Receive Port Properties dialog box, on the General tab, type a name for the receive port.

In the left pane of the Receive Port Properties dialog box, click Receive Locations, and then click New in the right pane to define a new receive location.

In the Receive Location Properties dialog box, click WCF-Custom in the Type list.

Click Configure adjacent to the Type list.

In the WCF-Custom Transport Properties dialog box, click the Behavior tab.

In the Behavior list, right-click ServiceBehavior, and click Add extension.

In the Select Behavior Extension dialog box, select oracleDBAdapterInboundTransactionBehavior, and click OK.

In the left pane of the WCF-Custom Transport Properties, select the oracleDBAdapterInboundTransactionBehavior service under ServiceBehavior.

In the right pane of the WCF-Custom Transport Properties, specify appropriate values for the transactionIsolationLevel and transactionTimeout parameters. You can select any of the following transaction isolation levels: Serializable, RepeatableRead, ReadCommitted, ReadUncommitted, Snapshot, Chaos, and Unspecified. For information about these transaction isolation levels, see the Members section at http://go.microsoft.com/fwlink/?LinkId=126983.

The Oracle Database adapter supports only the following two transaction isolation levels: ReadCommitted and Serializable.

Click OK in the WCF-Custom Transport Properties dialog box.

Click OK in the open dialog boxes to save the changes.

Member nameDescription
SerializableVolatile data can be read but not modified, and no new data can be added during the transaction.
RepeatableReadVolatile data can be read but not modified during the transaction. New data can be added during the transaction.
ReadCommittedVolatile data cannot be read during the transaction, but can be modified.
ReadUncommittedVolatile data can be read and modified during the transaction.
SnapshotVolatile data can be read. Before a transaction modifies data, it verifies if another transaction has changed the data after it was initially read. If the data has been updated, an error is raised. This allows a transaction to get to the previously committed value of the data.

When you try to promote a transaction that was created with this isolation level, an InvalidOperationException is thrown with the error message "Transactions with IsolationLevel Snapshot cannot be promoted".

ChaosThe pending changes from more highly isolated transactions cannot be overwritten.
UnspecifiedA different isolation level than the one specified is being used, but the level cannot be determined. An exception is thrown if this value is set.

The data affected by a transaction is called volatile. When you create a transaction, you can specify the isolation level that applies to the transaction. The isolation level of a transaction determines what level of access other transactions have to volatile data before a transaction completes.

The lowest isolation level, ReadUncommitted, allows many transactions to operate on a data store simultaneously and provides no protection against data corruption due to interruptive transactions. The highest isolation level, Serializable, provides a high degree of protection against interruptive transactions, but requires that each transaction complete before any other transactions are allowed to operate on the data.

The isolation level of a transaction is determined when the transaction is created. By default, the System.Transactions infrastructure creates Serializable transactions. You can determine the isolation level of an existing transaction using the IsolationLevel property of a transaction.

No comments:

Post a Comment

Post Your Comment...