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. Oracle Client Sincrona - Asincrona Client / Server - Server / Server $HOME/network/admin/tnsnames.ora Oracle DB Server ALIAS = (DESCRIPTION = (ADDRESS = (PROTOCOL= TCP) (Host= xxx.yyy.zzz.www) (Port= 1526)) (CONNECT_DATA = (SID = O920)) ) $HOME/network/admin/listener.ora Processo Listener Processo Server x Connessione Dedicata $HOME/network/admin/sqlnet.ora Tnsnames.ora Oracle DB Server 1 Listener.ora TNS - TCP/IP usr1 / pwd1 T1 connect system/manager; grant create database link to usr1; grant create synonym to usr1; Oracle DB Server 2 usr2 / pwd2 T2 Alias del tnsnames della macchina server 1 connect usr1/pwd1; create database link dbms2 connect to usr2 identified by pwd2 using ‘alias2’; create synonym S2 for T2@dbms2; 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.” Case Study Data Distribution Oracle Offers SnapShot Read Only SnapShot WriteAble Multi Master Site SnapShot UpDateAble Rows Filter Where Fields Filter Select CREATE SNAPSHOT snap_unito TABLESPACE tablespace_unito PCTFREE n STORAGE (INITIAL n NEXT n PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 121) WITH [ PRIMARY KEY | ROWID ] REFRESH [ FAST | COMPLETE | FORCE ] START WITH date NEXT date AS subquery; Sempre applicabile - Nessun vincolo architetturale REFRESH [ FAST | COMPLETE | FORCE ] Se possibile adotta tecnica Fast altrimenti Complete 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 CREATE SNAPSHOT snap_unito TABLESPACE tablespace_unito PCTFREE n STORAGE (INITIAL n NEXT n PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 121) WITH [ PRIMARY KEY | ROWID ] REFRESH [ FAST | COMPLETE | FORCE ] START WITH date NEXT date FOR UPDATE AS subquery; Note Base: Modifiche in aggiornamento mono direzionale (da Master verso Slave) Modifiche perse al successivo refresh Applicazioni in ambiti prevalentemente di simulazione Trigger After Row For Each Row Insert Update Delete SnapShot View SnapShot Base Table Master Table Refresh Operation SnapShot Log View of Changed Trigger After Row For Each Row Insert Update Delete Trigger After Row For Each Row Insert Update Delete SnapShot View SnapShot Base Table Master Table Refresh Operation SnapShot Log View of Changed Log of Change SNP Background Processes Job Schedulati Job Ready Job List Job Ready List Next? Caso di Failure 1° Tentativo dopo 1 Minuto 2° Tentativo dopo 2 Minuti 3° Tentativo dopo 4 Minuti n° Tentativo dopo 2^(n-1) Minuti con 3<n<17 Compatibile con l’intervallo di ri-programmazione del Job DBMS_JOB Package To schedule and manage jobs in the job queue, use the procedures in the DBMS_JOB package. There are no database privileges associated with using job queues. Any user who can execute the job queue procedures can use the job queue. Submitting a Job to the Job Queue To submit a new job to the job queue, use the SUBMIT procedure in the DBMS_JOB package: 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; DBMS_JOB Package Broken Jobs A job is labeled as either broken or not broken. Oracle does not attempt to run broken jobs. However, you can force a broken job to run by calling the procedure DBMS_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 job until you either mark the job as not broken, or force the job to be executed by calling the procedure DBMS_JOB.RUN. 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, ); In conclusione citiamo le viste del dizionario dati che consentono un monitoring della schedulazione: USER_JOBS DBA_JOBS JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT CURRENT_SESSION_LABEL CLEARANCE_HI CLEARANCE_LO NLS_ENV MISC_ENV NOT NOT NOT NOT NULL NULL NULL NULL NUMBER VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) DATE VARCHAR2(8) DATE VARCHAR2(8) NOT NULL DATE VARCHAR2(8) NUMBER VARCHAR2(1) NOT NULL VARCHAR2(200) NUMBER VARCHAR2(2000) RAW MLSLABEL RAW MLSLABEL RAW MLSLABEL VARCHAR2(2000) RAW(32) DBA_JOBS_RUNNING SID JOB FAILURES LAST_DATE LAST_SEC THIS_DATE THIS_SEC NUMBER NUMBER NUMBER DATE VARCHAR2(8) DATE VARCHAR2(8) 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 Multithreaded Server Dispatcher processes Oracle server code program interface Request queue Shared server processes Response queues System Global Area Oracle background processes Client Database server Listener MTS instance parameters: mts_servers = 4 mts_dispatchers = “(PROTOCOL=ipc)(DISPATCHERS=4)” mts_max_servers = 20 mts_max_dispatchers = 20 Oracle Standby Implementation Fail over Solution Disaster Recovery Solution (if remote) Ease of implementation Minimum impact on Production System Read Only Standby Database Overview of Managed Oracle Standby DB Primary Instance ARCH Standby Instance T.N.S. Redo log Recovery proc DBWR Arc log Arc log RFS Primary DB Standby DB Primary control file Standby control file 1 Recovery Mode 2 ReadOnly Mode 3 Activate