Resumable Space Allocation
Lang lopende operaties zoals imports en batch processen willen nogal eens mislukken omdat de server niet in staat is om meer extents aan te maken voor een object. Dit kan voorkomen omdat het object zijn max_extents heeft bereikt of als er niet genoeg ruimte meer is in de tablespace, om het object uit te breiden. In vorige releases zou het proces opnieuw gerunt moeten worden, waarbij mogelijk eerst het nodige handmatig opgeruimd moest worden. In Oracle9i kunnen operaties die fout gaan door ruimte problemen, opgehangen worden en doorgestart nadat het probleem is opgelost.

De volgende onderdelen worden besproken:


RESUMABLE MODE


Operaties kunnen doorstartbaar gemaakt worden door het expliciet wijzigen van de sessie modus met:

ALTER SESSION ENABLE RESUMABLE; 


Als de sessie in de resumable mode is, zullen alle operaties die resulteren in de volgende foutmeldingen, worden opgehangen:
  • Ruimtegebrek condities.
  • Maximum extents bereikt condities.
  • Space quota overschreden condities.

Als de fout eenmaal is verholpen, zal de operatie automatisch doorlopen.



TIMEOUT PERIOD

 

Operaties zullen in een 'opgehangen' staat blijven totdat de timeout periode is bereikt. De default timeout periode is 2 uur. De timeout periode kan aangepast worden met behulp van een van de volgende commando's: 
 

ALTER SESSION ENABLE RESUMABLE TIMEOUT 3600; 
EXECUTE Dbms_Resumable.Set_Timeout(3600);
ALTER SESSION ENABLE RESUMABLE TIMEOUT 3600 NAME 'insert into table';

Het laatste voorbeeld kan gebruikt worden om een naam aan de opgehangen sessie te geven.



AFTER SUSPEND TRIGGER

Omdat opgehangen operaties geen foutmelding produceren, is er een alternatieve methode nodig om om DBA's en users te waarschuwen zodat het probleem opgelost kan worden. Dit soort procedures worden meestal aangepakt met gebruik van de AFTER SUSPEND trigger die altijd als een autonome transactie afgaat.Deze trigger kan dan weer gebruikt worden om naar een error tabel te schrijven of een email naar een operator te sturen met gebruik van de DBMS_SMTP package:

CREATE OR REPLACE TRIGGER resumable_default      
AFTER SUSPEND
ON DATABASE
DECLARE -- Declareer variabelen
BEGIN -- Pas de default timeout periode aan.
Dbms_Resumable.Set_Timeout(3600); -- Voer resumable space allocation notificatie hier uit.
COMMIT;
END;
/



VIEWS

 

Informatie over opgehangen sessies kunnen bekeken worden met de USER_RESUMABLE en de DBA_RESUMABLE views. Als een sessie is opgehangen, wordt er een rij toegevoegd aan de V$SESSION_WAIT view met in de EVENT column de inhoud "suspended on space error".



DBMS_RESUMABLE PACKAGE

 

  • ABORT(sessionID) - Stopt de gespecificeerde opgehangen sessie. Indien je de procedure aanroept moet je de eigenaar zijn van de sessie met sessionID, het ALTER SYSTEM privilege, of DBA privileges.
  • GET_SESSION_TIMEOUT(sessionID) - Geeft de timeout periode in seconden wwer voor de gespecificeerde sessie, of -1 als de sessie niet bestaat.
  • SET_SESSION_TIMEOUT(sessionID, timeout) - Zet de timeout in seconden van de gespecificeerde sessie, het commando zal gelijk effect hebben.
  • SET_TIMEOUT() - Geeft de periode in seconds voor de huidige sessie.
  • SET_TIMEOUT(timeout) - Zet de timeout in seconden, van de huidige sessie wat gelijk effect zal hebben.
  • DBMS_RESUMABLE.SPACE_ERROR_INFO(...) - Geeft informatie over de ruimte foutmeldingen die gegeven zullen worden die in de AFTER SUSPEND trigger staan.


BEPERKINGEN

Bij gebruik van dictionary managed tablespaces, DDL CREATE operaties met expliciete MAXEXTENTS die uit zijn extents raakt, worden afgebroken omdat de MAXEXTENTS parameter niet aangepast kan worden totdat het object is aangmaakt. Het uitbreiden van bestaande objecten is resumable.
Als rollback segmenten in dictionary managed tablespaces worden gezet zullen RBS errors niet doortstartbaar zijn. Oracle zal aanbevelen om automatic undo management wordt geconfigureerd of dat rollback segments in locally managed tablespace worden gezet.
Remote operaties worden niet ondersteund in herstartbare mode.
Individuele parallel server processen kunnen opgehangen worden terwijl andere processen zonder probleem doorlopen. Als de fout is opgelost zullen de opgehangen operaties gewoon doorlopen. Als deze stopt zal de hele transactie stoppen. 
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 305 gasten online