【正文】
ora1033, ora1034, oraxxx) ? JDBC throws SQLRecoverableException Copyright 169。 2023, Oracle and/or its affiliates. All rights reserved. 10 Database Request Unit of Work ? PoolDataSource pds = GetPoolDataSource()。 ? Connection conn = getConnection(pds)。 ? PreparedStatement pstmt = … – … – SQL, PL/SQL, local calls, RPC – … ? ()。 ? ()。 Request Begins Request Body Usually ends with COMMIT Request Ends Copyright 169。 2023, Oracle and/or its affiliates. All rights reserved. 11 Program Agenda ? Problems to Solve ? New Concepts ?Transaction Guard ? Application Continuity ? Application Design Considerations Copyright 169。 2023, Oracle and/or its affiliates. All rights reserved. 12 Transaction Guard ?Tool that supports known oute for every transaction ?Without Transaction Guard, retry can cause logical corruption ?Used by Application Continuity ?Can be used independently of Application Continuity 4. Enforce Oute 1. Work Request 2. DB Calls 12c ORACLE Database 3. Errors 4. Reliable Commit Oute Copyright 169。 2023, Oracle and/or its affiliates. All rights reserved. 13 Transaction Guard – Typical Usage Upon database instance crash ? FAN aborts dead session ? Application gets an error ? Pool removes orphan connection from pool ? If “recoverable error” then Get last LTXID from dead session Obtain new database session Get transaction status Copyright 169。 2023, Oracle and/or its affiliates. All rights reserved. 14 Transaction Guard In Action getConnection() ()。 get Last LTXID new session Commit oute? COMMIT/ROLLBACK start transaction assign LTXID COMMIT? Return Preserve COMMIT OUTCOME Client/Midtier Database Time Recoverable Error COMMIT Get Logical TX ID SQL, PL/SQL, RPC Results TG in Action Copyright 169。 2023, Oracle and/or its affiliates. All rights reserved. 15 ? On Service ? COMMIT_OUTCOME ? Values – TRUE and FALSE ? De