Upload
lindsay
View
38
Download
1
Embed Size (px)
DESCRIPTION
Databázové systémy II. Přednáška č. 10 RNDr. David Žák, Ph.D . Fakulta elektrotechniky a informatiky david.zak @ upce.cz. Obsah. Zálohování dat Export dat Import dat Práce s XML dokumenty. Rizika. Hodnotu dat si uvědomíme teprve v okamžiku, kdy o ně přijdeme. - PowerPoint PPT Presentation
Citation preview
Databázové systémy II
Přednáška č. 10
RNDr. David Žák, Ph.D.Fakulta elektrotechniky a informatiky
Obsah
• Zálohování dat
• Export dat
• Import dat
• Práce s XML dokumenty
Databázové systémy II - př.10Databázové systémy II - př.10 22
Rizika
Hodnotu dat si uvědomíme teprve v okamžiku, kdy o ně přijdeme.
Database Oracle 10g má nástroje na zotavení při poškození disku (v poškozených blocích) nebo při poškození transakčního žurnálu.
Databázové systémy II - př.10Databázové systémy II - př.10 33
Fyzická záložní databázeFyzická záložní databáze umožňuje umístění 2 databází v
různých geografických lokalitách.Aktualizace dat v produkčním systému se na záložním systému
realizují prostřednictvím souborů transakčního žurnálu (na záložním systému se aplikují nad tzv. záložní (standby) databází).
Přenos souborů je realizován prostřednictvím síťových protokolů.
Databázové systémy II - př.10Databázové systémy II - př.10 44
Logická záložní databázeAktualizace dat se realizuje na úrovni logického SQL.Část uživatelů může aktivně pracovat na produkčním systému,
zatímco jiní uživatelé mohou vykonávat různé operace na záložním systému.
Záložní server může sloužit například pro dolování dat nebo analýzy. Při analytických operacích nevadí malé zpoždění vůči hlavní databázi na produkčním systému – příklad: pokud zkoumáme chování zákazníka za poslední měsíc, poslední hodina, o kterou je databáze zpožděna, nám vůbec nevadí.
Databázové systémy II - př.10Databázové systémy II - př.10 55
Aktualizace dat v záložní databázi
Synchronní aktualizace dat - proces, který zapisuje data do produkční databáze, ve stejném
čase zapíše také data do záložní databáze
Asynchronní aktualizace dat - data se do záložní databáze zapíší s určitým zpožděním.
Asynchronní aktualizace může být výhodná v tom případě, pokud selžou nějaké operace. Tento systém může ošetřit chyby od samotného uživatele.
Databázové systémy II - př.10Databázové systémy II - př.10 66
Způsoby zálohováníKompletní zálohování - zálohují se všechna data a databázové struktury, které
databáze obsahuje. Zálohovat můžeme na pevný disk, optický disk, pásku či síťový disk.
- Obnova je jednoduchá (při dostatečně aktuální záloze)- Nevýhodou je zálohování velkého objemu dat, proto se tento
způsob zálohování používá obvykle v delších časových intervalech
Databázové systémy II - př.10Databázové systémy II - př.10 77
Způsoby zálohováníRozdílové/přírůstkové zálohování- ukládají se jen ty datové stránky, které byly změněny od
poslední kompletní zálohy- Při obnově nejprve využijeme kompletní zálohu a potom
aktualizujeme data na základě přírůstkových (rozdílových) záloh
- Výhodou je menší objem dat a proto se používá k kratších časových intervalech
Databázové systémy II - př.10Databázové systémy II - př.10 88
Způsoby zálohováníZáloha transakčního žurnálu (protokolu)- Zálohován jen transakční žurnál, to znamená transakce
provedené od poslední kompletní zálohy
Databázové systémy II - př.10Databázové systémy II - př.10 99
Offline zálohováníKonzistentní offline zálohování se provádí, když byla databáze zastavena
normálním způsobem.Je možné provést zálohování:- Datových souborů- Řídících souborů- Online souborů protokolu- Souboru init.ora nebo souboru s parametry serveru (spfile)
Zálohování všech těchto souborů poskytne kompletní obraz databáze v okamžiku jejího zastavení.
Není korektní provádět zálohu databázových souborů při spuštěné a otevřené databázi kromě online zálohování (databáze běží v režimu ARCHIEVELOG).
Databázové systémy II - př.10Databázové systémy II - př.10 1010
Online transakční žurnálVšechny změny provedené v databázi se ukládají do
transakčního žurnálu. Transakčních žurnálů je obvykle více, například 3, při zaplnění
prvního se přejde na druhý, potom na třetí a tento proces se neustále cyklicky opakuje.
Pomocí transakčních žurnálů je možné zrekonstruovat databázi do stavu odpovídajícího určitému okamžiku.
Děje se tak automaticky na pozadí nebo na pokyn uživatele.
Databázové systémy II - př.10Databázové systémy II - př.10 1111
Soubory protokolu (redo log)
Databázové systémy II - př.10Databázové systémy II - př.10 1212
Online transakční žurnálK dispozici jsou 2 režimy:- ARCHIVELOG – všechny změny databáze jsou trvale uloženy v
archivovaném transakčním žurnálu, tento režim umožňuje zotavení nejen po selhání instance databázového serveru, ale také po selhání diskového media – tedy při poškození datových souborů
- NOARCHIVELOG – pouze zotavení při selhání instance, zotavení bude provedené jen z aktivního transakčního žurnálu
- Stav zjistíme dotazem ARCHIVE LOG LIST;- Start archivace ARCHIVE LOG START;
Databázové systémy II - př.10Databázové systémy II - př.10 1313
Zastavení běhu instanceAby se mohl režim změnit, je třeba instanci restartovat (to není pro
databázový server a jeho administrátora obvykle moc žádoucí, ale v tomto případě nevyhnutelné).
Proces zastavení může proběhnout ve 4 režimech- Normal – se zastavením se čeká na odpojení všech aktuálně připojených
uživatelů- Immediate – v tomto režimu jsou před zastavením odvolány všechny
aktivní transakce a následně odpojeni všichni uživatelé- Abort – v tomto režimu bude zastavení provedeno okamžitě a
„bezohledně“- Transactional – všichni aktivní uživatelé budou odpojeni po ukončení
svých transakcí a až poté dojde k zastavení
Samotný průběh restartu může trvat dlouhou dobu.
Databázové systémy II - př.10Databázové systémy II - př.10 1414
Online transakční žurnálObnova dat z transakčního žurnálu se může provést například
příkazemRECOVER DATABASE UNTIL TIME ‘2007-04-27 5:00’
Databázové systémy II - př.10Databázové systémy II - př.10 1515
Plánování pravidelného zálohování
Můžeme využít některou z předdefinovaných strategií nebo vytvořit vlastní strategii zálohování.
Předdefinované strategie obsahují:- Přírůstková záloha 1x týdně (vhodná pro nepříliš
aktualizované databáze)- Kompletní záloha každý den (vhodná pro transakční nepříliš
velké databáze)- Kompletní záloha 1x týdně (vhodná pro velké a často
aktualizované databáze)
Dále můžeme vybrat den v týdnu a hodinu. Vytvořená úloha bude v seznamu aktivních úloh.
Databázové systémy II - př.10Databázové systémy II - př.10 1616
Import a export datImport a export dat používáme zejména pro výměnu dat s jinými aplikacemi.
Mezi často používané formáty patří:1. SQL - textové soubory s jednotlivými SQL příkazy (skripty)2. Textové soubory, např.
- s oddělovači sloupců a řádků (např. CSV Comma-separated values)- s pevnou šířkou sloupců
3. XML soubory4. Soubory tabulkových procesorů (např. Excel – XLS)
Databázové systémy II - př.10Databázové systémy II - př.10 1717
Import a export datSQL developer nabízí export dat do souborů
Databázové systémy II - př.10Databázové systémy II - př.10 1818
Export dat z SQL Developeru
Můžeme exportovat:• data z tabulky,• výsledky dotazu nebo• výstup reportu
buď • do souboru nebo• do schránky Windows.
Při exportu je možné definovat
• omezující podmínky či• vybrat sloupce
Databázové systémy II - př.10Databázové systémy II - př.10 1919
Export dat z SQL DeveloperuFormát INSERT (SQL), tabulka Trpaslici
-- INSERTING into TRPASLICIInsert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values
(1,'Stistko',110,1980);Insert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values (2,'Kychal',115,1983);Insert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values (3,'Profa',120,1999);Insert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values (4,'Rypal',112,2001);Insert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values
(5,'Brucoun',109,1976);Insert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values
(6,'Stydlin',117,1984);Insert into TRPASLICI (ID,JMENO,VYSKA,NAROZEN) values
(7,'Smudla',108,1993);
Databázové systémy II - př.10Databázové systémy II - př.10 2020
Export dat z SQL DeveloperuFormát TEXT, tabulka Trpaslici
"ID" "JMENO" "VYSKA" "NAROZEN""1" "Stistko" "110" "1980""2" "Kychal" "115" "1983""3" "Profa" "120" "1999""4" "Rypal" "112" "2001""5" "Brucoun„ "109" "1976""6" "Stydlin" "117" "1984""7" "Smudla" "108" "1993"
Databázové systémy II - př.10Databázové systémy II - př.10 2121
Export dat z SQL DeveloperuFormát CSV, tabulka Trpaslici
"ID","JMENO","VYSKA","NAROZEN""1","Stistko","110","1980""2","Kychal","115","1983""3","Profa","120","1999""4","Rypal","112","2001""5","Brucoun","109","1976""6","Stydlin","117","1984""7","Smudla","108","1993"
Databázové systémy II - př.10Databázové systémy II - př.10 2222
Export dat z SQL DeveloperuFormát XML, tabulka Trpaslici
<?xml version='1.0' encoding='null' ?><results>
<row><ID><![CDATA[1]]></ID><JMENO><![CDATA[Stistko]]></JMENO><VYSKA><![CDATA[110]]></VYSKA><NAROZEN><![CDATA[1980]]></NAROZEN>
</row><row>
<ID><![CDATA[2]]></ID><JMENO><![CDATA[Kychal]]></JMENO><VYSKA><![CDATA[115]]></VYSKA><NAROZEN><![CDATA[1983]]></NAROZEN>
</row></results> Databázové systémy II - př.10Databázové systémy II - př.10 2323
Export dat z SQL DeveloperuFormát XLS, tabulka Trpaslici
Databázové systémy II - př.10Databázové systémy II - př.10 2424
Export dat z SQL DeveloperuFormát LOADER, tabulka Trpaslici
LOAD DATAINFILE *TruncateINTO TABLE "TRPASLICI"FIELDS TERMINATED BY ','TRAILING NULLCOLS(ID, JMENO, VYSKA, NAROZEN)begindata"1","Stistko","110","1980""2","Kychal","115","1983""3","Profa","120","1999""4","Rypal","112","2001""5","Brucoun","109","1976""6","Stydlin","117","1984""7","Smudla","108","1993"Databázové systémy II - př.10Databázové systémy II - př.10 2525
Export dat z SQL DeveloperuFormát HTML, tabulka Trpaslici
<html><body><table>
<th>ID</th><th>JMENO</th><th>VYSKA</th><th>NAROZEN</th><tr>
<td>1</td><td>Stistko</td><td>110</td><td>1980</td>
</tr><tr>
<td>2</td><td>Kychal</td><td>115</td><td>1983</td>
</tr></table></body></html>
Databázové systémy II - př.10Databázové systémy II - př.10 2626
Import a export DDLSQL Developer nabízí export SQL příkazů pro vytváření databázových
objektů, v rámci jednoho typu objektů je možné označit více objektů (tabulek, procedur, …) a uložit DDL příkazy, které se vztahují k vytváření těchto objektů.
Databázové systémy II - př.10Databázové systémy II - př.10 2727
Kompletní export schématuv SQL Developeru
Volba Tools – Export DDL (and Data)Umožňuje uložit DDL příkazy všech (nebo vybraných)
databázových objektů v rámci schématu včetně uložených dat (pokud nebude nastaveno filtrování)
Výsledný soubor je typu sql (text s SQL příkazy).
Databázové systémy II - př.10Databázové systémy II - př.10 2828
Export a import dat v Oracle XE
Databázové systémy II - př.10Databázové systémy II - př.10 2929
Export a import dat v Oracle XE
Databázové systémy II - př.10Databázové systémy II - př.10 3030
Import dat v Oracle XE
Databázové systémy II - př.10Databázové systémy II - př.10 3131
Import dat v Oracle XE
Databázové systémy II - př.10Databázové systémy II - př.10 3232
Migrace v SQL Developeru
Migrace je proces převodu dat • z jiné platformy (SQL Developer nabízí kromě Oracle např. MySQL, MS SQL
server či Access), využívá se tool Oracle Migration Workbench
Migrace se může skládat• pouze z DDL příkazů• vlastních dat v tabulkách, …
Migrace může být• Online (provede se právě teď)• Offline (prostřednictvím zálohy objektů a dat do souboru)
Databázové systémy II - př.10Databázové systémy II - př.10 3333
Kopírování objektů mezi schématy či databázemi Oracle v SQL Developeru
Příklad migrace dat - ze schématu trpaslik na serveru asuei01.upceucebny.cz- do schématu pokus na notebooku (localhost)
Tj. export vybraných tabulek a spuštění skriptu na localhostu, viz praktická ukázka.
Ukázka nástroje Schema Diff (hledá odlišnosti v DDL).
Databázové systémy II - př.10Databázové systémy II - př.10 3434
Export dat – klasické formyPřed prvním exportem nebo importem je nutné spustit skript CATALOG.SQLPro tento krok je nutné přihlásit se jako uživatel SYS.Pro export je možné spustit utilitu exp z příkazové řádky operačního systému.
Další možností je využitím Enterprise Manager Console nebo WWW EM stránek.
Exportovat je možné- Databázi- Schéma daného uživatele- Vybrané tabulky a na ně navázané struktury
Pro export je nezbytné mít práva (pověření pro příslušný uzel).
Databázové systémy II - př.10Databázové systémy II - př.10 3535
Export datExport může být- Jednorázový (nyní)- Jednorázový (odložený - plánovaný)- Opakovaný
Databázové systémy II - př.10Databázové systémy II - př.10 3636
Export dat do flat-souborůFlat soubor - prostý textový soubor, kde data mohou (ale nemusí) být oddělena
nějakým oddělovačem (čárka, mezera, tabulátor, …).
Například data načítaná do datových skladů pochází často z různých – nehomogenních zdrojů, například ze souborových či desktopových databází (MS Access, dBase) nebo data z databází libovolného databázového serveru (firem Oracle, IBM, Microsoft, Sybase, Interbase, Ingres, …)
Prosté soubory jsou tedy častým prostředkem pro přenos dat mezi těmito systémy, terminologicky často označované jako:
ETT (Extraction, Transformation & Transport) neboETL (Extraction, Transformation & Loading)
Databázové systémy II - př.10Databázové systémy II - př.10 3737
Export dat do flat-souborůPro správný zápis je třeba
SET heading offSET feedback offSET echo offSET pagesize 0SPOOL C:\pokus.datSELECT id || ‘,’ || ‘”’||jmeno||‘”’ FROM trpaslici;SPOOL off
Takto uložené soubory jsou snadno stravitelné prakticky libovolnou databázovou platformou.
Databázové systémy II - př.10Databázové systémy II - př.10 3838
Import dat z flat-souborůPro import dat z externích datových zdrojů se používá utilita
SQL*Loader.Spouští se z operačního systému příkazem sqlldr
Je možné, aby řídící soubor obsahoval jak parametry importu, tak samotná data:
LOAD FILE INFILE *INTO TABLE trpasliciFIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”’(id, jmeno)BEGINDATA1, „Smudla“2, …
Databázové systémy II - př.10Databázové systémy II - př.10 3939
Import dat z flat-souborůPoznámky:1) tabulka, do níž importujeme, musí být předem vytvořena2) Příklad volání utility
Sqlldr USERID=scott/tiger CONTROL=c:\filename.ctlLOG=c:\filename.log
Databázové systémy II - př.10Databázové systémy II - př.10 4040
Externí tabulky
Umožňují použít příkaz SELECT na soubory s datya) oddělenými čárkami,b) poziční soubory s pevnou šířkou
Nelze upravovat, je jen možné se na ně dotazovat.Nemohou být indexovány, neboť pro řádky neexistují žádné hodnoty
ROWID.Vhodné pro načítání a slučování dat – tedy nikoli jako náhrada
tabulek.
Databázové systémy II - př.10Databázové systémy II - př.10 4141
Externí tabulky
Závisí na nastavení objektu DIRECTORY databáze Oracle
CREATE OR REPLACE DIRECTORY ext_dir as ‘/tmp/’;
A práv uživatele k tomuto adresáři
GRANT read, write on directory ext_dir to username;
Soubory musí být na databázovém serveru, vlastní databázové procesy musí být schopny soubor zjistit, otevřít a přečíst. To lze řešit i připojením/mapováním disků.
Databázové systémy II - př.10Databázové systémy II - př.10 4242
Externí tabulky s oddělovačem
Vytvoření tabulky
create table ext_table_csv ( i Number, n Varchar2(20), m Varchar2(20)) organization external ( type oracle_loader default directory ext_dir access parameters ( records delimited by newline fields terminated by ',' missing field values are null) location ('file.csv') )
reject limit unlimited;
Databázové systémy II - př.10Databázové systémy II - př.10 4343
Externí tabulky s pevnou šířkou sloupců
Vytvoření tabulky
create table ext_table_fixed ( field_1 char(4), field_2 char(30)) organization external ( type oracle_loader default directory ext_dir access parameters ( records delimited by newline fields ( field_1 position(1: 4) char( 4), field_2 position(5:30) char(30))) location ('file')
)reject limit unlimited;
Databázové systémy II - př.10Databázové systémy II - př.10 4444
Oracle a XMLSoučasné IT prostředí je heterogenní, stále více se prosazuje XML jako
univerzální formát pro výměnu dat, proto je i Oraclem masivně podporován.
Oracle sází na kombinaci SQL + XML + Java
Oracle umožňuje:- vygenerovat výstup z dtb. tabulky či dotazu do XML- definovat datový typ XML- provádět XML operace nad daty v relačních databázích- provádět SQL operace nad daty v XML dokumentech
Databázové systémy II - př.10Databázové systémy II - př.10 4545
XML repositářXML dokumenty jsou uloženy v XML repositářích, které umožňují
přístup k těmto dokumentům prostřednictvím protokolů HTTP, FPT a WebDAV (standard umožňující číst a měnit datové elementy databáze podobně jako složky a soubory souborového systému)
Součástí repositáře je i správa přístupových oprávnění, správa složek, SQL vyhledávání v XML repositáři, API pro práci s XML repositářem a manipulace s objekty pomocí Java servletu.
Databázové systémy II - př.10Databázové systémy II - př.10 4646
Výpis tabulky ve formátu XML
FunkceSYS_XMLGEN – vygeneruje několik XML dokumentů dle počtu řádků ve
výsledku dotazuSYS_XMLAGG – vygeneruje jediný dokument
Příklad:select SYS_XMLGEN(JMENO) from TRPASLICI;
<?xml version="1.0"?><JMENO>Stistko</JMENO>
Databázové systémy II - př.10Databázové systémy II - př.10 4747
Výpis tabulky ve formátu XML
FunkceXMLelement – výpis pomocí elemetů
XMLatributes – výpis jednotlivých atributůXMLforest – výpis atributů pomocí samostatných elementů
Příklady:select xmlelement("trpaslik",xmlattributes(jmeno, narozen as "rok"))
from TRPASLICI;
<trpaslik JMENO="Stistko" rok="1980"></trpaslik>
select xmlelement("trpaslik",xmlforest (jmeno, narozen as "rok")) from TRPASLICI;
<trpaslik><JMENO>Stistko</JMENO><rok>1980</rok></trpaslik>Databázové systémy II - př.10Databázové systémy II - př.10 4848
Datový typ SYS.XMLTypePříklad
CREATE TABLE XML_table(zaznam SYS.XMLType);
Pomocí funkce SYS.XMLType.createxml(řetězec) můžeme konvertovat textový řetězec na typ SYS.XMLType
Příklad použití
INSERT INTO XML_table VALUES (SYS.XMLType.createxml(řetězec obsahující XML dokument));
Databázové systémy II - př.10Databázové systémy II - př.10 4949
Technologie XQueryJazyk XQuery je nově přijatý standard standardizační organizací W3C.
Jazyk XQuery používá množinu příkazů FLOWR (akronym složený z hlavních příkazů FOR, LET, WHERE, ORDER BY, RETURN)
FOR – umožňuje iteraci přes sourozenecké uzly (analogie FROM v SQL)LET – znamená přiřazeníWHERE – filtrovací kritériumORDER BY – řazeníRETURN - určuje návratový dokument formátovaný dle našich požadavků
Technologie XQuery může být použita jak nad XML dokumenty, tak i pro relační tabulky. Tato technologie je také vhodná i pro vytváření XML dokumentů v repositáři.
Databázové systémy II - př.10Databázové systémy II - př.10 5050
Balíček DBMS_XMLGENPříklad použití v SQL dotazu: SELECT DBMS_XMLGEN.getXML('SELECT * FROM emp') FROM dual;
Výsledek dotazu:<?xml version="1.0"?><ROWSET> <ROW> <EMPNO>7369</EMPNO> <ENAME>SMITH</ENAME> <JOB>CLERK</JOB> <MGR>7902</MGR> <HIREDATE>17-DEC-1980 00:00:00</HIREDATE> <SAL>800</SAL> <DEPTNO>20</DEPTNO> </ROW>...</ROWSET>
Databázové systémy II - př.10Databázové systémy II - př.10 5151
Balíček DBMS_XMLGENPříklad použití v kodu PL/SQL:
DECLARE ctx DBMS_XMLGEN.ctxHandle; xml CLOB;BEGIN ctx := dbms_xmlgen.newcontext('select * from emp'); dbms_xmlgen.setrowtag(ctx, 'MY-ROW-START-HERE'); xml := dbms_xmlgen.getxml(ctx); dbms_output.put_line(substr(xml,1,255));END;/
Databázové systémy II - př.10Databázové systémy II - př.10 5252
Otázky
Děkuji za pozornost.
Databázové systémy II - př.10Databázové systémy II - př.10 5353