Applicabile a:
Database Oracle - 11gR2
Problema:
Spesso, durante l'esecuzione di prove di benchmarking, è necessario caricare un database pulito prima di iniziare una nuova esecuzione. Un modo per garantire un database pulito è quello di ricreare l'intero database prima di ciascuna esecuzione dei test, ma a seconda delle loro dimensioni questo approccio può far perdere molto tempo o essere inefficiente.
Soluzione:
Questo articolo descrive come utilizzare la flashback di Oracle per ripristinare rapidamente un database a uno stato che esisteva poco prima di eseguire il carico di lavoro. Più specificamente, questo articolo descrive la procedura su come utilizzare i "punti di ripristino garantiti".
Punto di ripristino:
Il punto di ripristino non è altro che un nome associato a un timestamp o a una SCN del database. È possibile creare un normale punto di ripristino o un punto di ripristino garantito. La differenza tra i due è che il punto di ripristino garantito consente di effettuare la flashback al punto di ripristino a prescindere del parametro di inizializzazione DB_FLASHBACK_RETENTION_TARGET, vale a dire che è sempre disponibile (supponendo di avere spazio sufficiente nell'area di recupero flash).
NOTA: in questo articolo la registrazione Flashback non è attivata.
Punto di ripristino garantito:
Prerequisiti: la creazione di un punto di ripristino garantito richiede i seguenti prerequisiti:
- L'utente deve disporre dei privilegi del sistema SYSDBA
- Deve aver creato un'area di recupero flash
- Il database deve essere in modalità ARCHIVELOG
Creazione di un punto di recupero garantito:
Dopo aver creato o migrato un nuovo database, per prima cosa è necessario creare un punto di ripristino garantito in modo da poter effettuare la flashback ogni volta prima di iniziare un nuovo carico di lavoro. La procedura è la seguente:
- $> su – oracle
- $> sqlplus / as sysdba;
- Verificare se ARCHIVELOG è abilitato
SQL> da v$database;
Se il passaggio 3 indica che ARCHIVELOG non è abilitato, procedere al passaggio 8 di seguito.
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alter database archivelog;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
dove CLEAN_DB è il nome assegnato al punto di ripristino garantito.
Visualizzazione del punto di ripristino garantito
SQL> select * from v$restore_point;
Verificare le informazioni sul punto di ripristino appena creato. Inoltre, annotare l'SCN# per riferimento, che definiremo "SCN# di riferimento".
Flasback al punto di recupero garantito
A questo punto, al fine di ripristinare il database al punto di ripristino garantito, procedere come segue:
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
Confrontare il SCN# del punto 9 di cui sopra con il riferimento SCN#.
NOTA: l'SCN# del punto 9 di cui sopra potrebbe non necessariamente corrispondere in modo esatto all'SCN# di riferimento, ma sarà abbastanza vicino.
Riferimenti: