Oracle7 Server Distributed Systems Volume I: Distributed Data
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:
- Use the Multi-Threaded Server configuration.
This means the transaction processing monitors (TPMs) will use shared servers to open the connection to Oracle. The O/S network connection required for the database link will be opened by the dispatcher instead of the TPM server process. Thus, when a particular service or RPC completes, the transaction can be detached from the server so that it can be used by other services or RPCs.
- Access to the other database must use SQL*Net version 2.
- The other database being accessed should be another Oracle Server database.
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.