What can I say about Oracle Edition Based Redefinition (EBR) apart from the fact its awesome, absolutely bloody awesome!
As I’m writing this I have just completed a 6 month piece of work to move a clients application to EBR – and the results are in they completed their first apps upgrade with 8 minutes of downtime, It should have been zero but there was an issue with the ALB which required a reboot to resolve.
The introduction of editioning view can be a bit of a problem when DML is applied to the base tables as columns may no longer exist, formats may have changed etc.
The following is a list of all objects that can be editioned:- 1. For me this seems quite logical as code builds on code.
However one feature that I would like to see introduced would be the ability to merge unused parent/child editions into a single edition and hence reduce the edition hierarchy.
This is where editionining views come to the rescue.
As a view is a piece of PLSQL you introduce an editioning view as a wrapper for access to your base table allowing each addition to see the parts of the table it should have access too.
Prior to the golive the client test a ran the upgrade side by side in a pre production environment with the edition and non edition approach, both took around the same amount of time, about 20 hours, but the non edition version would have been all downtime all the time whereas the edition version it was zero. Trigger Note how not every object type in the database is editionable most notable of these are tables and indexes.
I can’t lie this wasn’t an easy process, just to get to the point where they were able to look at editioning took alot of backend changes to code and some considerable downtime to correct previous poor design/programming as well as to implement the changes required to enable EBR itself, but now they are their and had their first (almost) zero downtime upgrade they are extremely happy. Working around this limitation will be outlined later.This means that multiple editions can be used simultaneously without causing logical corruption of the data in the base table.Both crossedition and reverse crossedition triggers should be applied directly to editioning views, rather than the base tables, which allows triggers to be edition-specific.We are going to add an new column to the table and update the insert procedure for it.The first thing we need to do is change the edition that we are working in to ensure any user logged on using our application doesn’t get affected by the changes to the table, editioning view or insert procedure.Anyway moving on – What I intend to do for this is article is give a brief overview of EBR, introduce the EBR basics required to understand and implement EBR then move on to demonstrating EBR using some simple examples using a simple test app. Before you can create an edition you require the CREATE ANY EDITION and DROP ANY EDITION privilege.