replikace oracle
DESCRIPTION
Lehký úvod a taxonomie replikace RDBMS Oracle.TRANSCRIPT
NDBI013
Jan Drozenwww.ms.mff.cuni.cz/~drozenj
REPLIKACE
Replikace
Základní replikace
Materialized view
Multimaster
replikace
Konflikty
Lokální data
T
SELECT * FROM T
Distribuovaná data
T
SELECT * FROM T
SELECT * FROM T
SELECT * FROM T
SELECT * FROM T
Distribuovaná data - problém
T
SELECT * FROM T
SELECT * FROM T
SELECT * FROM T
SELECT * FROM T
Replikace
T
SELECT * FROM T
SELECT * FROM T
TT
• 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
Replikace
• co všechno můžeme replikovat:▫ tabulky
▫ indexy
▫ pohledy
▫ balíky
▫ procedury, funkce
▫ typy
▫ triggery
▫ synonyma
▫ operátory
Replikační objekty
• 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
Jak replikovat
• potřebujeme komunikovat se vzdálenou databází
• spojení pomocí database linku
▫ jako client-server
• CREATE [PUBLIC] DATABASE LINK nameCONNECT TO user IDENTIFIED BY passUSING ‘database‘
• tnsnames.ora
▫ $ORACLE_HOME/network/ADMIN
Database link
• základní
▫ basic replication
▫ jen pro čtení
▫ data proudí jedním směrem
• pokročilá
▫ advanced replication
▫ přenos oběma směry
▫ Enterprise
Typy replikací
• 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 …
Materializovaný pohled
• 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
Základní replikace
• nižší nároky na přenos dat
• lepší výkon (lokální data)
• data subsetting
• konzistence
Výhody replikovaných mviews
• 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
Materialized view log
• 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 mvREFRESH FAST NEXT sysdate + 1 AS…
Aktualizace mview
• 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
Refresh group
Příkladdbadmin@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;
• podporuje
▫ aktualizovatelné (updatable) MV
▫ zapisovatelné (writeable) MV
▫ multi-master replikaci
▫ procedurální replikaci
Pokročilá replikace
• 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
Replikační skupiny
• 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
Updatable materialized views
• 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
Writeable materialized view
• 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
Replikační katalog
• 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 replikace
• manipulace s daty neprobíhá přímo
• akce se vloží do frontyodložených transakcí (deferred transaction queue)
• odtud se šíří po replikační skupině
• pokud dojde k chybě (např. ztráta připojení), transakce se přesune do fronty chybových transakcí (deferred error queue)
• replikace je pozastavena, dokud chyba není opravena
Multimaster komunikace
Table
A
Deferred
transaction
queue
Table
A
Deferred
transaction
queueDB link
Local DB Remtoe DB
INSERT INTO A…
• typicky se používá
kombinace multi-master a
single-master replikací
Hybridní systémy
• 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
▫ …
Konflikty
• Oracle documentation
• Jiří Vytasil; Conicov Andrej – Replikace
• John Garmany, Robert Freeman - Oracle Replication
RAMPANT TECHPRESS, 2003
• orafaq.com
Reference
Děkuji za pozornost.
KONEC