Workspace Management In Oracle9i

Workspace Management In Oracle9i

Workspace management wordt in Oracle9i wordt geïnstalleerd. In dit artikel alleen de aspecten die relevant zijn voor de 9i versie nieuwe mogelijkheden

Waar zijn Workspaces voor

Workspaces maakt het mogelijk meerdere transactioneel consistente omgevingen binnen een database te hebben. Ook kan je nu verschillende afdelingen of functionele gebieden tegen 1 schema laten werken zonder de data van andere groepen te benaderen. Veranderingen aan 'version-enabled tables' worden opgeslagen als nieuwe rijen binnen de workspace. Deze veranderingen zijn onzichtbaar voor andere workspaces totdat ze zijn toegevoegd aan de 'parent' workspace.

Meerder versies van een rij kunnen binnen een workspace bestaan, met de active of current row waaraan nu wijzigingen aan worden toegebracht.


In een workspace bestaat een hiarchie uit

Live-> Pre Productie-> Ontwikkeling workspaces.

De Ontwikkeling workspace kan alle veranderingen in rijen zien die in de Pre Productie workspace zijn gemaakt, samen met alle data die gecommit is van 'non-version-enabled tabellen' die bij de Live workspace behoren. Extra kan het ook nog data zien van 'version-enabled tabellen' in Live zoals ze in de Pre Productie workspace waren gemaakt. Als een workspace eenmaal is gerefreshed, kunnen alle veranderingen omlaag in de hiarchie doorgevoerd worden.


Conflicten worden automatisch opgemerkt voordat de veranderingen in de 'parent'workspace worden doorgevoerd. Deze conflicten kunnen gecorrigeerd worden met de Enterprise Manager of een API.

WM_ADMIN_ROLE

De WM_ADMIN_ROLE role heeft alle Workspace Manager privileges en heeft deafault de DBA. De DBA kan kiezen om individuele privileges of de WM_ADMIN_ROLE role aan individuele users uit te delen.

Version Enabling A Table

Iedere keer dat er een verandering is gedaan aan een version-enabled table, wordt er een nieuwe rij gemaakt om de verandering weer te geven, waarbij alle rijen in dezelfde tabelspace worden opgeslagen. Omdat alleen de veranderingen opgeslagen worden, wordt de overhead geminimaliseerd. De bovenste workspace wordt altijd gebruikt om een nieuwe workspace te maken, ongeacht waar het zich in de workspace hiarchie bevind.

Een tabel kan version-enabled gemaakt worden op de volgende manier:

EXEC DBMS_WM.EnableVersioning('SCOTT.EMP');

Dit zal de SCOTT.EMP tabel hernoemen naar SCOTT.EMP_LT en een view maken genaamd SCOTT_EMP. De view zal instead-of triggers gebruiken om alle operaties tegen de version enabled tabel uit te voeren. Dit zal een hoop van het versie mechanisme voor de users verbergen.

De SCOTT.EMP_LT tabel heeft de volgende extra columns:


VERSION NOT NULL NUMBER(38)
NEXTVER VARCHAR2(500)
DELSTATUS NUMBER(38)
LTLOCK VARCHAR2(100)

Deze worden gebruikt om de huidige versie, de next versie, de delete status en lock status te laten zien.

Een extra parameter HIST kan gebruikt worden om de veranderingen aan een tabel te volgen via een view genaamd _HIST. De default is "no history". De VIEW_W_OVERWRITE parameter laat alleen de meest recente verandering aan een rij zien. De VIEW_NO_OVERWRITE parameter laat alle veranderingen aan een rij zien.


Table-versioning kan uitgezet worden met:

EXEC DBMS_WM.DisableVersioning('SCOTT.EMP');

 

Een extra boolean parameter FORCE kan gezet worden om table versioning uit te zetten zelfs als workspaces gemodificeerde data bevat.

Workspace Creatie

 

Een workspace kan gemaakt worden met:

EXEC DBMS_WM.CreateWorkspace('MYWORKSPACE1');


De resultaat workspace is een "child" van de huidige workspace. Het maken van een workspace creëert een impliciete savepoint in de "parent" workspace. Na de creatie word je niet automatisch in de nieuwe workspace gezet. Deze switch moet expliciet gedaan worden met:

EXEC DBMS_WM.GotoWorkspace('MYWORKSPACE1');

 

