SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Replikace    Konflikty   Materialized view



                              Základní replikace       Multimaster
                                                       replikace




REPLIKACE
NDBI013

Jan Drozen
www.ms.mff.cuni.cz/~drozenj
Lokální data


               T




                   SELECT * FROM T
Distribuovaná data

            SELECT * FROM T       T




       SELECT * FROM T
                              SELECT * FROM T

                                                SELECT * FROM T
Distribuovaná data - problém

            SELECT * FROM T    T




       SELECT * FROM T
                              SELECT * FROM T

                                                SELECT * FROM T
Replikace

                             T


                         T
                                 T




       SELECT * FROM T


                                     SELECT * FROM T
Replikace
• replikace je technika zajišťování dostupnosti dat v distribuovaných
  databázových systémech.
• data jsou fyzicky uložena v systému ve více kopiích (replikách) na
  více místech (uzlech)
• k distribuovaným datům můžeme přistupovat lokálně
• při zachování určité míry konzistence
Replikační objekty
• co všechno můžeme replikovat:
 ▫   tabulky
 ▫   indexy
 ▫   pohledy
 ▫   balíky
 ▫   procedury, funkce
 ▫   typy
 ▫   triggery
 ▫   synonyma
 ▫   operátory
Jak replikovat
• nereplikovat
  ▫ triviální
• export import
  ▫ utiltity, CREATE TABLE AS SELECT
  ▫ bez dalších datových přenosů
  ▫ jednou a dost
• Oracle Dataguard
  ▫ neflexibilní
• zařídit replikaci sami
  ▫ procedurálně pomocí triggerů (PL/SQL)
  ▫ složité pro obecné situace
Database link
• potřebujeme komunikovat se vzdálenou databází
• spojení pomocí database linku
 ▫ jako client-server
• CREATE [PUBLIC] DATABASE LINK name
  CONNECT TO user IDENTIFIED BY pass
  USING ‘database‘
• tnsnames.ora
 ▫ $ORACLE_HOME/network/ADMIN
Typy replikací
• základní
 ▫ basic replication
 ▫ jen pro čtení
 ▫ data proudí jedním směrem

• pokročilá
 ▫ advanced replication
 ▫ přenos oběma směry
 ▫ Enterprise
Materializovaný pohled
• materialized view
• pohled ~ pohled na data ~ předkompilovaný optimalizovaný SQL
  dotaz
• materializovaný pohled ~ pohled, který fyzicky obsahuje data
• dříve snapshot

• CREATE MATERIALIZED VIEW pohled AS SELECT …
Základní replikace
• můžeme replikovat jenom tabulky
  ▫ a to jako materializované pohledy
  ▫ read only materialized view
• slovník:
  ▫ zdrojová tabulka: target master table
  ▫ patří do databáze master definition site
  ▫ read-only mviews jsou v destination site
• replikované mviews musí mít identifikovatelné řádky
  ▫ primární klíč
  ▫ ROWID
Výhody replikovaných mviews
•   nižší nároky na přenos dat
•   lepší výkon (lokální data)
•   data subsetting
•   konzistence
Materialized view log
• proč?
  ▫ chceme mít v mview aktuální data
• zaznamenávají změny v datech, které jsou zajímavé pro mview
  ▫ na úrovni řádků
• přísluší master site

• CREATE MATERIALIZED VIEW LOG ON tabulka TABLESPACE ts
Aktualizace mview
• 3 metody:
 ▫ FAST
    aktualizuje na úrovni řádků
    potřebuje MV log
 ▫ COMPLETE
    MV se kompletně vymaže znovu naplní
 ▫ FORCE
    pokud to jde, provede se FAST, jinak COMPLETE

• CREATE MATERIALIZED VIEW mv
  REFRESH FAST NEXT sysdate + 1 AS
  …
