Solved

Using ROLLBACK FUNCTION

Posted on 2011-02-10
13
489 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 5
  • 2
  • +1
13 Comments
 
LVL 77

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 74

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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

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

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 74

Expert Comment

by:sdstuber
ID: 34865119
are you doing any DDL?  alter/create/drop/truncate, etc?  DDL  does an implicit commit
0
 
LVL 77

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 74

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 74

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
oracle DR - data guard failover. 18 74
Create file system directory from Oracle 10g 4 46
Moving Oracle Database to other server 2 47
Oracle SQL Developer equivalent MS SQL 6 36
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…
How to Unravel a Tricky Query Introduction If you browse through the Oracle zones or any of the other database-related zones you'll come across some complicated solutions and sometimes you'll just have to wonder how anyone came up with them.  …
Via a live example, show how to take different types of Oracle backups using RMAN.
This video shows how to configure and send email from and Oracle database using both UTL_SMTP and UTL_MAIL, as well as comparing UTL_SMTP to a manual SMTP conversation with a mail server.

751 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