Data Distribution & Replication Data Distribution & Replication.

23
Data Distribution Data Distribution & & Replication Replication

Transcript of Data Distribution & Replication Data Distribution & Replication.

Page 1: Data Distribution & Replication Data Distribution & Replication.

Data Distribution &Data Distribution &ReplicationReplication

Data Distribution &Data Distribution &ReplicationReplication

Page 2: Data Distribution & Replication Data Distribution & Replication.

Distributed Databases Definitions

A single logical database that is spread physically across computers in multiple locations that are connected by a data communications link.

Decentralized Database.

A collection of independent databases:

• Homogeneous - Same DBMS at each node.

– Autonomous - Independent DBMSs.– Non-autonomous - Central , coordinating DBMS.

• Heterogeneous - Different DBMSs at different nodes.

Page 3: Data Distribution & Replication Data Distribution & Replication.

Oracle Client

Oracle DBServer

Sincrona - AsincronaClient / Server - Server / Server

$HOME/network/admin/listener.ora

ALIAS = (DESCRIPTION = (ADDRESS = (PROTOCOL= TCP) (Host= xxx.yyy.zzz.www) (Port= 1526)) (CONNECT_DATA = (SID = O920)) )

$HOME/network/admin/tnsnames.ora

Processo Listener

Processo Server x Connessione Dedicata

$HOME/network/admin/sqlnet.ora

Page 4: Data Distribution & Replication Data Distribution & Replication.

Oracle DBServer 1

Oracle DBServer 2

usr1 / pwd1T1

usr2 / pwd2T2

connect system/manager;grant create database link to usr1;

grant create synonym to usr1;

connect usr1/pwd1;

create database link dbms2 connect to usr2 identified by pwd2 using ‘alias2’;

create synonym S2 for T2@dbms2;

Alias del tnsnames della macchina server 1

Tnsnames.ora Listener.ora

TNS - TCP/IP

Page 5: Data Distribution & Replication Data Distribution & Replication.

Two-Phase Commit

• Prepare Phase

• Coordinator receives a commit request• Coordinator instructs all resource managers to get ready to “go either way” on the transaction.• Each resource manager writes all updates from that transaction to its own physical log.• Coordinator receives replies from all resource managers.

•If all are ok, it writes commit to its own log; •if not then it writes rollback to its log.

• Commit Phase

• Coordinator then informs each resource manager of its decision and broadcasts a message to either commit or rollback (abort.)• If the message is commit, then each resource manager transfers the update from its log to its database.A failure during the commit phase puts a transaction “in limbo.”

Page 6: Data Distribution & Replication Data Distribution & Replication.

Case Study Data DistributionCase Study Data DistributionCase Study Data DistributionCase Study Data Distribution

Page 7: Data Distribution & Replication Data Distribution & Replication.

Oracle OffersOracle OffersOracle OffersOracle Offers

SnapShot Read Only

SnapShot WriteAble

Multi Master Site

SnapShot UpDateAble

Page 8: Data Distribution & Replication Data Distribution & Replication.

Rows Filter

Where

Fields Filter Select

CREATE SNAPSHOT snap_unitoTABLESPACE tablespace_unitoPCTFREE nSTORAGE (INITIAL n NEXT n PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 121)

REFRESH [ FAST | COMPLETE | FORCE ]START WITH dateNEXT dateAS subquery;

WITH [ PRIMARY KEY | ROWID ]

Page 9: Data Distribution & Replication Data Distribution & Replication.

REFRESH [ FAST | COMPLETE | FORCE ]

Se possibile adotta tecnica Fast altrimenti Complete

Sempre applicabile - Nessun vincolo architetturale

Applicabile solo:

1) Se la select è definibile semplice ovvero:

a) appoggia su un solo oggetto di tipologia tabellare

b) è priva di costrutti quali group by, order by e subquery

2) Esiste lato Master un Log

3) Il Log esiste da tempo utile per supportare il nuovo refresh

Page 10: Data Distribution & Replication Data Distribution & Replication.

CREATE SNAPSHOT snap_unitoTABLESPACE tablespace_unitoPCTFREE nSTORAGE (INITIAL n NEXT n PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 121)

REFRESH [ FAST | COMPLETE | FORCE ]START WITH dateNEXT date

AS subquery;

WITH [ PRIMARY KEY | ROWID ]

FOR UPDATE

Note Base:

Modifiche in aggiornamento mono direzionale (da Master verso Slave)

Modifiche perse al successivo refresh

Applicazioni in ambiti prevalentemente di simulazione

Page 11: Data Distribution & Replication Data Distribution & Replication.

Master Table

SnapShot Log

TriggerAfter RowFor Each RowInsert Update Delete

Refresh Operation

View of Changed

SnapShotBase Table

SnapShot View

Page 12: Data Distribution & Replication Data Distribution & Replication.

Master Table

SnapShot Log

TriggerAfter RowFor Each RowInsert Update Delete

SnapShotBase Table

SnapShot View

Log ofChange

TriggerAfter RowFor Each RowInsert Update Delete

Refresh Operation

View of Changed

Page 13: Data Distribution & Replication Data Distribution & Replication.

SNP Background Processes

Job Schedulati

Caso di Failure

1° Tentativo dopo 1 Minuto2° Tentativo dopo 2 Minuti3° Tentativo dopo 4 Minuti

n° Tentativo dopo 2^(n-1) Minuti con 3<n<17

Compatibile con l’intervallo di ri-programmazione del Job

Job Ready

Next?