Refresh group
• uvažme příklad:
  ▫ v master site máme tabulky zaměstnanec a plat, které replikujeme do
    destination site
  ▫ MV se aktualizují každé 3 minuty
  ▫ v destination site chce někdo přiřadit platy zaměstnancům (JOIN)
     není zaručeno, že se to povede (resp. může vzniknout zaměstnanec bez platu)
     protože zaměstnanci můžou být aktuální a platy budou aktuální až za 2 minuty
     to protože IO cizího klíče je jen v master site
• řešením jsou refresh groups
  ▫ pohledy v jedné skupině se aktualizují najednou
Příklad
dbadmin@semora                                          remoteUser@semora      client@everywhere
CREATE TABLE remoteTable (id INT PRIMARY KEY,zprava
VARCHAR2(255));
CREATE USER remoteUser IDENTIFIED BY remoteUser;

GRANT CREATE SESSION TO remoteUser;

GRANT CREATE SYNONYM TO remoteUser;

GRANT SELECT ON remoteTable TO remoteUser;

                                                        CREATE SYNONYM
                                                        remoteTable FOR
                                                        dbadmin.remoteTable;

                                                                               CREATE PUBLIC DATABASE LINK semoraLink CONNECT TO
                                                                               remoteUser IDENTIFIED BY remoteUser USING 'semora';
                                                                               CREATE MATERIALIZED VIEW selectFromRemote AS SELECT * FROM
                                                                               remoteTable@semoraLink
INSERT INTO remoteTable VALUES (1,'Hello, this is the
remote table');

COMMIT;
Pokročilá replikace
• podporuje
 ▫   aktualizovatelné (updatable) MV
 ▫   zapisovatelné (writeable) MV
 ▫   multi-master replikaci
 ▫   procedurální replikaci
Replikační skupiny
• pokud máme replikovaných objektů více než málo, je obtížné je
  individuálně spravovat
• používají se replikační skupiny (replication groups)
 ▫ sdružujeme objekty, které spolu logicky souvisí
• každý objekt patří do nejvýše jedné replikační skupiny
• objekty z replikační skupiny mohou patřit do různých schémat
Updatable materialized views
• jedna master tabulka podporuje neomezeně UMV
• protože je ! master tabulka, všechny konflikty se řeší v jednom
  bodě systému
• nejsou tolik náročné na zdroje
• dají se použít společně s multimaster replikací

• CREATE MATERIALIZED VIEW view FOR UPDATE …
• a navíc přiřazením do replikační skupiny a registrací replikačního
  objektu do katalogu
Updatable materialized views
Writeable materialized view
•   jsou to MV, do kterých je možné zapisovat (DML)
•   ale změny se nepropagují směrem ven
•   po refreshi se data ztratí
•   vytváří se stejně jako updatable MV, ale nepřiřazují se do replikační
    skupiny
Replikační katalog
• každý prvek zapojený do replikace má svůj replikační katalog
• sada pohledů a slovníků s informacemi o replikačních objektech a
  skupinách
• používá se při provádění replikace
• procedury pro správu
 ▫ DBMS_REPCAT.CREATE_MASTER_REPGROUP
    vytváří novou master group
Multimaster replikace
•   peer-to-peer
•   replikují se vždy všechna data
•   více master-site v systému, které komunikují mezi sebou
•   informace se aktualizují hned po dokončení transakce
    ▫ pokud je to možné
Multimaster replikace
• implementována procedurálně na úrovni triggerů
 ▫ generují se
 ▫ nepoužívají se MV
• umožňuje zároveň z dvou míst přistupovat (měnit) jeden záznam
 ▫ může dojít ke konfliktům
    řeší se podle definovaných pravidel
Multimaster komunikace
• manipulace s daty neprobíhá
  přímo
• akce se vloží do fronty               Local DB                     Remtoe DB
  odložených transakcí (deferred
  transaction queue)                    Deferred                       Deferred
• odtud se šíří po replikační         transaction                    transaction
  skupině                                queue             DB link      queue
• pokud dojde k chybě (např. ztráta
  připojení), transakce se přesune
  do fronty chybových transakcí           Table                          Table
  (deferred error queue)                    A                              A
• replikace je pozastavena, dokud
  chyba není opravena                         INSERT INTO A…
Hybridní systémy
• typicky se používá
  kombinace multi-master a
  single-master replikací
Konflikty
• u asynchronní multimaster replikace může dojít ke konfliktům (kolizím)
  ▫ můžeme zvolit i synchronní zpracování
• řeší se podle pravidel
  ▫ buď implicitní
  ▫ nebo uživatelsky definovaná
• např.
  ▫   latest timestamp value
  ▫   earliest timestamp value
  ▫   min/max value
  ▫   …
Reference
• Oracle documentation
• Jiří Vytasil; Conicov Andrej – Replikace
• John Garmany, Robert Freeman - Oracle Replication
  RAMPANT TECHPRESS, 2003
• orafaq.com
KONEC
Děkuji za pozornost.

Mais conteúdo relacionado

Semelhante a Replikace Oracle

.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL ServeruJan Drozen
 
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)Martin Hujer
 
INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace Jan Hřídel
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
Škálování, optimalizaci a zálohování databáze MySQL
Škálování, optimalizaci a zálohování databáze MySQLŠkálování, optimalizaci a zálohování databáze MySQL
Škálování, optimalizaci a zálohování databáze MySQLJakub Vrána
 
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesČtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesCtvrtkoncz
 
Novinky Oracle db 12c
Novinky Oracle db 12cNovinky Oracle db 12c
Novinky Oracle db 12cTomas Solar
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuRené Stein
 
SUTOL konference 2018 - Domino admin tipy (czech language)
SUTOL konference 2018 - Domino admin tipy (czech language)SUTOL konference 2018 - Domino admin tipy (czech language)
SUTOL konference 2018 - Domino admin tipy (czech language)Martin Hansgut
 
Hledání úspor v provozu internetové jedničky
Hledání úspor v provozu internetové jedničkyHledání úspor v provozu internetové jedničky
Hledání úspor v provozu internetové jedničkyseznamVyvojari
 
Czech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise SystemCzech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise SystemMartin Cerveny
 
Javascript na steroidech
Javascript na steroidechJavascript na steroidech
Javascript na steroidechseznamVyvojari
 
Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)Tomáš Slavíček
 

Semelhante a Replikace Oracle (18)

.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL Serveru
 
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
 
Možnosti databázové komprese
Možnosti databázové kompreseMožnosti databázové komprese
Možnosti databázové komprese
 
INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Škálování, optimalizaci a zálohování databáze MySQL
Škálování, optimalizaci a zálohování databáze MySQLŠkálování, optimalizaci a zálohování databáze MySQL
Škálování, optimalizaci a zálohování databáze MySQL
 
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesČtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
 
ES6 generátory
ES6 generátoryES6 generátory
ES6 generátory
 
Novinky Oracle db 12c
Novinky Oracle db 12cNovinky Oracle db 12c
Novinky Oracle db 12c
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net Frameworku
 
SUTOL konference 2018 - Domino admin tipy (czech language)
SUTOL konference 2018 - Domino admin tipy (czech language)SUTOL konference 2018 - Domino admin tipy (czech language)
SUTOL konference 2018 - Domino admin tipy (czech language)
 
Hledání úspor v provozu internetové jedničky
Hledání úspor v provozu internetové jedničkyHledání úspor v provozu internetové jedničky
Hledání úspor v provozu internetové jedničky
 
Czech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise SystemCzech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise System
 
Javascript na steroidech
Javascript na steroidechJavascript na steroidech
Javascript na steroidech
 
Kafka
KafkaKafka
Kafka
 
Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)
 
Infrastruktura památníku českého webu a zkušenosti s Heritrixem
Infrastruktura památníku českého webu a zkušenosti s HeritrixemInfrastruktura památníku českého webu a zkušenosti s Heritrixem
Infrastruktura památníku českého webu a zkušenosti s Heritrixem
 
Úvod do rails
Úvod do railsÚvod do rails
Úvod do rails
 

