Follow Us on Twitter

Oracle Edition Based Redefinition: het einde van de BIG BANG

Maart 2010 - Bij het upgraden van een applicatie of het implementeren van verbeteringen is het in de regel nodig om bijvoorbeeld stored PL/SQL procedures te compileren. Gedurende deze compileerfase kunnen de eindgebruikers geen gebruikmaken van de applicatie: zij moeten wachten totdat de gehele wijziging in de applicatie geïmplementeerd is. Tijdens de implementatie kan er namelijk onverwacht gedrag optreden. In Oracle 11g release 2 is dit probleem verleden tijd: door gebruik te maken van editions is het mogelijk om 'live' nieuwe code te implementeren en te compileren, die in één klap actueel wordt gemaakt. De gebruikers hoeven hier niet meer op te wachten. Dit is het einde van een "BIG BANG" bij applicatie-upgrades en het is zelfs mogelijk om meerdere applicatie-versies operationeel te houden.

In dit Whitebook wordt het mechanisme van de Oracle Edition-Based Redefinition uitgelegd, de onderwerpen die behandeld worden zijn:

  • Wat is momenteel al online aan te passen?
  • Wat zijn Edities in een database (EDITIONS)?
  • De Editioning View (nieuw type object)
  • De Forward Cross Edition Trigger (nieuw type object)

Edition-Based Redefinition is een mechanisme dat bedoeld is om de downtime van databases als gevolg van een applicatie-upgrade tot NUL te reduceren. Het is één van de nieuwe topfuncties in Oracle Database 11g Release 2. Het is een nieuwe stap in High Availability: een database-applicatie upgraden zonder downtime. Tevens wordt het mogelijk om meerdere versies van dezelfde applicatie parallel te kunnen draaien, waarbij sommige gebruikers de ene en andere gebruikers een andere versie gebruiken.

Wat is al online aan te passen?

In de loop der jaren zijn er vele oplossingen beschikbaar gekomen om online veranderingen (dus met een minimale impact voor de eindgebruiker) te kunnen uitvoeren op een Oracle-database.

Zo is het al mogelijk om de volgende zaken online aan te passen:

  • Wijzigen van de meeste parameters (slechts 90 van de 350 zijn niet online te wijzigen);
  • Reorganiseren objecten;
  • Online aanmaken van nieuwe indexen;
  • Toepassing databasepatches (met Oracle Real Application Clusters);
  • Upgraden Oracle Database van grote release naar nieuwe grote release;

Bijna elk object kan op databaseniveau worden veranderd terwijl de database up and running is, met een paar opvallende uitzonderingen, zoals het recreëren van een opgeslagen procedure, het veranderen van een trigger, het toevoegen en intrekken van rechten en het wijzigen van een view. Kortom, de objecten die vorm geven aan een applicatie kunnen niet online veranderd worden terwijl de eindgebruikers ze gebruiken.

Als een nieuwe versie van een applicatie wordt uitgerold moet vaak in de database een aantal acties worden uitgevoerd. Nieuwe objecten worden aangemaakt en bestaande objecten worden gewijzigd. Deze veranderingen leiden vaak tot invalidatie van afhankelijke objecten, zodat deze opnieuw gecompileerd moeten worden. Vanaf de allereerste wijziging aan een bestaand object tot en met de laatste hercompilatie van invalide objecten en de conversie van data is de applicatie down. Afhankelijk van de omvang van de applicatie en de aard van de wijzigingen kan deze downtime enkele minuten tot vele uren bedragen.

Met Edition-Based Redefinition bestaat nu de mogelijkheid om verschillende versies op applicatieniveau aan te brengen. De nieuwe release van de applicatie wordt opgebouwd naast de bestaande release(s). De sessies blijven bestaan tegen de bestaande release. Pas als de nieuwe release volledig geïnstalleerd, gecompileerd en getest is kan deze worden geactiveerd. Nieuwe databasesessies gaan vanaf dat moment gebruik maken van de nieuwe release van de applicatie en bestaande sessies blijven actief tegen de vorige release.

Om een nieuwe versie in de database aan te kunnen maken zonder de bestaande objecten te raken is er een geïsoleerde omgeving nodig. Tot op heden was het in de Oracle database niet mogelijk om een nieuwe versie van de applicatie te installeren zonder de bestaande objecten te overschrijven.

Wat zijn Edities in de database?

Edition-Based Redefinition introduceert edities ("editions"). Edities zijn geïsoleerde omgevingen, een soort parallelle werelden, waarin objecten kunnen worden aangemaakt en gewijzigd zonder dat het impact heeft op de bestaande objecten. Een enkel schema kan nu twee of meer versies van opgeslagen PL/SQL-objecten, types en views hebben.

In het verleden werd een object uniek geïdentificeerd aan de hand van de volgende twee componenten: de eigenaar van het object en de objectnaam zelf. Dit zorgt ervoor dat er niet twee opgeslagen procedures met de naam "P" in één enkel schema kunnen bestaan.

Edition-Based Redefinition voegt nu een derde dimensie, de "edition", toe aan de unieke identificatie van een object: alle objecten worden nu geïdentificeerd door de editie van de sessie (EDITION), de eigenaar van het object (OWNER) en de objectnaam (OBJECT).

EBR

Elke database bestaat minimaal uit één editie, de standaard, deze heeft als naam ORA$BASE.

