Zálohování a obnova databáze Kryštof Měkuta 15. 12. 2011
Zálohovací strategie • RMAN • User-Managed Backup and Recovery – Import / Export – On-line Backups – Off-line Backups
ARCHIVELOG mode V archivelog modu se archivují redo logy (které by se jinak přepsaly). Logy jsou obvykle umístěny jinde než data mohou být zálohovány prostředky OS nebo jinak, takže jsou obvykle dostupné při obnově dat. Je možné vybrat si automatickou nebo manuální variantu. Nastavení archivelog modu: CONNECT sys AS SYSDBA STARTUP MOUNT EXCLUSIVE; ALTER DATABASE ARCHIVELOG; ARCHIVE LOG START; ALTER DATABASE OPEN;
ARCHIVELOG mode Pro databázi v archivelog modu je potřeba nastavit následující parametry: log_archive_start = TRUE log_archive_dest_1 = 'LOCATION=/arch_dir_name' log_archive_dest_state_1 = ENABLE log_archive_format = %d_%t_%s.arc
ARCHIVELOG mode V manuálním režimu se provádí archivování logů příkazem: ALTER SYSTEM ARCHIVE LOG ALL; V automatickém režimu se provádí automaticky při zaplnění logů.
RMAN • RMAN se používá k zálohování a obnově databáze nebo jejích částí. Spravuje historii záloh. • Jde o commandlinovou aplikaci a wizzarda
RMAN - zálohování LIST BACKUP OF DATABASE; – vypíše seznam záloh databáze; BACKUP DATABASE; – zálohuje všechny datové soubory databáze, control file a server parameter file BACKUP DATABASE PLUS ARCHIVELOG; – zazálohuje také redo logy (archivuje current logs a potom zálohuje archived logs)
RMAN - obnova • V nejjednodušším případě se obnova databáze provádí následující sérií příkazů (po připojení k databázi pomocí RMAN): STARTUP MOUNT -- mount DB RESTORE DATABASE; -- data restore RECOVER DATABASE; -- media recovery
Restore & Recovery • Data Restore = zkopírování zálohovaných souborů z jejich fyzického úložiště do původní databáze´nebo do nové (prázdné) databáze • Media Recovery = aktualizace dat obnovených ze zálohy pomocí redo logů
User-Managed Backup and Recovery • Import / Export – zálohování logických částí databáze (dat včetně struktury) • Zálohování souborů databáze – Online – při otevřené databázi – Offline – při zavřené databázi
Import / Export • Typicky ne moc vhodné pro zálohování – na data obnovená pomocí importu nejde aplikovat redo logy • Lze použít například při nechtěném smazání tabulky z databáze • Postup: 1. 2. 3. 4. 5.
Obnovení zálohy „jinde“ Export dat tabulky Vytvoření tabulky v původní databázi Import dat tabulky do původní databáze Smazání obnovené kopie databáze
Offline záloha • Vhodné řešení, pokud si můžeme dovolit nedostupnost databáze (nebo některých tablepaces) během zálohování • Postup: 1. Vypnutí databáze (databáze nesmí být vypnuta v důsledku chyby ani příkazem ABORT – v takovém případě je potřeba ji zapnout a vypnout znovu)
Offline záloha 2. Zkopírování souborů Je potřeba zálohovat datové soubory a control files. Záloha logů není nutná (ale neuškodí). Seznam souborů k zálohování lze získat takto: select name from sys.v_$datafile; select member from sys.v_$logfile; select name from sys.v_$controlfile;
3. Nastartování databáze
Online záloha • Online záloha se provádí pro jednotlivé tablespaces. • Před zálohováním je potřeba tablespace převést do režimu backup. (Databáze je otevřená, ale změny se zapisují jen do redo logu – do datových souborů se zapíší až po ukončení režimu backup) • Online lze provádět jen u databáze v ARCHIVELOG modu.
Online záloha - postup 1. Přepnutí tablespace do backup režimu ALTER TABLESPACE t BEGIN BACKUP;
2. Kopírování souborů
Je potřeba zálohovat data files daného tablespace SELECT TABLESPACE_NAME, FILE_NAME FROM SYS.DBA_DATA_FILES WHERE TABLESPACE_NAME = 't';
3. Ukončení backup režimu
Online záloha - postup Po dokončení zálohy datových souborů je potřeba zálohovat logy , před zkopírováním archivovaných logů je potřeba archivovat aktuální log: ALTER SYSTEM ARCHIVE LOG CURRENT – Archive current log Při strukturální změně databáze je potřeba zálohovat control file: ALTER SYSTEM SWITCH LOGFILE; -- Force log switch to update control file headers ALTER DATABASE BACKUP CONTROLFILE TO '/backupDir/control.dbf';
User-Managed restore Pokud jsou poškozeny jen některé datové soubory, databáze stále běží a je aktuální control file, je možné zjistit, které soubory je potřeba obnovit, dotazem: SELECT * FROM V$RECOVER_FILE
User-Managed restore Aby bylo možné provést media recovery, je potřeba obnovit: Control file Data files Logs Server parameter file – neúčastní se obnovy databáze, ale je potřeba ke správnému provozu
Online recovery Poškození se týká datových souborů. Postup: 1. Vypnutí tablespace s chybnými datovými soubory ALTER TABLESPACE t OFFLINE IMMEDIATE; 2. Zkopírování souborů ze zálohy 3. Provedení recovery RECOVER TABLESPACE t 4. Zapnutí ALTER TABLESPACE t ONLINE;
Offline recovery Poškozené soubory je třeba nahradit zálohami. Pro provedení media recovery je nutné mít zálohy datových souborů a logů. Pokud nemáme zálohu control file, je možné ho při dobré znalosti databáze vytvořit znovu. Soubory je nejlepší nahrávat do původního umístění.
Offline recovery Postup: 1. Připojení, mount 2. Nastavení všech souborů, které mají být obnoveny jako online. Statut lze zjistit v V$DATAFILE 3. Recovery – – – –
RECOVER DATABASE RECOVER AUTOMATIC DATABASE RECOVER TABLESPACE tsname RECOVER DATAFILE 'filename'
4. Otevření databáze
Nekompletní recovery • Je možné provést recovery jen po určité datum nebo číslo změny, případně do zadání CANCEL uživatelem – například, pokud chybí některé logy • RECOVER DATABASE UNTIL CANCEL • RECOVER DATABASE UNTIL TIME '2011-1219:12:20:00' • RECOVER DATABASE UNTIL CHANGE 10034
Zdroje http://www.databasedesignresource.com/oracle-backup.html http://www.orafaq.com/wiki/Oracle_database_ Backup_and_Recovery_FAQ http://docs.oracle.com/cd/E11882_01/backup.1 12/e10642/rcmintro.htm#BRADV8001 http://docs.oracle.com/cd/E11882_01/backup.1 12/e10643/toc.htm