Condividi tramite


Considerazioni e limitazioni relative alla progettazione dei server di pubblicazione Oracle

La pubblicazione da un database Oracle è progettata per funzionare quasi identicamente alla pubblicazione da un database di microsoft SQL Server. È tuttavia necessario tenere conto delle limitazioni e dei problemi seguenti:

  • L'opzione Oracle Gateway offre prestazioni migliori rispetto all'opzione Oracle Complete, ma non è possibile utilizzarla per pubblicare la stessa tabella in più pubblicazioni transazionali. Una tabella può essere visualizzata al massimo in una pubblicazione transazionale e in qualsiasi numero di pubblicazioni snapshot. Se è necessario pubblicare la stessa tabella in più pubblicazioni transazionali, scegliere l'opzione Oracle Complete.

  • La replica supporta la pubblicazione di tabelle, indici e viste materializzate. Gli altri oggetti non vengono replicati.

  • Esistono alcune piccole differenze tra l'archiviazione e l'elaborazione dei dati in Oracle e SQL Server database che influiscono sulla replica.

  • Quando si utilizza un server di pubblicazione Oracle le caratteristiche della replica transazionale vengono supportate in modo differente.

Supporto per la pubblicazione di oggetti da Oracle

Utilizzando la replica è possibile replicare gli oggetti seguenti dai database Oracle:

  • Tabelle

  • Tabelle organizzate in indici

  • Indici

  • Viste materializzate (replicate come tabelle)

Nelle tabelle pubblicate possono essere presenti gli oggetti seguenti non replicati:

  • Indici basati sui domini

  • Indici basati sulle funzioni

  • Valori predefiniti

  • Vincoli CHECK

  • Chiavi esterne

  • Opzioni di archiviazione (spazi tabella, cluster e così via)

Non è possibile replicare gli oggetti seguenti:

  • Tabelle nidificate

  • Visualizzazioni

  • Pacchetti, corpi dei pacchetti, procedure e trigger

  • Code

  • Sequenze

  • Sinonimi

Per informazioni sui tipi di dati supportati, vedere Data Type Mapping for Oracle Publishers.

Differenze tra Oracle e SQL Server

  • Oracle presenta limiti di dimensione massima differenti per alcuni oggetti. Tutti gli oggetti creati nel database di pubblicazione Oracle devono rispettare i limiti di dimensione massima per gli oggetti corrispondenti in SQL Server. Per informazioni sui limiti nelle SQL Server, vedere Specifiche massime della capacità per SQL Server.

  • Per impostazione predefinita, i nomi degli oggetti Oracle vengono creati in caratteri maiuscoli. Assicurarsi di specificare i nomi degli oggetti Oracle in maiuscolo quando vengono pubblicati tramite un server di distribuzione SQL Server se sono maiuscole e minuscole nel database Oracle. L'utilizzo di un formato di carattere errato per gli oggetti può generare un messaggio di errore che indica che non è stato possibile reperirli.

  • Oracle ha un dialetto SQL leggermente diverso da SQL Server; i filtri di riga devono essere scritti nella sintassi conforme a Oracle.

Considerazioni sugli oggetti di grandi dimensioni

I dati LOB (Large Object) non vengono archiviati nella tabella del log degli articoli e i relativi aggiornamenti vengono sempre recuperati direttamente dalla tabella pubblicata. Gli aggiornamenti vengono replicati in pubblicazioni transazionali solo se l'operazione che influisce sui dati LOB attiva il trigger di replica sulla tabella replicata. I trigger Oracle vengono attivati in seguito all'inserimento o all'eliminazione di righe contenenti dati LOB, ma non quando vengono aggiornate le colonne LOB. Un aggiornamento di una colonna LOB verrà replicato subito solo se nella stessa transazione Oracle viene aggiornata anche una colonna non LOB della stessa riga. In caso contrario, la colonna LOB verrà aggiornata nel Sottoscrittore al successivo aggiornamento di una colonna non LOB nella stessa riga. Verificare che questo comportamento sia accettabile per l'applicazione in uso.

