Automatische Undo Management

Traditioneel werd undo informatie opgeslagen in Rollback Segmenten tot een commit of een rollback statement werd uitgevoerd, op dat moment werd het segment schoongemaakt.

In Oracle 9i is deze methode van handmatige undo management nog steeds beschikbaar naast een nieuwe automatische methode , undo management. Daarbij kan de DBA aangeven hoelang undo informatie bewaard moet blijven na een commit, om "snapshot too old" errors bij langlopende queries te voorkomen en om Oracle flashback query te ondersteunen.

Het is niet mogelijk om beide methoden in een enkele instance tegelijk te gebruiken, maar de methoden kunnen gewisseld worden, heirbij zal wel de instance gebouced moeten worden.

 

De volgende onderdelen zullen worden behandeld:

  • Undo Tablespace Creatie
  • Aanzetten van Automatische Undo Management
  • Onderhoud
  • Monitoring

Undo Tablespace Creatie

Automatic undo management heeft een locally managed undo tablespace nodig om undo segments in op te slaan. Undo tablespaces kunnen gemaakt worden tijdens database creatie of met het CREATE UNDO TABLESPACE statement:
-- Als onderdeel van de database creatie
CREATE DATABASE rbdb1
CONTROLFILE REUSE
...
UNDO TABLESPACE undotbs_01
DATAFILE '/oracle/data/db9/undo0101.dbf'
SIZE 100M REUSE AUTOEXTEND ON;

-- met het create undo tablespace statement
CREATE UNDO TABLESPACE undotbs_02
DATAFILE '/oracle/data/db9/undo0201.dbf'
SIZE 100M REUSE AUTOEXTEND ON;
Als undo_management op auto gezet wordt en er geen undo_tablespace wordt gedefinieerd dan zal Oracle er een creƫren tijdens de database creatie

Aanzetten van Automatische Undo Management

Omdat de default undo management mode MANUAL is, zal aangegeven moeten worden dat de instance AUTO mode moet gebruiken bin instance startup. Om dit te doen, kunnen de volgende initializsatie parameters gezet wordent:
UNDO_MANAGEMENT = AUTO			# Default is MANUAL
UNDO_TABLESPACE = undotbs_01 # De naam van de undo tablespace.
UNDO_RETENTION = 900 # De tijd dat undo wordt vastgehouden
# Default is 900 seconden.
UNDO_SUPPRESS_ERRORS = TRUE # Onderduk errors alsMANUAL undo admin
# SQL statements worden uitgevoerd,
Een aantal van deze parameters kunnen aangepast worden terwijl de instance op is maar de UNDO_MANAGEMENT parameter is statisch:
-- Dynamische Parameters.
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS_02;
ALTER SYSTEM SET UNDO_RETENTION=5;
ALTER SYSTEM SET UNDO_SUPPRESS_ERRORS=FALSE;

-- Statische Parameters.
ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO SCOPE=SPFILE;

Onderhoud

Onderhoud van undo tablespaces is gelijk aan reguliere tablespaces, al zijn sommige opties niet nodig omdat Oracle de meeste management taken overneemt:
-- Een datafile toevoegen.
ALTER TABLESPACE undotbs_01
ADD DATAFILE '/oracle/data/db9/undo0102.dbf'
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;

-- Een undo datafile resizen.
ALTER DATABASE DATAFILE '/oracle/data/db9/undo0102.dbf'
RESIZE 10M;

-- Backup operaties uitvoeren
ALTER TABLESPACE undotbs_01 BEGIN BACKUP;
ALTER TABLESPACE undotbs_01 END BACKUP;

-- Drop een undo tablespace.
DROP TABLESPACE undotbs_01;
In het laatste voorbeeld zal de tablespace alleen gedropped worden als deze niet gebruikt wordt en er geen undo informatie van een current transactie in zit. Het zal echter wel tablespaces droppen waar de undo informatie nog niet van verlopen is en dus invloed heeft op langlopende queries en flashback query.

Monitoring

Undo informatie kan met de volgende views bekeken worden:
V$UNDOSTAT
V$ROLLSTAT
V$TRANSACTION
DBA_UNDO_EXTENTS

Default hebben alle gebruikers unlimited teogang naar undo tablespaces, echter dit kan wel beperkt worden met de Resource Manager aanwijzing UNDO_POOL.

 

 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 258 gasten online