Oracle7 Server Distributed Systems Volume I: Distributed Data

Contents Index Home Previous Next

Restrictions

General Restrictions

General restrictions for the Oracle XA library are listed in this section.

Database Links

Oracle XA Applications can access other Oracle Server databases through database links, with the following restrictions:

Assuming that these restrictions are satisfied, Oracle Server will allow such links and will propagate the transaction protocol (prepare, rollback, and commit) to the other Oracle Server databases.

Warning: If these restrictions are not satisfied, when you use database links within an XA transaction, it creates an O/S network connection in the Oracle Server that is linked to the TPM server process. Since this O/S network connection cannot be moved from one process to another, you cannot detach from this server, and when you complete a service or RPC, you will receive an ORA#23 message.

If using the Multi-Threaded Server configuration is not possible then, access the remote database through the Pro*C/C++ application using EXEC SQL AT syntax.

Oracle Parallel Server Option

On some platforms, you cannot use the Oracle XA library together with the Oracle Parallel Server option. To run the Oracle XA library with the Parallel Server option, the platform's implementation of the distributed lock manager must support transaction-based rather than process-based deadlock detection.

Additional Information: For more information about the Parallel Server and the Oracle XA library, see your Oracle operating system-specific documentation.

SQL-based Restrictions

SQL-based restrictions are listed in this section.

Rollbacks and Commits

Because the transaction manager is responsible for coordinating and monitoring the progress of the transaction, the application should not contain any Oracle Server-specific statement that independently rolls back or commits a transaction.

Do not use EXEC SQL ROLLBACK WORK for precompiler applications. Similarly, an OCI application should not execute orol(). You can roll back a transaction by the initiator by calling tx_rollback().

Similarly, a precompiler application should not have the EXEC SQL COMMIT WORK statement. An OCI application should not execute ocom(). Instead, use tx_commit() or tx_rollback() to end a transaction.

DDL statements

Because a DDL SQL statement such as CREATE TABLE implies an implicit commit, the Oracle XA application cannot execute any DDL SQL statements.

Savepoint

Do not use savepoint. For example, do not use:

EXEC SQL SAVEPOINT savepointname.

SET TRANSACTION

Do not use the SET TRANSACTION READ ONLY | READ WRITE | USE ROLLBACK SEGMENT SQL statement.

Connecting or Disconnecting with EXECSQL

Do not use the EXEC SQL command to connect or disconnect. That is, do not use EXEC SQL COMMIT WORK RELEASE or EXEC SQL ROLLBACK WORK RELEASE.


Contents Index Home Previous Next