Een nieuwe editie wordt gemaakt met het volgende commando:

CREATE EDITION RELEASE_7 AS CHILD OF RELEASE_6;

Elke database is verbonden met één editie van de applicatie. Elke editie is een opvolger van een vorige editie. Bij het aanmaken van een nieuwe editie erft de editie alle objecten die in zijn voorganger gedefinieerd zijn. Een editie van de database wordt gezet met een alter database commando:

ALTER DATABASE SET EDITION = release_7;

Alle nieuwe sessies in een Oracle Database 11g Release 2 gebruiken de standaard database-editie die gezet is op databaseniveau. Een editie kan op sessie niveau veranderd worden met een alter session commando. Dit geldt alleen voor edities waarop je rechten hebt gekregen;

ALTER SESSION SET EDITION = release_7;

Dit statement kan vanuit de client-applicatie worden uitgevoerd of bijvoorbeeld met behulp van een logon-trigger. Het mechanisme met behulp van een logon-trigger maakt de Edition-Based Redefinition transparant voor elke applicatie die van de database gebruik maakt.

Het maken van verschillende versies van objecten door gebruik te maken van edities wordt ondersteund voor de volgende objecten: views, packages, procedures, triggers, synoniemen en (user defined) types. De belangrijkste componenten van de database (data en tabellen) zijn NIET ondersteund.

Tabellen vallen buiten de methodiek van Edition-Based Redefinition. Hoe nu om te gaan met nieuwe tabelstructuren als gevolg van een applicatieverandering? De oplossing is eenvoudig, de tabellen verdwijnen uit het zicht door introductie van een nieuw type view, de "editioning view" in combinatie met de "forward cross edition trigger".

Editioning Views

Editioning views worden als gebruikt om een "schil" te maken om een bestaande tabel heen. Alle referenties naar de tabel worden vervangen door referenties naar de edition view. De constraints en auditing policies blijven verwijzen naar de tabelstructuur. De editioning views zijn een zeer beperkt, sterk type views. Editioning views zijn alleen nodig voor de dataprojectie gebaseerd op een tabelstructuur. De huidige regel voor de edition views is dat ze alleen gemaakt kunnen worden op een tabel zonder opties van kolomexpressies. Het hernoemen en/of weglaten van kolommen in een editioning view is geen probleem.

Forward Cross Edition Trigger

Triggers van het type forward cross edition trigger zijn bedoeld voor het synchroniseren van data tussen de voorgaande en de nieuwe editie van een tabel. De forward cross edition trigger wordt geactiveerd wanneer een statement wordt uitgevoerd vanuit een editie die voorafgaat aan de editie waarin hij is aangemaakt.

Editions

Edition Based Redefinition is een mechanisme dat Oracle geïntroduceerd heeft om de overgang tussen verschillende applicatiereleases met een minimale downtime mogelijk te maken. De database kan een groot aantal parallelle edities aan. Het is goed denkbaar dat meerdere versies van de applicatie gelijktijdig actief zijn, gebruikmakend van verschillende edities in de database.

Edition Based Redefinition is een complexe stap

Het volledig overgaan naar Edition Based Redefinition is een complexe stap. De complexiteit ligt in het opzetten en inrichten van de "edition views" met de bijbehorende "forward cross edition triggers" op de bestaande data en tabelstructuur. Dit is tevens ook het belangrijkste aandachtspunt bij het introduceren van Edition Based Redefinition. De toepassing van EBR alleen toegespitst op PL/SQL-objecten en views is eenvoudig.

Aandachtspunt

Voordat met behulp van Edition Based Redefinition kolommen toegevoegd en/of verwijderd kunnen worden, zijn Editioning views nodig. Deze zijn de buffers tussen de applicatie en het fysieke schema op databaseniveau. De eerste introductie van de Editioning views gaat nog gepaard met een (eenmalige) downtime van de applicatie.

Het is daarom verstandig om nu al rekening te houden met Edition Based Redefinition bij het ontwikkelen van nieuwe applicaties. Deze strategie zal u toelaten om de naam en volgorde van kolommen in de tabel aan te passen en het mogelijk maken om online applicatie-upgrades, gekoppeld aan fysieke schemaveranderingen uit te kunnen voeren.

Om een bestaande applicatie gebruik te laten maken van EBR, zijn op hoofdlijnen de volgende stappen nodig:

  • Time-window voor het migreren naar een volledig editioning gebaseerde applicatie;
  • Wijzig de naam van de bestaande tabel;
  • Maak de editioning views aan met de naam van de oorspronkelijke tabellen;
  • Verwijder triggers op de bestaande tabellen en verplaats ze naar de editioning views;
  • Opnieuw aanmaken van de triggers op de editioning views;
  • Object privileges herzien, weghalen van de tabel, en opnieuw uitgeven op de editioning views.

Conclusie

Edition Based Redefinition is een nieuw mechanisme dat zeker voor organisaties met strikte eisen met betrekking tot beschikbaarheid van de database en applicatie interessante mogelijkheden biedt. Een interessante optie is dat verschillende gebruikers groepen verschillende versies van dezelfde applicatie kunnen gebruiken waarbij gevraagd wordt om dezelfde data/tabellen structuur van de database. Oracle heeft aangegeven dat er de komende periode uitbreidingen en verfijningen van Edition Based Redefinition te verwachten zijn.

Referenties

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.