Per replicare aggiornamenti di colonne LOB nelle pubblicazioni transazionali, prendere in considerazione una delle strategie seguenti durante la scrittura dell'applicazione:

  • Eliminare e reinserire le righe all'interno di una transazione anziché aggiornarle. Specificare il nuovo oggetto LOB durante il reinserimento della riga. Poiché le operazioni di eliminazione e inserimento attivano entrambe i trigger, la riga verrà replicata.

  • Includere una colonna non LOB nell'aggiornamento di riga oltre alla colonna LOB oppure aggiornare una colonna non LOB della riga durante la stessa transazione Oracle. In entrambi i casi, l'aggiornamento della colonna non LOB garantisce l'attivazione del trigger.

Per ulteriori informazioni sugli oggetti LOB, vedere Data Type Mapping for Oracle Publishers.

Indici e vincoli univoci

Sia per la replica snapshot che per quella transazionale, le colonne contenute in indici e vincoli univoci, inclusi i vincoli di chiave primaria, devono rispettare determinate restrizioni. Se tali restrizioni vengono violate, il vincolo o l'indice non verrà replicato.

  • Il numero massimo di colonne consentite in un indice in SQL Server è 16.

  • Tutte le colonne incluse in vincoli univoci devono contenere tipi di dati supportati. Per altre informazioni sui tipi di dati, vedere Data Type Mapping for Oracle Publishers.

  • Tutte le colonne incluse in vincoli univoci devono essere pubblicate e non possono essere filtrate.

  • Le colonne interessate da vincoli o indici univoci non devono essere null.

È inoltre consigliabile considerare quanto segue:

  • Oracle e SQL Server trattano NULL in modo diverso: Oracle consente più righe con valori NULL per colonne che consentono NULL e sono inclusi in vincoli o indici univoci. SQL Server applica l'univocità solo consentendo una singola riga con un valore NULL per la stessa colonna. Non è possibile pubblicare un vincolo o un indice univoco che consente valori NULL in quanto nel Sottoscrittore si verifica una violazione di vincolo se la tabella pubblicata contiene più righe con valori NULL per una delle colonne incluse nell'indice o nel vincolo.

  • Quando si verifica l'univocità, gli spazi vuoti finali in un campo vengono ignorati da SQL Server ma non da Oracle.

Come in SQL Server replica transazionale, le tabelle nelle pubblicazioni transazionali Oracle richiedono una chiave primaria. La chiave primaria deve essere univoca in base alle regole specificate in precedenza. In caso contrario, non sarà possibile pubblicare la tabella per la replica transazionale.

