I have been informed that most (if not some) RDBMS are faced with problems with the SQL ROLLBACK (also known as undo) command. I have been searching online, but have not found any useful relevant sources on what this issues are.
I am wondering if their are any experienced Oracle (or any other RDBMS) users who might be able to provide feedback on this matter.
Certainly not syntax problems. Perhaps this is about read consistency and the difficulty of allowing multiple concurrent users to make changes and then either commit or undo them after an arbitrary period of time. Say user A sets off a big report that takes 5 minutes to complete. During this time, user B changes some of the same data used by the report. Oracle provides user A with a consistent view based on how the data looked at the start of the query regardless of any subsequent changes by other users, by reading the rollback blocks. Some other vendors would lock user B's update until the query completed, or allow dirty reads (the report would get whatever happened to be in the blocks when SQL read them).
The only problem I can think of is that rollback segment is too small and can't "accept" all the data SQL statement requires. For example, if you try to update data in a huge table and your rollback segment isn't large enough to assure that the updated data can be rolled back to the state before this update statement, you'll receive an error message.
This is a quote I picked up somewhere. Someone who reviewed it told me it didnt make sense. But according to this statement there are issues, i think.
All Relational DataBase Management Systems (or RDBMS) need to support Static Queue Loading (or SQL). The ROLLBACK command is a critical ingredient to SQL. Indeed, Queue Loading could be done without it, but not statically. It should be intuitively obvious to the galactically stupid why this is, so I won't insult your intelligence by going into the details. But needless to say, as the question alludes to, it isn't easy. First of all, the Lookaround Buffer has to be managed and carefully so. One slipped bit and the whole loading algorithm goes down, big time. Many would-be RDBMSs have had to file for bankruptcy for failure to properly manage the Lookaround Buffer. Next, you have to consider the QVC (Queue Volume Control) Manager which, as you probably know, has responsibility for managing the throughput of the queue. But the real key to the process is the Schwartz & Negger Governor, without which Static Queue Loading is as useless as a Lojack on a Toyota Corolla.
krz, the post on OraFAQ was a joke, as I thought I mentioned when I replied to it there. Static Queue Loading? QVC? (It's a shopping channel.) The Schwartz & Negger Governor?
"ORA-01555: Snapshot too old" is the error you get in the scenario I described if the report is so big or slow and the changes by other users so great that the system is not able to recreate a view of the data as it existed at the start of the query. This situation can often be achieved by developers running large batch processes with frequent commits in cursor loops.