Diego Alvarez
Diego Alvarez

Reputation: 2847

What can i do in Oracle in order to preserve the savepoint if internal commit occurs?

background: i'm doing some Oracle plsql refactoring; The first think that i want to accomplish is to have unit test for the principal components.

For this i'm using ruby with the gem plsq-spec https://github.com/rsim/ruby-plsql-spec

In order to execute the tests several times, i'm using Oracle Savepoints after open the database conection, and doing a rollback to the savepoint before close the connection

Problem: Some test can't be executed more than one time, because some procedures had internal commits.

What can i do in Oracle in order to preserve the savepoint if internal commit/rollback occurs?

With this information in the note apparently what I want is impossible http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/savepoint_statement.htm

A simple rollback or commit erases all savepoints. When you roll back to a savepoint, any savepoints marked after that savepoint are erased. The savepoint to which you roll back remains.

so, the only solutions are?:

tks

Upvotes: 2

Views: 395

Answers (1)

David Aldridge
David Aldridge

Reputation: 52346

The Flashback feature may help you here, as you can restore the database or individual tables to their state as-of a previous point in time.

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9012.htm

Upvotes: 4

Related Questions