Differenze tra il server di pubblicazione Oracle e la replica transazionale standard

  • Un server di pubblicazione Oracle non può avere lo stesso nome: il relativo server di distribuzione SQL Server; uno dei server di pubblicazione SQL Server che usano il server di distribuzione o tutti i Sottoscrittori che ricevono la pubblicazione. Le pubblicazioni gestite dallo stesso server di distribuzione devono avere un nome univoco.

  • Una tabella pubblicata in una pubblicazione Oracle non può ricevere dati replicati. La pubblicazione Oracle non supporta pertanto pubblicazioni con sottoscrizioni ad aggiornamento immediato e ad aggiornamento in coda, oppure topologie in cui le tabelle della pubblicazione fungono anche da tabelle delle sottoscrizioni, ad esempio la replica bidirezionale e peer-to-peer.

  • Le relazioni tra chiave primaria e chiave esterna nel database Oracle non vengono replicate nei Sottoscrittori. Tali relazioni vengono tuttavia mantenute tra i dati via via che le modifiche vengono recapitate.

  • Le pubblicazioni transazionali standard supportano tabelle contenenti fino a 1000 colonne. Le pubblicazioni transazionali Oracle supportano 995 colonne (la replica aggiunge cinque colonne a ogni tabella pubblicata).

  • Le clausole COLLATE vengono aggiunte alle istruzioni CREATE TABLE per consentire confronti con distinzione tra maiuscole e minuscole, che sono importanti per le chiavi primarie e i vincoli univoci. Questo comportamento viene controllato con l'opzione schema 0x1000, specificata con il parametro @schema_option di sp_addarticle (Transact-SQL).

  • Se si utilizzano stored procedure per configurare o gestire un server di pubblicazione Oracle, non inserire le procedure all'interno di una transazione esplicita. Questa operazione non è supportata sul server collegato utilizzato per connettersi al server di pubblicazione Oracle.

  • Se si crea una sottoscrizione pull a una pubblicazione Oracle con una procedura guidata, è necessario usare la Creazione guidata nuova sottoscrizione fornita con SQL Server 2005 e versioni successive. Per le versioni precedenti di SQL Server, tuttavia, è possibile usare le interfacce stored procedure e SQL-DMO per configurare le sottoscrizioni pull alle pubblicazioni Oracle.

  • Se si utilizzano stored procedure per propagare le modifiche ai Sottoscrittori (impostazione predefinita), tenere presente che la sintassi MCALL è supportata ma presenta un comportamento differente quando la pubblicazione proviene da un server di pubblicazione Oracle. Generalmente MCALL include una bitmap in cui vengono illustrate le colonne che sono state aggiornate nel server di pubblicazione. Con una pubblicazione Oracle, la bitmap indica sempre che sono state aggiornate tutte le colonne. Per altre informazioni sull'uso delle stored procedure, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.

Supporto della replica transazionale

  • Le pubblicazioni Oracle non supportano tutte le opzioni di schema supportate nelle pubblicazioni SQL Server. Per altre informazioni sulle opzioni dello schema, vedere sp_addarticle (Transact-SQL).

  • I Sottoscrittori delle pubblicazioni Oracle non possono utilizzare le sottoscrizioni ad aggiornamento immediato o ad aggiornamento in coda né possono essere nodi in una topologia peer-to-peer o bidirezionale.

  • I Sottoscrittori delle pubblicazioni Oracle non possono essere inizializzati automaticamente da un backup.

  • SQL Server supporta due tipi di convalida: binario e numero di righe. I server di pubblicazione Oracle supportano la convalida mediante il conteggio delle righe. Per altre informazioni, vedere Convalidare i dati replicati.

  • SQL Server offre due formati snapshot: bcp-mode nativa e modalità carattere. I server di pubblicazione Oracle supportano gli snapshot in modalità carattere.

  • Le modifiche dello schema delle tabelle Oracle pubblicate non sono supportate. Per apportare tali modifiche, eliminare innanzitutto la pubblicazione, inserire le modifiche e quindi ricreare la pubblicazione e le eventuali sottoscrizioni.

    Nota

    Se le modifiche dello schema e le successive operazioni di eliminazione e ricreazione della pubblicazione e delle sottoscrizioni vengono eseguite in un momento in cui non è in corso alcuna attività sulle tabelle pubblicate, è possibile specificare l'opzione relativa al supporto esclusivo della replica per le sottoscrizioni. In questo modo sarà possibile sincronizzarle senza dover copiare uno snapshot in ogni Sottoscrittore. Per altre informazioni, vedere Inizializzazione di una sottoscrizione transazionale senza uno snapshot.

Modello di sicurezza della replica

Il modello di sicurezza per il server di pubblicazione Oracle è identico a quello per la replica transazionale standard, con le eccezioni seguenti:

Per altre informazioni sulla sicurezza della replica, vedere sicurezza replica di SQL Server.

Vedere anche

Considerazioni amministrative per i server di pubblicazione Oracle
Configurare un server di pubblicazione Oracle
Panoramica della pubblicazione Oracle