seminář: Administrace Oracle (NDBI013) LS2017/18 RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague
User-Managed Backup and Recovery Import / Export Datové pumpy Offline zálohy Online zálohy RMAN M. Kopecký NDBI013 2
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; M. Kopecký NDBI013 3
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 M. Kopecký NDBI013 4
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ů. M. Kopecký NDBI013 5
Import / Export zálohování logických částí databáze (dat včetně struktury) Vhodné pro možnost dělat s právy uživatele Typicky ne moc vhodné pro standardní 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 Příklad: - Obnovení zálohy jinde Export dat tabulky Import do jiné databáze, nebo: Smazání tabulky a import dat tabulky do původní databáze M. Kopecký NDBI013 6
Novější a pokročilejší verze exp/imp. Snažší řízení přístupových práv CONN / AS SYSDBA ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK; CREATE OR REPLACE DIRECTORY test_dir AS '/u01/app/oracle/oradata/'; GRANT READ, WRITE ON DIRECTORY test_dir TO scott; expdp scott/tiger@db10g tables=emp,dept directory=test_dir dumpfile=emp_dept.dmp logfile=expdpemp_dept.log impdp scott/tiger@db10g tables=emp,dept directory=test_dir dumpfile=emp_dept.dmp logfile=impdpemp_dept.log M. Kopecký NDBI013 7
expdp scott/tiger@db10g schemas=scott directory=test_dir dumpfile=scott.dmp logfile=expdpscott.log impdp scott/tiger@db10g schemas=scott directory=test_dir dumpfile=scott.dmp logfile=impdpscott.log expdp system/password@db10g full=y directory=test_dir dumpfile=db10g.dmp logfile=expdpdb10g.log impdp system/password@db10g full=y directory=test_dir dumpfile=db10g.dmp logfile=impdpdb10g.log INCLUDE=TABLE,VIEW,PACKAGE:"LIKE '%API' INCLUDE=TABLE INCLUDE=VIEW INCLUDE=PACKAGE:"LIKE '%API'" expdp system/password@db10g schemas=scott directory=test_dir dumpfile=scott_meta.dmp logfile=expdp.log content=[meta]data_only expdp system/password@db10g full=y directory=test_dir dumpfile=full.dmp logfile=expdp_full.log query='scott.emp:"where deptno=0",scott.dept:"where deptno=0"' M. Kopecký NDBI013 8
exp [jmeno[heslo[@db]]] [param=hodnota [, ]] imp [jmeno[heslo[@db]]] [param=hodnota [, ]] M. Kopecký NDBI013 9
Vhodné řešení, pokud si můžeme dovolit nedostupnost databáze během zálohování Postup: 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) Pozn.: jde to, ale je potřeba zálohovat i aktivní redolog soubory M. Kopecký NDBI013 10
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; M. Kopecký NDBI013 11
Nastartování databáze M. Kopecký NDBI013 12
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. M. Kopecký NDBI013 13
Přepnutí tablespace do backup režimu ALTER TABLESPACE t BEGIN BACKUP; 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'; Ukončení backup režimu ALTER TABLESPACE t BEGIN BACKUP; M. Kopecký NDBI013 14
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'; M. Kopecký NDBI013 15
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 M. Kopecký NDBI013 16
Poškození se týká datových souborů. Vypnutí tablespace s chybnými datovými soubory ALTER TABLESPACE t OFFLINE IMMEDIATE; Zkopírování souborů ze zálohy Provedení recovery RECOVER TABLESPACE t Zapnutí ALTER TABLESPACE t ONLINE; M. Kopecký NDBI013 17
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í. M. Kopecký NDBI013 18
Postup: Připojení, mount Nastavení všech souborů, které mají být obnoveny jako online. Statut lze zjistit v V$DATAFILE Recovery RECOVER DATABASE RECOVER AUTOMATIC DATABASE RECOVER TABLESPACE tsname RECOVER DATAFILE 'filename Otevření databáze M. Kopecký NDBI013 19
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 '2017-12- 19:12:20:00 RECOVER DATABASE UNTIL CHANGE 10034 M. Kopecký NDBI013 20
RMAN se používá k zálohování a obnově databáze nebo jejích částí. Spravuje historii záloh. Jde o CLI aplikaci M. Kopecký NDBI013 21
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) M. Kopecký NDBI013 22
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 M. Kopecký NDBI013 23
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ů M. Kopecký NDBI013 24