replikace oracle

30
NDBI013 Jan Drozen www.ms.mff.cuni.cz/~drozenj REPLIKACE Replikace Základní replikace Materialized view Multimaster replikace Konflikty

Upload: jan-drozen

Post on 04-Jul-2015

314 views

Category:

Education


0 download

DESCRIPTION

Lehký úvod a taxonomie replikace RDBMS Oracle.

TRANSCRIPT

Page 1: Replikace Oracle

NDBI013

Jan Drozenwww.ms.mff.cuni.cz/~drozenj

REPLIKACE

Replikace

Základní replikace

Materialized view

Multimaster

replikace

Konflikty

Page 2: Replikace Oracle

Lokální data

T

SELECT * FROM T

Page 3: Replikace Oracle

Distribuovaná data

T

SELECT * FROM T

SELECT * FROM T

SELECT * FROM T

SELECT * FROM T

Page 4: Replikace Oracle

Distribuovaná data - problém

T

SELECT * FROM T

SELECT * FROM T

SELECT * FROM T

SELECT * FROM T

Page 5: Replikace Oracle

Replikace

T

SELECT * FROM T

SELECT * FROM T

TT

Page 6: Replikace Oracle

• 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

Page 7: Replikace Oracle

• co všechno můžeme replikovat:▫ tabulky

▫ indexy

▫ pohledy

▫ balíky

▫ procedury, funkce

▫ typy

▫ triggery

▫ synonyma

▫ operátory

Replikační objekty

Page 8: Replikace Oracle

• 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

Page 9: Replikace Oracle

• 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

Page 10: Replikace Oracle

• 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í

Page 11: Replikace Oracle

• 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

Page 12: Replikace Oracle

• 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

Page 13: Replikace Oracle

• nižší nároky na přenos dat

• lepší výkon (lokální data)

• data subsetting

• konzistence

Výhody replikovaných mviews

Page 14: Replikace Oracle

• 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

Page 15: Replikace Oracle

• 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

Page 16: Replikace Oracle

• 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

Page 17: Replikace Oracle

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;

Page 18: Replikace Oracle

• podporuje

▫ aktualizovatelné (updatable) MV

▫ zapisovatelné (writeable) MV

▫ multi-master replikaci

▫ procedurální replikaci

Pokročilá replikace

Page 19: Replikace Oracle

• 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

Page 20: Replikace Oracle

• 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

Page 21: Replikace Oracle

Updatable materialized views

Page 22: Replikace Oracle

• 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

Page 23: Replikace Oracle

• 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

Page 24: Replikace Oracle

• 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

Page 25: Replikace Oracle

• 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

Page 26: Replikace Oracle

• 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…

Page 27: Replikace Oracle

• typicky se používá

kombinace multi-master a

single-master replikací

Hybridní systémy

Page 28: Replikace Oracle

• 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

Page 29: Replikace Oracle

• Oracle documentation

• Jiří Vytasil; Conicov Andrej – Replikace

• John Garmany, Robert Freeman - Oracle Replication

RAMPANT TECHPRESS, 2003

• orafaq.com

Reference

Page 30: Replikace Oracle

Děkuji za pozornost.

KONEC