Considerazioni e limitazioni di progettazione per gli editori Oracle

Si applica a:SQL Server

Pubblicare da un database Oracle funziona quasi come pubblicare da un database di Microsoft SQL Server. Tuttavia, tieni presente le seguenti limitazioni e questioni:

  • L'opzione Oracle Gateway offre prestazioni migliori rispetto all'opzione Oracle Complete. Tuttavia, non puoi usare l'opzione Oracle Gateway per pubblicare la stessa tabella in più pubblicazioni transazionali. Una tabella può apparire in una sola pubblicazione transazionale, ma può comparire in un numero qualsiasi 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. Non replica altri oggetti.

  • Alcune piccole differenze tra la memorizzazione e l'elaborazione dei dati nei database Oracle e SQL Server influenzano la replica.

  • Ci sono differenze nel modo in cui sono supportate le funzionalità di replica transazionale quando si utilizza un Oracle Publisher.

Supporto per la pubblicazione degli oggetti da parte di Oracle

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

  • Tabelle

  • Tabelle organizzate in indici

  • Indici

  • Viste materializzate (replicate come tabelle)

I seguenti oggetti possono essere presenti nelle tabelle pubblicate ma non sono replicati:

  • Indici basati sui domini

  • Indici basati sulle funzioni

  • Predefiniti

  • Controlla vincoli

  • Chiavi esterne

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

I seguenti oggetti non possono essere replicati:

  • Tabelle annidate

  • Visualizzazioni

  • Pacchetti, corpi di pacchetto, 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. Qualsiasi oggetto creato nel database di pubblicazioni Oracle dovrebbe rispettare i limiti massimi di dimensione per gli oggetti corrispondenti in SQL Server. Per altre informazioni sui limiti in SQL Server, vedere Specifiche di capacità massima per SQL Server.

  • Di default, Oracle crea i nomi degli oggetti in maiuscolo. Assicurati di fornire i nomi degli oggetti Oracle in maiuscolo quando li pubblichi tramite un distributore SQL Server se sono maiuscoli nel database Oracle. La mancata specificazione degli oggetti nel caso corretto potrebbe comportare un messaggio di errore che indica che l'oggetto non può essere trovato.

  • Oracle utilizza un dialetto SQL leggermente diverso da SQL Server; scrivi filtri a riga nella sintassi conforme a Oracle.

Considerazioni per gli oggetti di grandi dimensioni

La tabella di log degli articoli non memorizza i dati di grande oggetto (LOB). Gli aggiornamenti ai dati LOB vengono sempre recuperati direttamente dalla tabella pubblicata. Gli aggiornamenti vengono replicati nelle pubblicazioni transazionali solo se l'operazione che interessa i dati LOB attiva il trigger di replica sulla tabella replicata. I trigger di Oracle si attivano quando vengono inserite o eliminate righe contenenti LOB. Tuttavia, gli aggiornamenti alle colonne LOB non attivano i trigger. Un aggiornamento di una colonna LOB viene replicato immediatamente solo se una colonna non-LOB della stessa riga viene aggiornata nella stessa transazione Oracle. In caso contrario, la colonna LOB viene aggiornata nel Sottoscrittore quando si verifica il successivo aggiornamento di una colonna non LOB nella stessa riga. Verificare che questo comportamento sia accettabile per l'applicazione in uso.

Per replicare gli aggiornamenti alle colonne LOB nelle pubblicazioni transazionali, considerare una delle strategie seguenti quando si scrive l'applicazione:

  • Elimina e reinserisci le righe all'interno di una transazione invece di aggiornarla: specifica il nuovo LOB quando si reinserisce la riga. Poiché eliminano e inseriscono entrambi i trigger di sparo, la riga viene 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 che il trigger venga attivato.

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

Indici e vincoli unici

