Share via


Flusso di lavoro della replica transazionale per i server di pubblicazione Oracle

La replica transazionale per i server di pubblicazione Oracle si basa sull'architettura di pubblicazione della replica transazionale di Microsoft SQL Server, ma il processo di rilevamento delle modifiche nel server di pubblicazione e di recapito delle stesse al server di distribuzione presenta differenze sostanziali rispetto a quello della replica transazionale standard. Nonostante le differenze, le transazioni eseguite nel database Oracle vengono applicate nel Sottoscrittore in gruppi transazionali consistenti. Le tabelle con riferimenti interni a chiavi esterne mantengono le proprie relazioni tra i dati via via che le modifiche vengono recapitate (le chiavi esterne non vengono copiate nel Sottoscrittore).

[!NOTA] Gli oggetti di grandi dimensioni (LOB, Large Objects) vengono rilevati in modo differente rispetto ad altri tipi di dati. Per ulteriori informazioni, vedere la sezione "Considerazioni sugli oggetti di grandi dimensioni" nell'argomento Considerazioni e limitazioni relative alla progettazione dei server di pubblicazione Oracle.

Nel flusso di lavoro seguente vengono illustrati i passaggi principali delle operazioni di rilevamento e recapito delle modifiche dal server di pubblicazione Oracle.

Rilevamento delle modifiche

  1. Un utente o un'applicazione esegue inserimenti, aggiornamenti o eliminazioni su una o più tabelle Oracle pubblicate per la replica.
  2. Per ogni riga modificata viene attivato un trigger a livello di riga installato durante la replica su ogni tabella Oracle pubblicata. Tale trigger consente di archiviare informazioni sulla modifica nella tabella del log degli articoli associata alla tabella Oracle.
  3. Quando il trigger a livello di riga viene attivato, dalla sequenza HREPL_seq viene recuperato un numero e assegnato alla riga della tabella del log che descrive l'operazione DML. In questo modo si garantisce che durante la replica i comandi di modifica verranno applicati nel Sottoscrittore in base all'ordine corretto.
  4. In caso di aggiornamento di una chiave primaria, viene attivato anche un trigger a livello di istruzione installato nella tabella, che consente l'associazione tra più aggiornamenti di chiavi primarie nella stessa istruzione. L'identificatore di istruzione viene tracciato dalla sequenza HREPL_Stmt e utilizzato per la corretta gestione degli aggiornamenti delle chiavi primarie nel Sottoscrittore.
  5. Per ogni riga inserita o eliminata dalla tabella Oracle pubblicata, viene inserita una riga nella tabella del log degli articoli associata. Per ogni riga aggiornata nella tabella Oracle, vengono inserite una riga (immagine successiva) o due righe (immagine precedente e immagine successiva) nella tabella del log, a seconda che la replica richieda o meno informazioni sullo stato precedente della riga.

Recapito delle modifiche al server di distribuzione

  1. L'agente di lettura log identifica il set di modifiche consistenti dal punto di vista transazionale dai log degli articoli che non sono stati ancora associati a un intervallo di polling e archivia temporaneamente gli ID di riga delle voci della tabella del log nella tabella HREPL_Poll. L'identificatore tracciato dalla sequenza HREPL_Pollid viene utilizzato per contrassegnare ogni voce modificata come membro del set consistente dal punto di vista transazionale, nonché per fornire un ordine di elaborazione per il set relativo ad altri set.
  2. Durante l'elaborazione delle modifiche di una tabella pubblicata, le righe vengono recuperate dalla tabella del log. L'ID di polling corrente derivato da HREPL_Pollid viene utilizzato per identificare le righe da elaborare.
  3. Il batch di modifiche della tabella del log viene sottoposto a commit come singola transazione nel database di distribuzione e archiviato nelle tabelle MSrepl_commands e MSrepl_transactions.

Le modifiche vengono quindi lette dal database di distribuzione e recapitate ai Sottoscrittori dall'agente di distribuzione, come avviene con la replica transazionale standard.

Vedere anche

Concetti

Glossario dei termini per la pubblicazione Oracle
Funzionamento del server di pubblicazione Oracle
Oggetti creati nel server di pubblicazione Oracle

Guida in linea e informazioni

Assistenza su SQL Server 2005