Backup
L'argomento del presente post è stato testato su database Oracle 11gR2 single instance.
Lo scopo del backup è riportare l'istanza in stato open.
Una istanza singola passa allo stato open dopo le fasi di:
1) nomount: se esiste il server parameter file spfile<SID>.ORA o il suo backup o almeno il file init.ora;
2) mount: se esiste il controlfile;
3) open: se esistono Datafile e Redolog file e se hanno gli stessi valori di SCN (System Change Number).
Il Backup con RMAN effettua una copia fisica di:
- Datafile
- Control file (Spfile)
- archive redo logs
di default all'interno della flash recovery area.
Il tool per realizzare il backup, restore e recovery è Recovery Manager o RMAN che è un client e pertanto per funzionare l'istanza deve essere almeno in stato mount.
Si trova sotto il path seguente:
[oracle@coslab03 ~]$ which rman
/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman
Possiamo distinguere due tipi di backup:
Il vantaggio di utilizzare la Flash Recovery Area è che Oracle automaticamente cancella i file non più necessari ogni volta che è necessario aggiungere spazio senza dover intervenire manualmente.
RMAN effettua due tipi di backup: backup set che è quello di deafult e consiste nell'effettuare una copie solo dei blocchi usati e image copy che è invece una copia byte by byte del file originale e può essere effettuata solo su disco.
RMAN utilizza come informazioni il Control file oppure il Recovery Catalog.
[oracle@ ]cd $ORACLE_HOME/bin
[oracle@ ]$ rman
Per usare il control file eseguire il comando
RMAN>connect target sys/<pwd>@<sid>
Se si sfrutta l'autenticazione del sistema operativo dopo aver eseguito
export ORACLE_SID=<SID>
RMAN> connect target /
oppure direttamente senza usare connect.
[oracle@ ]$ rman target sys/<pwd>@<sid>
Per collegarsi al Recovery Catalog
RMAN>connect catalog rman/<pwd>@<sid catalog>
oppure
[oracle@ ]$ rman target sys/<pwd>@<sid> catalog rman/<pwd>@<sid catalog>
Per collegarsi ad un db ausiliario per esempio in fase di duplicazione del db.
oracle@ ]$ rman target sys/<pwd>@<sid> catalog rman/<pwd>@<sid catalog> auxiliary sys/<pwd>@<sid aux>
Per chiudere il client RMAN.
RMAN> exit
oppure
RMAN> quit
RMAN> REPORT SCHEMA;
Fornisce la lista dei datafiles.
Report of database schema for database with db_unique_name S11TEST1
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 700 SYSTEM *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/system01.dbf
2 600 SYSAUX *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/sysaux01.dbf
3 875 UNDOTBS1 *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/undotbs01.dbf
4 5 USERS *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/users01.dbf
5 1 TS_PEPT_DATA *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/ts_pept_data01.dbf
6 1 TS_PEPT_INDEX *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/ts_index_data01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 64 TEMP 32767 /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/temp01.dbf
RMAN> REPORT NEED BACKUP;
Lista dei datafile e archivelog mai copiati in conformità con la backup retention policy.
Se ad esempio si imposta rman > configure retention policy to none;
allora il comando precedente termina in errore.
RMAN> REPORT NEED BACKUP days n;
Lista dei file che richiedono più di n giorni di valori di archive log per il effettuare il recovery.
RMAN> BACKUP DATABASE;
Vengono creati due file uno contenente i Datafiles e l'altro Controlfile ed Spfile; vengono salvati nella directory $ORACLE_HOME/flash_recovery/<Db Unique Name>/backupset se abilitato la FRA.
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
Effettua il backup di tutti i datafile, compresi controlfile e spfile, e gli archivelog.
Lo scopo del backup è riportare l'istanza in stato open.
Una istanza singola passa allo stato open dopo le fasi di:
1) nomount: se esiste il server parameter file spfile<SID>.ORA o il suo backup o almeno il file init.ora;
2) mount: se esiste il controlfile;
3) open: se esistono Datafile e Redolog file e se hanno gli stessi valori di SCN (System Change Number).
Il Backup con RMAN effettua una copia fisica di:
- Datafile
- Control file (Spfile)
- archive redo logs
di default all'interno della flash recovery area.
Il tool per realizzare il backup, restore e recovery è Recovery Manager o RMAN che è un client e pertanto per funzionare l'istanza deve essere almeno in stato mount.
Si trova sotto il path seguente:
[oracle@coslab03 ~]$ which rman
/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman
Possiamo distinguere due tipi di backup:
- Cold Backup (ossia backup a freddo o consistent) e si esegue quando l'istanza è in stato mount così da poter permettere la lettura del Control File e risalire ai Datafiles e Rdolog file. Gli utenti non si collegano al database. Si chiama consistent perché al momento del backup il valore di SCN nell'header del datafiles e nel control file coincidono.
- Hot Backup (ossia backup a caldo o inconsistent) funziona anche con l'istanza open e quindi gli utenti si collegano. Questo backup prevede l'uso di RMAN + RECOVERY WINDOWS (per recuperare le transazioni non registrate sul file di backup). E' un backup inconsistente perché non c'è garanzia che il valore SNC nell'header dei datafile sia sincronizzato con il valore presente nel control file.
Il vantaggio di utilizzare la Flash Recovery Area è che Oracle automaticamente cancella i file non più necessari ogni volta che è necessario aggiungere spazio senza dover intervenire manualmente.
RMAN effettua due tipi di backup: backup set che è quello di deafult e consiste nell'effettuare una copie solo dei blocchi usati e image copy che è invece una copia byte by byte del file originale e può essere effettuata solo su disco.
RMAN utilizza come informazioni il Control file oppure il Recovery Catalog.
[oracle@ ]cd $ORACLE_HOME/bin
[oracle@ ]$ rman
Per usare il control file eseguire il comando
RMAN>connect target sys/<pwd>@<sid>
Se si sfrutta l'autenticazione del sistema operativo dopo aver eseguito
export ORACLE_SID=<SID>
RMAN> connect target /
oppure direttamente senza usare connect.
[oracle@ ]$ rman target sys/<pwd>@<sid>
Per collegarsi al Recovery Catalog
RMAN>connect catalog rman/<pwd>@<sid catalog>
oppure
[oracle@ ]$ rman target sys/<pwd>@<sid> catalog rman/<pwd>@<sid catalog>
Attenzione che se compare l’errore
RMAN-04004: error from recovery catalog database:
ORA-12154: TNS:could not resolve the connect identifier specified
ORA-12154: TNS:could not resolve the connect identifier specified
è causato dal fatto che RMAN non risolve l’alias SID e in questo caso collegarsi come SID.DOMINIO, a meno che il domain non sia messo nel file sqlnet.ora.
Per collegarsi ad un db ausiliario per esempio in fase di duplicazione del db.
oracle@ ]$ rman target sys/<pwd>@<sid> catalog rman/<pwd>@<sid catalog> auxiliary sys/<pwd>@<sid aux>
Per chiudere il client RMAN.
RMAN> exit
oppure
RMAN> quit
RMAN> REPORT SCHEMA;
Fornisce la lista dei datafiles.
Report of database schema for database with db_unique_name S11TEST1
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 700 SYSTEM *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/system01.dbf
2 600 SYSAUX *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/sysaux01.dbf
3 875 UNDOTBS1 *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/undotbs01.dbf
4 5 USERS *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/users01.dbf
5 1 TS_PEPT_DATA *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/ts_pept_data01.dbf
6 1 TS_PEPT_INDEX *** /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/ts_index_data01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 64 TEMP 32767 /u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/temp01.dbf
RMAN> REPORT NEED BACKUP;
Lista dei datafile e archivelog mai copiati in conformità con la backup retention policy.
Se ad esempio si imposta rman > configure retention policy to none;
allora il comando precedente termina in errore.
RMAN> REPORT NEED BACKUP days n;
Lista dei file che richiedono più di n giorni di valori di archive log per il effettuare il recovery.
RMAN> BACKUP DATABASE;
Vengono creati due file uno contenente i Datafiles e l'altro Controlfile ed Spfile; vengono salvati nella directory $ORACLE_HOME/flash_recovery/<Db Unique Name>/backupset se abilitato la FRA.
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
Effettua il backup di tutti i datafile, compresi controlfile e spfile, e gli archivelog.
Con il comando "plus archivelog" Rman esegue il cmando ALTER SYSTEM ARCHIVE LOG CURRENT.
RMAN> BACKUP AS COPY DATABASE;
Crea una immagine copia di tutti i Datafiles del database. E' una copia creata come se usassi il comando "cp".
I file vengono salvati sono la directory $ORACLE_HOME/flash_recovery/<Db Unique Name>/datafile
RMAN>backup database skip inaccessible skip readonly skip offline;
Effettua il backup dell'intero db escludendo i datafiles offline, in sola lettura oppure inaccessibile perché ci sono errori I/O. Gli stessi comandi valgono per gli archivelog e quindi un esempio di inaccessibilità si ha se il un archivelog è stato cancellato o spostato e quindi RMAN non lo può leggere.
RMAN> LIST BACKUP OF DATABASE;
Visualizzare i file prodotti e le directory dove sono salvati
oppure
RMAN> LIST BACKUP; (oppure LIST BACKUPSET;)
Con questo ultimo comando viene consultato il control file invece del catalogo e si visualizzano i file precedenti più il file di backup contenente Spfile e Controlfile.
List of Backup Sets
===================
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
1 87.37M DISK 00:00:01 10-JAN-19
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20190110T152207
Piece Name: /u01/app/oracle/fast_recovery_area/S11TEST1/S11TEST1/backupset/2019_01_10/o1_mf_annnn_TAG20190110T152207_g3go8hgy_.bkp
RMAN> delete backupset 1;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=21 device type=DISK
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
1 1 1 1 AVAILABLE DISK /u01/app/oracle/fast_recovery_area/S11TEST1/S11TEST1/backupset/2019_01_10/o1_mf_annnn_TAG20190110T152207_g3go8hgy_.bkp
Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/u01/app/oracle/fast_recovery_area/S11TEST1/S11TEST1/backupset/2019_01_10/o1_mf_annnn_TAG20190110T152207_g3go8hgy_.bkp RECID=1 STAMP=997197727
Deleted 1 objects
Creare un backup set di copie immagini dei tablespace users e system che hanno un loro tag. Al backup set viene dato anche un tag.
RMAN>backup as backupset tag bkp_test
copy of tablespace USERS from tag COPY_4_20190121
copy of tablespace TS_PEPT_DATA from tag PEPT_20190121;
Dare al backup un tag
RMAN>backup as copy database tag bkp_test01;
Il nome del tag è visibile lanciando il comando "list backup".
Si crea una copia dell'immagine copia del db a partire da una copia già esistente che ha tag bkp_test01.
RMAN>backup as copy
copy of database from tag=bkp_test01 tag=bkp_test02;
Il nome del tag è visibile dal comando "list datafilecopy all;"
TABLESPACE
RMAN> BACKUP AS COPY TABLESPACE users;
Crea il backup come copia immagine del datafile associato al tablespace users.
RMAN> backup as copy db_file_name_convert = ( '/u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile','/u01/app/oracle/backup/datafile') tablespace users;
RMAN>backup as copy device type disk db_file_name_convert = ( '/u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile','/u05/backup/datafile') tablespace users;
RMAN> backup as copy tag copy_4_20190121 tablespace users;
Starting backup at 21-JAN-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/TEST1/TEST1/datafile/users01.dbf
output file name=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/datafile/o1_mf_users_g4cbm29j_.dbf tag=COPY_4_20190121 RECID=28 STAMP=998137074
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 21-JAN-19
RMAN> LIST DATAFILECOPY ALL;
Key File S Completion Time Ckp SCN Ckp Time
------- ---- - --------------- ---------- ---------------
RMAN> LIST BACKUP OF TABLESPACE USERS;
ALTER TABLESPACE ts_data1 BEGIN BACKUP;
Questo comando imposta il tablespace in modalità backup ed è usato quando si vuole effettuare un backup dei datafiles di tipo user-managed e si usa con il tablepsace online e il database open in archivelog mode. In questà modalità il database copia l'immagine di un intero blocco, prima di essere modificato, all'interno dei redo stream e congela il valore dei checkpoint change number all'interno degli headers dei datafiles del tablespace, finché il tablespace non è rimosso dalla modalità backup mode.
"Alter tablespace ts_data1 end backup" oppure "Alter database end backup" annulla per il tablespace la modalità backup e il database aggiorna il valore di chackpoint SCN dei datafiles con il valore corrente del database.
Se è previsto un restore di un datafile in modalità backup il database andrà a leggere tutte le modifiche apportate a quei datafiles nei redologs per renderli consitenti.
SPOOL
RMAN> spool log to '/home/oracle/backuplog.txt'
RMAN> report schema;
RMAN> spool log off;
RMAN> backup datafile 1;
Backup del datafile 1 come backup set nella flash recovery area sotto la directory ....../backupset/2019_02_01/...
Backup di un datafile in altra directory
RMAN>backup datafile 4 FORMAT '/tmp/datafile4.dbf';
RMAN> backup copies 1 datafile 4 tag bkp_4_20190121;
RMAN> backup as copy datafile 1;
RMAN> LIST ARCHIVELOG ALL;
Lista degli archivelog. Nell'esempio di seguito non sono nella FRA.
using target database control file instead of recovery catalog
List of Archived Log Copies for database with db_unique_name S11TEST1
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
9 1 78 A 10-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_78_997096675.dbf
RMAN> BACKUP spfile;
BACKUP COMPLETO
RMAN > backup incremental level 1 cumulative database;
Un backup incrementale di tipo cumulative invece è un backup che contiene i dati modificati dall’ultimo backup incrementale 0.
Il ripristino di un backup di tipo cumulativo è più rapido del ripristino di un backup di tipo differenziale.
RMAN> BACKUP AS COPY DATABASE;
Crea una immagine copia di tutti i Datafiles del database. E' una copia creata come se usassi il comando "cp".
I file vengono salvati sono la directory $ORACLE_HOME/flash_recovery/<Db Unique Name>/datafile
RMAN>backup database skip inaccessible skip readonly skip offline;
Effettua il backup dell'intero db escludendo i datafiles offline, in sola lettura oppure inaccessibile perché ci sono errori I/O. Gli stessi comandi valgono per gli archivelog e quindi un esempio di inaccessibilità si ha se il un archivelog è stato cancellato o spostato e quindi RMAN non lo può leggere.
RMAN> LIST BACKUP OF DATABASE;
Visualizzare i file prodotti e le directory dove sono salvati
oppure
RMAN> LIST BACKUP; (oppure LIST BACKUPSET;)
Con questo ultimo comando viene consultato il control file invece del catalogo e si visualizzano i file precedenti più il file di backup contenente Spfile e Controlfile.
List of Backup Sets
===================
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
1 87.37M DISK 00:00:01 10-JAN-19
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20190110T152207
Piece Name: /u01/app/oracle/fast_recovery_area/S11TEST1/S11TEST1/backupset/2019_01_10/o1_mf_annnn_TAG20190110T152207_g3go8hgy_.bkp
RMAN> delete backupset 1;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=21 device type=DISK
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
1 1 1 1 AVAILABLE DISK /u01/app/oracle/fast_recovery_area/S11TEST1/S11TEST1/backupset/2019_01_10/o1_mf_annnn_TAG20190110T152207_g3go8hgy_.bkp
Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/u01/app/oracle/fast_recovery_area/S11TEST1/S11TEST1/backupset/2019_01_10/o1_mf_annnn_TAG20190110T152207_g3go8hgy_.bkp RECID=1 STAMP=997197727
Deleted 1 objects
Creare un backup set di copie immagini dei tablespace users e system che hanno un loro tag. Al backup set viene dato anche un tag.
RMAN>backup as backupset tag bkp_test
copy of tablespace USERS from tag COPY_4_20190121
copy of tablespace TS_PEPT_DATA from tag PEPT_20190121;
Dare al backup un tag
RMAN>backup as copy database tag bkp_test01;
Il nome del tag è visibile lanciando il comando "list backup".
Si crea una copia dell'immagine copia del db a partire da una copia già esistente che ha tag bkp_test01.
RMAN>backup as copy
copy of database from tag=bkp_test01 tag=bkp_test02;
Il nome del tag è visibile dal comando "list datafilecopy all;"
TABLESPACE
RMAN> BACKUP AS COPY TABLESPACE users;
Crea il backup come copia immagine del datafile associato al tablespace users.
RMAN> backup as copy db_file_name_convert = ( '/u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile','/u01/app/oracle/backup/datafile') tablespace users;
RMAN>backup as copy device type disk db_file_name_convert = ( '/u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile','/u05/backup/datafile') tablespace users;
Effettua il backup copia immagine del datafile in una nuova location.
RMAN> backup as copy tag copy_4_20190121 tablespace users;
Starting backup at 21-JAN-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/TEST1/TEST1/datafile/users01.dbf
output file name=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/datafile/o1_mf_users_g4cbm29j_.dbf tag=COPY_4_20190121 RECID=28 STAMP=998137074
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 21-JAN-19
Key File S Completion Time Ckp SCN Ckp Time
------- ---- - --------------- ---------- ---------------
28 4 A 21-JAN-19 1609909 21-JAN-19
Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/datafile/o1_mf_users_g4cbm29j_.dbf
Tag: COPY_4_20190121
RMAN> LIST BACKUP OF TABLESPACE USERS;
Fornisce la lista dei backup del tablespace e non le immagine copie. Infatti non compare il tag di prima ma quello della copia del datafile 4 (BKP_4_20190121).
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
88 Full 1.03M DISK 00:00:00 21-JAN-19
BP Key: 88 Status: AVAILABLE Compressed: NO Tag: BKP_4_20190121
Piece Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_21/o1_mf_nnndf_BKP_4_20190121_g4c9w8bp_.bkp
List of Datafiles in backup set 88
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
4 Full 1609430 21-JAN-19 /u01/app/oracle/oradata/TEST1/TEST1/datafile/users01.dbf
Questo comando imposta il tablespace in modalità backup ed è usato quando si vuole effettuare un backup dei datafiles di tipo user-managed e si usa con il tablepsace online e il database open in archivelog mode. In questà modalità il database copia l'immagine di un intero blocco, prima di essere modificato, all'interno dei redo stream e congela il valore dei checkpoint change number all'interno degli headers dei datafiles del tablespace, finché il tablespace non è rimosso dalla modalità backup mode.
"Alter tablespace ts_data1 end backup" oppure "Alter database end backup" annulla per il tablespace la modalità backup e il database aggiorna il valore di chackpoint SCN dei datafiles con il valore corrente del database.
Se è previsto un restore di un datafile in modalità backup il database andrà a leggere tutte le modifiche apportate a quei datafiles nei redologs per renderli consitenti.
SPOOL
RMAN> spool log to '/home/oracle/backuplog.txt'
RMAN> report schema;
RMAN> spool log off;
Salva l'output nel file di log.
[oracle@coslab03 ~]$ rman target / @script_rman.rcv log /home/oracle/rman_log.txt
Nel file script_rman.rcv c'è una istruzione rman e l'output viene scritto nel file txt.
[oracle@coslab03 ~]$ rman target / @script_rman2.rcv log /home/oracle/rman_log.txt append
Nel file di log viene aggiunto in coda il log del secondo script ram.
DATAFILES
RMAN> backup datafile 1;
Backup del datafile 1 come backup set nella flash recovery area sotto la directory ....../backupset/2019_02_01/...
Backup di un datafile in altra directory
RMAN>backup datafile 4 FORMAT '/tmp/datafile4.dbf';
RMAN> backup copies 1 datafile 4 tag bkp_4_20190121;
Effettua il backup del datafile associandogli un tag che è visibile dal comando seguente.
RMAN> list backup of datafile 4;
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
88 Full 1.03M DISK 00:00:00 21-JAN-19
BP Key: 88 Status: AVAILABLE Compressed: NO Tag: BKP_4_20190121
Piece Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_21/o1_mf_nnndf_BKP_4_20190121_g4c9w8bp_.bkp
List of Datafiles in backup set 88
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
4 Full 1609430 21-JAN-19 /u01/app/oracle/oradata/TEST1/TEST1/datafile/users01.dbf
RMAN> backup as copy datafile 1;
Crea un copia immagine del datafile 1 sotto la FRA sotto la direcorty datafile
ARCHIVELOG
Lista degli archivelog. Nell'esempio di seguito non sono nella FRA.
using target database control file instead of recovery catalog
List of Archived Log Copies for database with db_unique_name S11TEST1
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
9 1 78 A 10-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_78_997096675.dbf
10 1 79 A 11-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_79_997096675.dbf
11 1 80 A 11-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_80_997096675.dbf
12 1 81 A 12-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_81_997096675.dbf
13 1 82 A 12-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_82_997096675.dbf
14 1 83 A 13-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_83_997096675.dbf
RMAN> delete archivelog from logseq=80 until logseq=82;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=145 device type=DISK
List of Archived Log Copies for database with db_unique_name S11TEST1
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
11 1 80 A 11-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_80_997096675.dbf
12 1 81 A 12-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_81_997096675.dbf
13 1 82 A 12-JAN-19
Name: /u01/app/oracle/archive/S11TEST1/1_82_997096675.dbf
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/u01/app/oracle/archive/S11TEST1/1_80_997096675.dbf RECID=11 STAMP=997351702
deleted archived log
archived log file name=/u01/app/oracle/archive/S11TEST1/1_81_997096675.dbf RECID=12 STAMP=997394947
deleted archived log
archived log file name=/u01/app/oracle/archive/S11TEST1/1_82_997096675.dbf RECID=13 STAMP=997438187
Deleted 3 objects
RMAN> backup archivelog all;
Il backup degli archivelog è salvato nella la directory backupset.
Starting backup at 15-JAN-19
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=120 RECID=51 STAMP=997567286
input archived log thread=1 sequence=121 RECID=67 STAMP=997619769
input archived log thread=1 sequence=122 RECID=68 STAMP=997619769
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_annnn_TAG20190115T124244_g3vksnrd_.bkp tag=TAG20190115T124244 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=69 STAMP=997619911
input archived log thread=1 sequence=2 RECID=70 STAMP=997619913
input archived log thread=1 sequence=3 RECID=71 STAMP=997619917
input archived log thread=1 sequence=4 RECID=72 STAMP=997619917
input archived log thread=1 sequence=5 RECID=73 STAMP=997619921
input archived log thread=1 sequence=6 RECID=74 STAMP=997620164
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_annnn_TAG20190115T124244_g3vksow7_.bkp tag=TAG20190115T124244 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
CONTROL FILE e SPFILE
RMAN> list backup of controlfile;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
12 Full 9.39M DISK 00:00:02 14-JAN-19
BP Key: 12 Status: AVAILABLE Compressed: NO Tag: TAG20190114T152111
Piece Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_14/o1_mf_ncsnf_TAG20190114T152111_g3s6q80j_.bkp
Control File Included: Ckp SCN: 1239441 Ckp time: 14-JAN-19
RMAN> BACKUP CURRENT CONTROLFILE;
Il backup del control file è salvato nella la directory backupset.
Starting backup at 15-JAN-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_ncnnf_TAG20190115T125924_g3vlrxc1_.bkp tag=TAG20190115T125924 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
Il backup degli archivelog è salvato nella la directory backupset.
Starting backup at 15-JAN-19
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=120 RECID=51 STAMP=997567286
input archived log thread=1 sequence=121 RECID=67 STAMP=997619769
input archived log thread=1 sequence=122 RECID=68 STAMP=997619769
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_annnn_TAG20190115T124244_g3vksnrd_.bkp tag=TAG20190115T124244 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=69 STAMP=997619911
input archived log thread=1 sequence=2 RECID=70 STAMP=997619913
input archived log thread=1 sequence=3 RECID=71 STAMP=997619917
input archived log thread=1 sequence=4 RECID=72 STAMP=997619917
input archived log thread=1 sequence=5 RECID=73 STAMP=997619921
input archived log thread=1 sequence=6 RECID=74 STAMP=997620164
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_annnn_TAG20190115T124244_g3vksow7_.bkp tag=TAG20190115T124244 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
RMAN> backup device type sbt archivelog like '/disk%arc%' delete all input;
Effettua il backup di ogni singolo archivede redo log con una unica lg sequence number e poi cancella gli archive se il backup termina con successo.
RMAN> backup archivelog from time "ssysdate-5" until time "ssysdate-7";
RMAN> backup archivelog sequence 55 delete input;
RMAN> backup archivelog sequence between 55 and 100 thread 1 delete input;
Effettua il backup di ogni singolo archivede redo log con una unica lg sequence number e poi cancella gli archive se il backup termina con successo.
RMAN> backup archivelog from time "ssysdate-5" until time "ssysdate-7";
RMAN> backup archivelog sequence 55 delete input;
RMAN> backup archivelog sequence between 55 and 100 thread 1 delete input;
CONTROL FILE e SPFILE
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
12 Full 9.39M DISK 00:00:02 14-JAN-19
BP Key: 12 Status: AVAILABLE Compressed: NO Tag: TAG20190114T152111
Piece Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_14/o1_mf_ncsnf_TAG20190114T152111_g3s6q80j_.bkp
Control File Included: Ckp SCN: 1239441 Ckp time: 14-JAN-19
Il backup del control file è salvato nella la directory backupset.
Starting backup at 15-JAN-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_ncnnf_TAG20190115T125924_g3vlrxc1_.bkp tag=TAG20190115T125924 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
RMAN> BACKUP AS COPY CURRENT CONTROLFILE;
La copia immagine del control file è salvato nella la directory controlfile.
Starting backup at 15-JAN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=125 device type=DISK
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/controlfile/o1_mf_TAG20190115T131946_g3vmz252_.ctl tag=TAG20190115T131946 RECID=25 STAMP=997622386
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
RMAN> backup tablespace users include current controlfile;
RMAN> list backup of spfile;
using target database control file instead of recovery catalog
List of Backup Sets
==================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
19 Full 9.52M DISK 00:00:01 15-JAN-19
BP Key: 19 Status: AVAILABLE Compressed: NO Tag: TAG20190115T124039
Piece Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_ncsnf_TAG20190115T124039_g3vkp7k3_.bkp
SPFILE Included: Modification time: 15-JAN-19
SPFILE db_unique_name: S11TEST1
La copia immagine del control file è salvato nella la directory controlfile.
Starting backup at 15-JAN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=125 device type=DISK
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/controlfile/o1_mf_TAG20190115T131946_g3vmz252_.ctl tag=TAG20190115T131946 RECID=25 STAMP=997622386
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
RMAN> backup tablespace users include current controlfile;
RMAN> list backup of spfile;
using target database control file instead of recovery catalog
List of Backup Sets
==================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
19 Full 9.52M DISK 00:00:01 15-JAN-19
BP Key: 19 Status: AVAILABLE Compressed: NO Tag: TAG20190115T124039
Piece Name: /u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_ncsnf_TAG20190115T124039_g3vkp7k3_.bkp
SPFILE Included: Modification time: 15-JAN-19
SPFILE db_unique_name: S11TEST1
RMAN> BACKUP AS COPY spfile;
Starting backup at 15-JAN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 15-JAN-19
channel ORA_DISK_1: finished piece 1 at 15-JAN-19
piece handle=/u01/app/oracle/fast_recovery_area/TEST1/TEST1/backupset/2019_01_15/o1_mf_nnsnf_TAG20190115T172333_g3w285ry_.bkp tag=TAG20190115T172333 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 15-JAN-19
RMAN> BACKUP spfile;
BACKUP COMPLETO
RMAN> configure controlfile autobackup on;
RMAN> backup database plus archivelog;
BACKUP INCREMENTALE
RMAN > backup incremental level 1 database;
E’ un backup incrementale di tipo differential perché effettua il backup dei soli blocchi datafile cambiati dall’ultimo backup incrementale che può essere 0 oppure 1.
RMAN > backup incremental level 1 cumulative database;
I backup cumulativi richiedono più spazio disco e più tempo rispetto ai differenziali.
The Block Change Tracking -BCT - migliora le performance del backup level 1 (differential e cumulative) perché registra i "changed blocks" di ogni datafile in un file accessibile da RMAN e quindi RMAN evita di analizzare ogni blocco dei data file.
Query di verifica se abilitato
SQL> select * from v$block_change_tracking;
Può essere abitato online.
SQL> alter system set DB_CREATE_FILE_DEST='/u01/app/oracle/archive/S11TEST1/BCT' scope=both;
SQL> alter database enable block change tracking using file '/u01/app/oracle/archive/S11TEST1/BCT/block_change_tracking.dbf';
Copie multiple di Backup
# mkdir -p/u01/app/oracle/archive/SIAT11F/BCT
SQL> alter system set DB_CREATE_FILE_DEST='/u01/app/oracle/archive/S11TEST1/BCT' scope=both;
SQL> alter database enable block change tracking using file '/u01/app/oracle/archive/S11TEST1/BCT/block_change_tracking.dbf';
Per disabitarlo:
SQL> alter database disable block change tracking;
Ogni volta che viene effettuato una modifica di un dato e viene eseguita una commit, viene sia generata una redo entry che scritta la modifica del blocco nell'area CTWR dba buffer all'interno del Larger Pool. Ad ogni checkpoint, il processo CTWR scrive dal buffer nel file BCT.
La dimensione del buffer CTWR dba è individuabile dalla seguente query:
SQL> select * from v$sgastat where name like 'CTWR%';
RESTART BACKUP dopo un errore
Se si verifica un errore durante il backup notturno è possibile rieseguire il backup dei solo datafile e archivelog che non sono stati copiati durante la notte.
RMAN > backup not backed up since time 'sysdate-1' database plus archivelog;
Se viene chiesto di effettuare contemporaneamente più copie di backup impostare il seguente parametro.
RMAN > configure datafile backup copies for device type disk to 2;
Ogni volta che viene effettuato un backup vengono creati due copie di ogni backup piece per i datafile, control file e archived redo logs.
Conservare un Backup per un anno
RMAN> Backup Database Tag keep_one_year Keep Until Time 'sysdate+365';