Alle logins zetten de user in de LIVE workspace. De user zal dan handmatig wisselen naar hun voorkeur workspace.

Een workspace die niet meer nodig is, kan verwijderd worden met:

DBMS_WM.RemoveWorkspace('MYWORKSPACE1');

 

Export en Import Implicaties

 

De volgende implicaties zijn het resultaat van het version-enabling van tabellen:
  • Het importeren van version-enabled tabellen kan alleen uitgevoerd worden als de target database Workspace Manager heeft geïnstalleerd en geen workspaces definiëerd ander dan LIVE.
  • Alleen full database exports worden met gesupport met version-enabled databases.
  • De IGNORE=Y parameter moet gezet zijn voor het importeren van version enabled databases.
  • Importeren van version-enabled databases kunnen niet de FROMUSER enTOUSER functionaliteit gebruiken.

Versioning Restricties

 

Tabel Restricties:
  • De tabel moet een primary key hebben.
  • De tabel kan alleen verrsion-enabled worden door de eigenaar of een user met de WM_ADMIN_ROLE role.
  • Tabellen van SYS kunnen niet version-enabled gemaakt worden.
Referential Integrity Constraint Restricties:
  • Als de parent tabel version-enabled moet de child tabel dat ook zijn.
  • Een child kan versioned zijn terwijl de parent dat niet is.
  • Een versioned table kan niet zowel parent als child zijn in een keten van constraints behalve zelf referencing constraints.
  • Referential integrity constraints kunnen niet toegevoegd worden nadat versioning is enabled. Ze moeten aanwezig zijn voordat de version version-enabling aangezet wordt.
Trigger Restricties:
  • Triggers moeten gedefinieerd zijn voor de version-enablinging.
  • Alleen row-level triggers worden gesupport.
  • Alleen gehele rij triggers worden gesupport. Niet before en after triggers voor specifieke columns.
  • Triggers op geneste tabellen worden niet gesupport.
  • Only callouts bij PL/SQL worden gesupport.
  • Alle triggers die niet voldoen worden disabled als versioning wordt aangezet en weer enabled als het wordt uitgezet.

Security

 

De ACCESS, CREATE, REMOVE, MERGE enROLLBACK workspace privileges kunnen aan een user gegeven worden voor een specifieke workspace of alle workspaces met:

EXEC DBMS_WM.GrantWorkspacePriv('ACCESS_WORKSPACE, MERGE_ANY_WORKSPACE'
,'MYWORKSPACE1','SCOTT','NO');

De laatste parameter geeft aan of het wordt gegeven met de grant optie of niet.

 

Locks

 

Extra op de reguliere locks worden er workspace manager specifieke locks worden om conflicten tussen workspaces te elimineren. Locking is sessie specifiek en onafhankelijk van de huidige workspace, zodat locking vande allowing locking van de juiste records ongeacht hun workspace. Exclusive locks ('E') worden gebruikt om modificatie van rijen door een andere sessie te voorkomen, terwijl shared locks ('S') het toestaat dat rijen worden aangepast door iedere sessie in de uitgevoerde workspace.

Typische locking operaties zijn:
  • DBMS_WM.SetLocking[On/Off] - Om de default locking voor de sessie te zetten.
  • DBMS_WM.SetWorkspaceLockMode[On/Off] - Indien off , toegang tot versioned rows en die in de overeenkomstige parent workspace is toegestaan.
  • DBMS_WM.GetLockMode - Gebruikt om de locking mode van de parent en child workspace te krijgen.
  • DBMS_WM.[Un]LockRows - Gebruikt om rijen te locken in de parent schema tijdens updates.

Voordelen

  • Data laten zien zoals het op een bepaald tijdstip was.
  • Roll back van veranderingen naar vorige versies.
  • Time-based analyses van data.
  • What-if analyses zonder produktie data te raken.
  • Verbeterde Improved concurrency model.
  • Automatische conflict detectie.
  • Conflict oplossing met de Oracle Enterprise Manager, PL/SQL en Java APIs.
  • Verminderd ruimte verspilling samen met multiple schemas.
  • Geen aanpassing aan applicatie DML noodzakelijk.
  • Makkelijk management met gebruik van de Oracle Enterprise Manager.
  • Full kernal support voor constraints, locking, triggers en import/export.
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 77 gasten online