I have read on many pages that "All DDL commands are AutoCommit in Oracle". It's okay DDL commands are autoCommit, but my question is: What's the reason for doing it?
Meaning, why are all DDL commands AutoCommit in Oracle? Is there a reason of doing it?
The Concepts Guide chapter on Transactions includes DDL as one of the markers for End of Transaction. Find out more.
Why? The short answer is, because.
The slightly longer answer is: DDL writes to the data dictionary. If DDL didn't issue implicit commits the data dictionary could get hung up in long-running transactions, and that would turn it into a monstrous bottle neck. Remember, every single SQL statement queries the data dictionary.
"Other DBMS seem to be able to handle transactional DDL without problems"
Yes, but are those other databases as scalable in a multi-user environment as Oracle? Perhaps they are, but that's what makes this a contentious question and why I voted to close.
The fact is, Oracle is a venerable product: they made architectural decisions in the early days which are baked into the database kernel at a very low level. Some changes just have too great an impact to be worthwhile.
If implementing transactional DDL had been feasible Oracle wouldn't have put all that effort into developing Edition-based Redefinition. And now that we have got Edition-based Redefinition what further benefits would transactional DDL deliver us?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With