Replikace Oracle

  • 1. Replikace Konflikty Materialized view Základní replikace Multimaster replikace REPLIKACE NDBI013 Jan Drozen www.ms.mff.cuni.cz/~drozenj
  • 2. Lokální data T SELECT * FROM T
  • 3. Distribuovaná data SELECT * FROM T T SELECT * FROM T SELECT * FROM T SELECT * FROM T
  • 4. Distribuovaná data - problém SELECT * FROM T T SELECT * FROM T SELECT * FROM T SELECT * FROM T
  • 5. Replikace T T T SELECT * FROM T SELECT * FROM T
  • 6. Replikace • replikace je technika zajišťování dostupnosti dat v distribuovaných databázových systémech. • data jsou fyzicky uložena v systému ve více kopiích (replikách) na více místech (uzlech) • k distribuovaným datům můžeme přistupovat lokálně • při zachování určité míry konzistence
  • 7. Replikační objekty • co všechno můžeme replikovat: ▫ tabulky ▫ indexy ▫ pohledy ▫ balíky ▫ procedury, funkce ▫ typy ▫ triggery ▫ synonyma ▫ operátory
  • 8. Jak replikovat • nereplikovat ▫ triviální • export import ▫ utiltity, CREATE TABLE AS SELECT ▫ bez dalších datových přenosů ▫ jednou a dost • Oracle Dataguard ▫ neflexibilní • zařídit replikaci sami ▫ procedurálně pomocí triggerů (PL/SQL) ▫ složité pro obecné situace
  • 9. Database link • potřebujeme komunikovat se vzdálenou databází • spojení pomocí database linku ▫ jako client-server • CREATE [PUBLIC] DATABASE LINK name CONNECT TO user IDENTIFIED BY pass USING ‘database‘ • tnsnames.ora ▫ $ORACLE_HOME/network/ADMIN
  • 10. Typy replikací • základní ▫ basic replication ▫ jen pro čtení ▫ data proudí jedním směrem • pokročilá ▫ advanced replication ▫ přenos oběma směry ▫ Enterprise
  • 11. Materializovaný pohled • materialized view • pohled ~ pohled na data ~ předkompilovaný optimalizovaný SQL dotaz • materializovaný pohled ~ pohled, který fyzicky obsahuje data • dříve snapshot • CREATE MATERIALIZED VIEW pohled AS SELECT …
  • 12. Základní replikace • můžeme replikovat jenom tabulky ▫ a to jako materializované pohledy ▫ read only materialized view • slovník: ▫ zdrojová tabulka: target master table ▫ patří do databáze master definition site ▫ read-only mviews jsou v destination site • replikované mviews musí mít identifikovatelné řádky ▫ primární klíč ▫ ROWID
  • 13. Výhody replikovaných mviews • nižší nároky na přenos dat • lepší výkon (lokální data) • data subsetting • konzistence
  • 14. Materialized view log • proč? ▫ chceme mít v mview aktuální data • zaznamenávají změny v datech, které jsou zajímavé pro mview ▫ na úrovni řádků • přísluší master site • CREATE MATERIALIZED VIEW LOG ON tabulka TABLESPACE ts
  • 15. Aktualizace mview • 3 metody: ▫ FAST  aktualizuje na úrovni řádků  potřebuje MV log ▫ COMPLETE  MV se kompletně vymaže znovu naplní ▫ FORCE  pokud to jde, provede se FAST, jinak COMPLETE • CREATE MATERIALIZED VIEW mv REFRESH FAST NEXT sysdate + 1 AS …
  • 16. Refresh group • uvažme příklad: ▫ v master site máme tabulky zaměstnanec a plat, které replikujeme do destination site ▫ MV se aktualizují každé 3 minuty ▫ v destination site chce někdo přiřadit platy zaměstnancům (JOIN)  není zaručeno, že se to povede (resp. může vzniknout zaměstnanec bez platu)  protože zaměstnanci můžou být aktuální a platy budou aktuální až za 2 minuty  to protože IO cizího klíče je jen v master site • řešením jsou refresh groups ▫ pohledy v jedné skupině se aktualizují najednou
  • 17. Příklad dbadmin@semora remoteUser@semora client@everywhere CREATE TABLE remoteTable (id INT PRIMARY KEY,zprava VARCHAR2(255)); CREATE USER remoteUser IDENTIFIED BY remoteUser; GRANT CREATE SESSION TO remoteUser; GRANT CREATE SYNONYM TO remoteUser; GRANT SELECT ON remoteTable TO remoteUser; CREATE SYNONYM remoteTable FOR dbadmin.remoteTable; CREATE PUBLIC DATABASE LINK semoraLink CONNECT TO remoteUser IDENTIFIED BY remoteUser USING 'semora'; CREATE MATERIALIZED VIEW selectFromRemote AS SELECT * FROM remoteTable@semoraLink INSERT INTO remoteTable VALUES (1,'Hello, this is the remote table'); COMMIT;
  • 18. Pokročilá replikace • podporuje ▫ aktualizovatelné (updatable) MV ▫ zapisovatelné (writeable) MV ▫ multi-master replikaci ▫ procedurální replikaci
  • 19. Replikační skupiny • pokud máme replikovaných objektů více než málo, je obtížné je individuálně spravovat • používají se replikační skupiny (replication groups) ▫ sdružujeme objekty, které spolu logicky souvisí • každý objekt patří do nejvýše jedné replikační skupiny • objekty z replikační skupiny mohou patřit do různých schémat
  • 20. Updatable materialized views • jedna master tabulka podporuje neomezeně UMV • protože je ! master tabulka, všechny konflikty se řeší v jednom bodě systému • nejsou tolik náročné na zdroje • dají se použít společně s multimaster replikací • CREATE MATERIALIZED VIEW view FOR UPDATE … • a navíc přiřazením do replikační skupiny a registrací replikačního objektu do katalogu
  • 22. Writeable materialized view • jsou to MV, do kterých je možné zapisovat (DML) • ale změny se nepropagují směrem ven • po refreshi se data ztratí • vytváří se stejně jako updatable MV, ale nepřiřazují se do replikační skupiny
  • 23. Replikační katalog • každý prvek zapojený do replikace má svůj replikační katalog • sada pohledů a slovníků s informacemi o replikačních objektech a skupinách • používá se při provádění replikace • procedury pro správu ▫ DBMS_REPCAT.CREATE_MASTER_REPGROUP  vytváří novou master group
  • 24. Multimaster replikace • peer-to-peer • replikují se vždy všechna data • více master-site v systému, které komunikují mezi sebou • informace se aktualizují hned po dokončení transakce ▫ pokud je to možné
  • 25. Multimaster replikace • implementována procedurálně na úrovni triggerů ▫ generují se ▫ nepoužívají se MV • umožňuje zároveň z dvou míst přistupovat (měnit) jeden záznam ▫ může dojít ke konfliktům  řeší se podle definovaných pravidel
  • 26. Multimaster komunikace • manipulace s daty neprobíhá přímo • akce se vloží do fronty Local DB Remtoe DB odložených transakcí (deferred transaction queue) Deferred Deferred • odtud se šíří po replikační transaction transaction skupině queue DB link queue • pokud dojde k chybě (např. ztráta připojení), transakce se přesune do fronty chybových transakcí Table Table (deferred error queue) A A • replikace je pozastavena, dokud chyba není opravena INSERT INTO A…
  • 27. Hybridní systémy • typicky se používá kombinace multi-master a single-master replikací
  • 28. Konflikty • u asynchronní multimaster replikace může dojít ke konfliktům (kolizím) ▫ můžeme zvolit i synchronní zpracování • řeší se podle pravidel ▫ buď implicitní ▫ nebo uživatelsky definovaná • např. ▫ latest timestamp value ▫ earliest timestamp value ▫ min/max value ▫ …
  • 29. Reference • Oracle documentation • Jiří Vytasil; Conicov Andrej – Replikace • John Garmany, Robert Freeman - Oracle Replication RAMPANT TECHPRESS, 2003 • orafaq.com