53
Databázové systémy II Přednáška č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky [email protected]

Databázové systémy II

  • 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

Page 1: Databázové systémy II

Databázové systémy II

Přednáška č. 10

RNDr. David Žák, Ph.D.Fakulta elektrotechniky a informatiky

[email protected]

Page 2: Databázové systémy II

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

Page 3: Databázové systémy II

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

Page 4: Databázové systémy II

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

Page 5: Databázové systémy II

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

Page 6: Databázové systémy II

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

Page 7: Databázové systémy II

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

Page 8: Databázové systémy II

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

Page 9: Databázové systémy II

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

Page 10: Databázové systémy II

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

Page 11: Databázové systémy II

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

Page 12: Databázové systémy II

Soubory protokolu (redo log)

Databázové systémy II - př.10Databázové systémy II - př.10 1212

Page 13: Databázové systémy II

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

Page 14: Databázové systémy II

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

Page 15: Databázové systémy II

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

Page 16: Databázové systémy II

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

Page 17: Databázové systémy II

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

Page 18: Databázové systémy II

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

Page 19: Databázové systémy II

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

Page 20: Databázové systémy II

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

Page 21: Databázové systémy II

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

Page 22: Databázové systémy II

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

Page 23: Databázové systémy II

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

Page 24: Databázové systémy II

Export dat z SQL DeveloperuFormát XLS, tabulka Trpaslici

Databázové systémy II - př.10Databázové systémy II - př.10 2424

Page 25: Databázové systémy II

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

Page 26: Databázové systémy II

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

Page 27: Databázové systémy II

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

Page 28: Databázové systémy II

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

Page 29: Databázové systémy II

Export a import dat v Oracle XE

Databázové systémy II - př.10Databázové systémy II - př.10 2929

Page 30: Databázové systémy II

Export a import dat v Oracle XE

Databázové systémy II - př.10Databázové systémy II - př.10 3030

Page 31: Databázové systémy II

Import dat v Oracle XE

Databázové systémy II - př.10Databázové systémy II - př.10 3131

Page 32: Databázové systémy II

Import dat v Oracle XE

Databázové systémy II - př.10Databázové systémy II - př.10 3232

Page 33: Databázové systémy II

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

Page 34: Databázové systémy II

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

Page 35: Databázové systémy II

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

Page 36: Databázové systémy II

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

Page 37: Databázové systémy II

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

Page 38: Databázové systémy II

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

Page 39: Databázové systémy II

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

Page 40: Databázové systémy II

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

Page 41: Databázové systémy II

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

Page 42: Databázové systémy II

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

Page 43: Databázové systémy II

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

Page 44: Databázové systémy II

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

Page 45: Databázové systémy II

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

Page 46: Databázové systémy II

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

Page 47: Databázové systémy II

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

Page 48: Databázové systémy II

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

Page 49: Databázové systémy II

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

Page 50: Databázové systémy II

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

Page 51: Databázové systémy II

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

Page 52: Databázové systémy II

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

Page 53: Databázové systémy II

Otázky

Děkuji za pozornost.

Databázové systémy II - př.10Databázové systémy II - př.10 5353