Job List

Job Ready List

Page 14: Data Distribution & Replication Data Distribution & Replication.
Page 15: Data Distribution & Replication Data Distribution & Replication.

DBMS_JOB PackageTo schedule and manage jobs in the job queue, use the procedures in the DBMS_JOBpackage. There are no database privileges associated with using job queues. Anyuser who can execute the job queue procedures can use the job queue.

Submitting a Job to the Job QueueTo submit a new job to the job queue, use the SUBMIT procedure in the DBMS_JOBpackage:

DBMS_JOB.SUBMIT ( job OUT BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE DEFAULT SYSDATE, interval IN VARCHAR2 DEFAULT ’null’, no_parse IN BOOLEAN DEFAULT FALSE )

declare jobno number;begin DBMS_JOB.SUBMIT (jobno, ’begin procedura_unito01(1,’X’); end;’, SYSDATE, ’SYSDATE + 1’); commit;end;

Page 16: Data Distribution & Replication Data Distribution & Replication.

DBMS_JOB Package

Broken JobsA job is labeled as either broken or not broken. Oracle does not attempt to runbroken jobs. However, you can force a broken job to run by calling the procedureDBMS_JOB.RUN.

There are two ways a job can break:Oracle has failed to successfully execute the job after 16 attempts.You have marked the job as broken, using the procedure DBMS_JOB.BROKEN.

DBMS_JOB.BROKEN ( job IN BINARY_INTEGER, broken IN BOOLEAN, next_date IN DATE DEFAULT SYSDATE )

Once a job has been marked as broken, Oracle will not attempt to execute the jobuntil you either mark the job as not broken, or force the job to be executed by callingthe procedure DBMS_JOB.RUN.

Page 17: Data Distribution & Replication Data Distribution & Replication.

DBMS_JOB Package

DBMS_JOB.CHANGE (job IN binary_integer, what IN varchar2, next_date IN date, interval IN varchar2 );

DBMS_JOB.REMOVE (job IN binary_integer, );

Page 18: Data Distribution & Replication Data Distribution & Replication.

In conclusione citiamo le viste del dizionario dati che consentono un monitoring dellaschedulazione:

USER_JOBSDBA_JOBS

JOB NOT NULL NUMBER LOG_USER NOT NULL VARCHAR2(30) PRIV_USER NOT NULL VARCHAR2(30) SCHEMA_USER NOT NULL VARCHAR2(30) LAST_DATE DATE LAST_SEC VARCHAR2(8) THIS_DATE DATE THIS_SEC VARCHAR2(8) NEXT_DATE NOT NULL DATE NEXT_SEC VARCHAR2(8) TOTAL_TIME NUMBER BROKEN VARCHAR2(1) INTERVAL NOT NULL VARCHAR2(200) FAILURES NUMBER WHAT VARCHAR2(2000) CURRENT_SESSION_LABEL RAW MLSLABEL CLEARANCE_HI RAW MLSLABEL CLEARANCE_LO RAW MLSLABEL NLS_ENV VARCHAR2(2000) MISC_ENV RAW(32)

DBA_JOBS_RUNNING

SID NUMBER JOB NUMBER FAILURES NUMBER LAST_DATE DATE LAST_SEC VARCHAR2(8) THIS_DATE DATE THIS_SEC VARCHAR2(8)

Page 19: Data Distribution & Replication Data Distribution & Replication.

Conflict Resolution

In modalità Asincrona possono verificarsi conflitti che possono minare la consistenza e l’integrità dei dati. Sono prevalentemente di tre tipologie:

• Update • Uniqueness• Delete

Oracle offre sistemi di Definizione & Risoluzione Automatica dei Conflitti

•time stamp •minimum value•maximum value•highest priority site•highest priority value•average

…….

custom solution

Page 20: Data Distribution & Replication Data Distribution & Replication.

Multithreaded ServerMultithreaded ServerMultithreaded ServerMultithreaded Server

System Global AreaSystem Global Area

Oracle background processesOracle background processes

Dispatcher processesDatabase serverDatabase server

ListenerListener

ClientClient

Request queueRequest queue

SharedSharedserverserverprocessesprocesses

Response queuesResponse queues

Oracle serverOracle servercode programcode programinterfaceinterface

Page 21: Data Distribution & Replication Data Distribution & Replication.

MTS instance parameters:MTS instance parameters: MTS instance parameters:MTS instance parameters:

mts_servers = 4

mts_dispatchers = “(PROTOCOL=ipc)(DISPATCHERS=4)”

mts_max_servers = 20

mts_max_dispatchers = 20

mts_servers = 4

mts_dispatchers = “(PROTOCOL=ipc)(DISPATCHERS=4)”

mts_max_servers = 20

mts_max_dispatchers = 20

Page 22: Data Distribution & Replication Data Distribution & Replication.

Oracle Standby Oracle Standby ImplementationImplementation

Fail over SolutionFail over SolutionDisaster Recovery Solution (if remote)Disaster Recovery Solution (if remote)Ease of implementationEase of implementationMinimum impact on Production SystemMinimum impact on Production SystemRead Only Standby DatabaseRead Only Standby Database

Page 23: Data Distribution & Replication Data Distribution & Replication.

Overview of Managed Oracle Standby DB

Primary control file

Primary DB

Primary Instance

Redo log

Arc log

ARCH

Standby DB

DBWR

Standby Instance

Recovery proc

Standby control file

RFS

Arc log

T.N.S.

Recovery Mode1ReadOnly Mode2

Activate3