Solved

Using ROLLBACK FUNCTION

Posted on 2011-02-10
13
485 Views
Last Modified: 2012-06-27
Hello,

I'm trying to ROLLBACK records after a delete and it appears that it not working as expected. I'm am inserting in approx 20 tables then deleting the records from the source tables. I am then running an IF statement and if the criteria is not meant (or an error occurs) then rollback.

Do you have any ideas?

Thanks
0
Comment
Question by:lulubell-b
  • 5
  • 5
  • 2
  • +1
13 Comments
 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
ID: 34864843
Define: "not working as expected".

Rollback will 'undo' all non-commited transactions.  Are you doing intermittent commits?
0
 
LVL 73

Expert Comment

by:sdstuber
ID: 34864890
are you simply waiting for the rollback to complete?

you can monitor the amount of rollback used per transaction and extrapolate how long it might take to complete


SELECT d.tablespace_name,r.NAME,s.username, s.SID,s.serial#,p.spid os_pid , t.addr,t.used_ublk
FROM v$transaction t, v$rollname r, v$session s,v$process p,dba_rollback_segs d
WHERE t.addr = s.taddr
AND p.addr = s.paddr
AND t.xidusn = r.usn
AND d.segment_name = r.NAME
ORDER BY d.tablespace_name,r.NAME,s.username;
0
 

Author Comment

by:lulubell-b
ID: 34865094
I don't think so, I ran my procedure with the rollback imbedded and then looking at the table No data was rolled back. I'm confused, it works when I remove the delete statements, but doesnt seem to work when I add the delete statments back into the PL/SQL.
0
 

Author Comment

by:lulubell-b
ID: 34865098
What are intermittent commits? I'm unsure.
0
 
LVL 73

Assisted Solution

by:sdstuber
sdstuber earned 333 total points
ID: 34865111
these would be intermittent commits,  

delete yourtable where id = 1;
commit;
delete yourtable where id = 2;
commit;
delete yourtable where id = 3;
commit;
delete yourtable where id = 4;
commit;

rollback;  -- this won't do anything

the commits could be in a loop too, they don't have to spaced literally between sql statements like that


0
 
LVL 73

Expert Comment

by:sdstuber
ID: 34865119
are you doing any DDL?  alter/create/drop/truncate, etc?  DDL  does an implicit commit
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 76

Accepted Solution

by:
slightwv (䄆 Netminder) earned 167 total points
ID: 34865166
Look through all the code.  I bet different functions/procedures/pieces of it are doing commits that you don't know about.
0
 

Author Comment

by:lulubell-b
ID: 34865306
Within my procedure I'm doing

INSERTs
DELETE
THEN CALLING ANOTHER PROCEDURE WHICH IS SELECTING AND RETURN A VALUE.

I'm confused.

0
 
LVL 14

Expert Comment

by:ajexpert
ID: 34865308
Do you have COMMIT at any point in your procedure?

Possiblity is that your logic met all the CRITERIA written in IF condition so it didnt rollback
0
 

Author Comment

by:lulubell-b
ID: 34865445
I do not have any commits in the procedures and I'm positive that the value is returning correctly from the second procedure.
0
 
LVL 73

Expert Comment

by:sdstuber
ID: 34865464
can you post the code? and sample data/results that demonstrate the problem ?

the symptoms you describe and the mini-pseudocode snippets don't coincide
0
 
LVL 73

Assisted Solution

by:sdstuber
sdstuber earned 333 total points
ID: 34865477
and remember, the word "commit" doesn't need to be in the code.

any DDL statement will commit for you.

and some built in packages will commit for you too
0
 

Author Comment

by:lulubell-b
ID: 34973092
Thank you, still unsure why the rollback isn't working correctly. I will revisit later. Thank you
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

Have you ever had to make fundamental changes to a table in Oracle, but haven't been able to get any downtime?  I'm talking things like: * Dropping columns * Shrinking allocated space * Removing chained blocks and restoring the PCTFREE * Re-or…
Using SQL Scripts we can save all the SQL queries as files that we use very frequently on our database later point of time. This is one of the feature present under SQL Workshop in Oracle Application Express.
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now