Sia per la replica snapshot sia per la replica transazionale, le colonne negli indici univoci e nei vincoli univoci (inclusi i vincoli di chiave primaria) devono rispettare determinate restrizioni. Se non rispettano queste restrizioni, il vincolo o l'indice non viene replicato.

  • Puoi includere fino a 16 colonne in un indice su SQL Server.

  • Tutte le colonne con vincoli unici devono avere tipi di dati supportati. Per altre informazioni sui tipi di dati, vedere Data Type Mapping for Oracle Publishers.

  • Devi pubblicare tutte le colonne con vincoli unici (non puoi filtrarle).

  • Le colonne in vincoli o indici unici non dovrebbero essere nulle.

È inoltre consigliabile considerare quanto segue:

  • Oracle e SQL Server trattano i valori NULL in modo diverso: Oracle consente più righe con valori NULL nelle colonne che ammettono valori NULL e che sono incluse in vincoli o indici univoci. SQL Server consente di applicare l'univocità mediante il supporto di una sola riga con un valore NULL per la stessa colonna. Non puoi pubblicare un vincolo o indice univoco che consenta NULL perché si verificherebbe una violazione del vincolo sull'Abbonato se la tabella pubblicata contiene più righe con valori NULL per una qualsiasi delle colonne incluse nell'indice o nel vincolo.

  • Quando si testa l'unicità, SQL Server ignora gli spazi vuoti in un campo, ma Oracle no.

Come nella replica transazionale di SQL Server, le tabelle nelle pubblicazioni transazionali Oracle richiedono una chiave primaria. La chiave primaria deve essere unica in base alle regole specificate in precedenza. Se la chiave primaria non segue queste regole, non puoi pubblicare la tabella per la replica transazionale.

Differenze tra la pubblicazione Oracle e la replica transazionale standard

  • Un server di pubblicazione Oracle non può avere lo stesso nome del server di distribuzione SQL Server corrispondente, dei server di pubblicazione SQL Server che utilizzano il server di distribuzione o dei 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. Tuttavia, le relazioni vengono mantenute nei dati man mano che le modifiche vengono applicate.

  • 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 di confronto vengono aggiunte alle istruzioni CREATE TABLE per abilitare confronti sensibili alle maiuscole e alle minuscole, che sono importanti per le chiavi primarie e i vincoli univoci. Questo comportamento viene controllato mediante l'opzione dello 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 utilizzando una procedura guidata, si deve usare la Creazione guidata Nuova sottoscrizione inclusa in SQL Server 2005 (9.x) e nelle versioni successive. Per le versioni precedenti di SQL Server, è tuttavia possibile utilizzare la stored procedure e le interfacce SQL-DMO per impostare le sottoscrizioni pull nelle 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. In genere, MCALL fornisce una mappa di bit che indica quali colonne sono state aggiornate nel Publisher. 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 alle funzionalità di replica transazionale

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

  • Gli abbonati alle pubblicazioni Oracle non possono utilizzare abbonamenti di aggiornamento immediato o in coda, né essere nodi in una topologia peer-to-peer o bidirezionale.

  • Gli abbonati alle pubblicazioni Oracle non possono essere inizializzati automaticamente da un backup.

  • SQL Server supporta due tipi di convalida: binaria e mediante il conteggio delle 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 di snapshot: in modalità bcp nativa e in modalità carattere. I server di pubblicazione Oracle supportano gli snapshot in modalità carattere.

  • Le modifiche allo schema alle 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 apporti modifiche allo schema e elimini e ricrei la pubblicazione e gli abbonamenti quando non c'è attività sulle tabelle pubblicate, puoi specificare l'opzione replication support only per gli abbonamenti. Questa opzione li sincronizza senza copiare uno snapshot a ciascun sottoscrittore. Per altre informazioni, vedere Inizializzazione di una sottoscrizione transazionale senza uno snapshot.

Modello di sicurezza della replica

Il modello di sicurezza della replica per l'editoria Oracle è lo stesso del modello di sicurezza per la replica transazionale standard, con le seguenti eccezioni:

Per altre informazioni, sulla sicurezza della replica vedere Visualizzare e modificare le impostazioni di sicurezza della replica.