Considerazioni e limitazioni relative alla progettazione dei server di pubblicazione OracleDesign Considerations and Limitations for Oracle Publishers

La pubblicazione da un database Oracle è progettata per funzionare in modo quasi identico alla pubblicazione da un database MicrosoftMicrosoft SQL ServerSQL Server .Publishing from an Oracle database is designed to work nearly identically to publishing from a MicrosoftMicrosoft SQL ServerSQL Server database. È tuttavia necessario tenere conto delle limitazioni e dei problemi seguenti:However, you should be aware of the following limitations and issues:

  • 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.The Oracle Gateway option provides improved performance over the Oracle Complete option; however, this option cannot be used to publish the same table in multiple transactional publications. Una tabella può essere visualizzata al massimo in una pubblicazione transazionale e in qualsiasi numero di pubblicazioni snapshot.A table can appear in at most one transactional publication and any number of snapshot publications. Se è necessario pubblicare la stessa tabella in più pubblicazioni transazionali, scegliere l'opzione Oracle Complete.If you need to publish the same table in multiple transactional publications, choose the Oracle Complete option.

  • La replica supporta la pubblicazione di tabelle, indici e viste materializzate.Replication supports publishing tables, indexes, and materialized views. Gli altri oggetti non vengono replicati.Other objects are not replicated.

  • L'archiviazione e l'elaborazione dei dati in Oracle e nei database SQL ServerSQL Server presentano alcune piccole differenze che influiscono sulla replica.There are some small differences between the storage and processing of data in Oracle and SQL ServerSQL Server databases that affect replication.

  • Quando si utilizza un server di pubblicazione Oracle le caratteristiche della replica transazionale vengono supportate in modo differente.There are a number of differences in how transactional replication features are supported when using an Oracle Publisher.

Supporto per la pubblicazione di oggetti da OracleSupport for Publishing Objects from Oracle

Utilizzando la replica è possibile replicare gli oggetti seguenti dai database Oracle:Replication supports replicating the following objects from Oracle databases:

  • TabelleTables

  • Tabelle organizzate in indiciIndex-organized tables

  • IndiciIndexes

  • Viste materializzate (replicate come tabelle)Materialized views (they are replicated as tables)

    Nelle tabelle pubblicate possono essere presenti gli oggetti seguenti non replicati:The following can be present on published tables but are not replicated:

  • Indici basati sui dominiDomain-based indexes

  • Indici basati sulle funzioniFunction-based indexes

  • Valori predefinitiDefaults

  • Vincoli CHECKCheck constraints

  • Chiavi esterneForeign keys

  • Opzioni di archiviazione (spazi tabella, cluster e così via)Storage options (tablespaces, clusters, etc.)

    Non è possibile replicare gli oggetti seguenti:The following objects cannot be replicated:

  • Tabelle nidificateNested tables

  • VisteViews

  • Pacchetti, corpi dei pacchetti, procedure e triggerPackages, package bodies, procedures, and triggers

  • CodeQueues

  • SequenzeSequences

  • SinonimiSynonyms

    Per informazioni sui tipi di dati supportati, vedere Data Type Mapping for Oracle Publishers.For information about supported data types, see Data Type Mapping for Oracle Publishers.

Differenze tra Oracle e SQL ServerDifferences between Oracle and SQL Server

  • Oracle presenta limiti di dimensione massima differenti per alcuni oggetti.Oracle has different maximum size limits for some objects. Gli oggetti creati nel database di pubblicazione Oracle devono rispettare i limiti di dimensione massima per gli oggetti corrispondenti in SQL ServerSQL Server.Any objects created in the Oracle publication database should adhere to the maximum size limits for the corresponding objects in SQL ServerSQL Server. Per altre informazioni sui limiti in SQL ServerSQL Server, vedere Specifiche di capacità massima per SQL Server.For information about limits in SQL ServerSQL Server, see Maximum Capacity Specifications for SQL Server.

  • Per impostazione predefinita, i nomi degli oggetti Oracle vengono creati in caratteri maiuscoli.By default Oracle object names are created in upper case. Specificare i nomi degli oggetti Oracle in caratteri maiuscoli durante la relativa pubblicazione mediante un server di distribuzione SQL ServerSQL Server , se nel database Oracle sono riportati con tali caratteri.Ensure that you supply the names of Oracle objects in upper case when publishing them through a SQL ServerSQL Server Distributor if they are upper case on the Oracle database. L'utilizzo di un formato di carattere errato per gli oggetti può generare un messaggio di errore che indica che non è stato possibile reperirli.Failure to specify the objects in the correct case may result in an error message indicating that the object cannot be found.

  • Il sottolinguaggio SQL di Oracle è leggermente diverso da quello di SQL ServerSQL Server. I filtri di riga devono essere scritti con una sintassi conforme a Oracle.Oracle has a slightly different SQL dialect from SQL ServerSQL Server; row filters should be written in Oracle-compliant syntax.

Considerazioni sugli oggetti di grandi dimensioniConsiderations for Large Objects

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.Large object (LOB) data is not stored in the article log table; updates to LOB data are always retrieved directly from the published table. Gli aggiornamenti vengono replicati in pubblicazioni transazionali solo se l'operazione che influisce sui dati LOB attiva il trigger di replica sulla tabella replicata.Updates are replicated in transactional publications only if the operation affecting the LOB fires the replication trigger on the replicated table. 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.Oracle triggers fire when rows containing LOBs are inserted or deleted; however updates to LOB columns do not fire triggers. 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.An update to a LOB column will be replicated immediately only if a non-LOB column of the same row is also updated in the same Oracle transaction. In caso contrario, la colonna LOB verrà aggiornata nel Sottoscrittore al successivo aggiornamento di una colonna non LOB nella stessa riga.If not, the LOB column will be refreshed at the Subscriber when the next update to a non-LOB column in the same row occurs. Verificare che questo comportamento sia accettabile per l'applicazione in uso.Ensure that this behavior is acceptable for your application.

Per replicare aggiornamenti di colonne LOB nelle pubblicazioni transazionali, prendere in considerazione una delle strategie seguenti durante la scrittura dell'applicazione:To replicate updates to LOB columns in transactional publications, consider one of the following strategies when writing the application:

  • Eliminare e reinserire le righe all'interno di una transazione anziché aggiornarle. Specificare il nuovo oggetto LOB durante il reinserimento della riga.Delete and reinsert the row(s) within a transaction instead of updating the row: specify the new LOB when re-inserting the row. Poiché le operazioni di eliminazione e inserimento attivano entrambe i trigger, la riga verrà replicata.Because delete and insert both fire triggers, the row will be replicated.

  • 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.Include a non-LOB column in the row update in addition to the LOB column, or update a non-LOB column of the row as part of the same Oracle transaction. In entrambi i casi, l'aggiornamento della colonna non LOB garantisce l'attivazione del trigger.In both cases, the update of the non-LOB column ensures that the trigger fires.

    Per ulteriori informazioni sugli oggetti LOB, vedere Data Type Mapping for Oracle Publishers.For more information about LOBs, see Data Type Mapping for Oracle Publishers.

Indici e vincoli univociUnique Indexes and Constraints

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.For both snapshot and transactional replication, columns contained in unique indexes and constraints (including primary key constraints) must adhere to certain restrictions. Se tali restrizioni vengono violate, il vincolo o l'indice non verrà replicato.If they do not adhere to these restrictions, the constraint or index is not replicated.

  • Il numero massimo di colonne consentite in un indice di SQL ServerSQL Server è pari a 16.The maximum number of columns allowed in an index on SQL ServerSQL Server is 16.

  • Tutte le colonne incluse in vincoli univoci devono contenere tipi di dati supportati.All columns included in unique constraints must have supported data types. Per altre informazioni sui tipi di dati, vedere Data Type Mapping for Oracle Publishers.For more information about data types, see Data Type Mapping for Oracle Publishers.

  • Tutte le colonne incluse in vincoli univoci devono essere pubblicate e non possono essere filtrate.All columns included in unique constraints must be published (they cannot be filtered).

  • Le colonne interessate da vincoli o indici univoci non devono essere null.Columns involved in unique constraints or indexes should not be null.

    È inoltre consigliabile considerare quanto segue:Also consider the following issues:

  • Oracle e SQL ServerSQL Server consentono di gestire i valori NULL in modo differente. In Oracle sono supportate più righe con valori NULL per le colonne per consentono la specifica di valori NULL e sono incluse in vincoli o indici univoci.Oracle and SQL ServerSQL Server treat NULL differently: Oracle permits multiple rows with NULL values for columns that allow NULL and are included in unique constraints or indexes. SQL ServerSQL Server consente di applicare l'univocità mediante il supporto di una sola riga con un valore NULL per la stessa colonna. enforces uniqueness by only permitting a single row with a NULL value for the same column. 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.You cannot publish a unique constraint or index that allows NULL because a constraint violation would occur on the Subscriber if the published table contains multiple rows with NULL values for any of the columns included in the index or constraint.

  • Durante la verifica dell'univocità, gli spazi vuoti finali in un campo vengono ignorati in SQL ServerSQL Server ma non in Oracle.When testing for uniqueness, trailing blanks in a field are ignored by SQL ServerSQL Server but not by Oracle.

    Come nella replica transazionale SQL ServerSQL Server , le tabelle delle pubblicazioni transazionali Oracle richiedono una chiave primaria che deve essere univoca in base alle regole specificate sopra.As in SQL ServerSQL Server transactional replication, tables in Oracle transactional publications require a primary key; the primary key must be unique based on the rules specified above. In caso contrario, non sarà possibile pubblicare la tabella per la replica transazionale.If the primary key does not adhere to the rules outlined in the previous bullets, the table cannot be published for transactional replication.

Differenze tra il server di pubblicazione Oracle e la replica transazionale standardDifferences between Oracle Publishing and Standard Transactional Replication

  • Un server di pubblicazione Oracle non può avere lo stesso nome del server di distribuzione SQL ServerSQL Server corrispondente, dei server di pubblicazione SQL ServerSQL Server che utilizzano il server di distribuzione o dei Sottoscrittori che ricevono la pubblicazione.An Oracle Publisher cannot have the same name as: its SQL ServerSQL Server Distributor; any of the SQL ServerSQL Server Publishers that use the Distributor; or any Subscribers that receive the publication. Le pubblicazioni gestite dallo stesso server di distribuzione devono avere un nome univoco.Publications serviced by the same Distributor must each have a unique name.

  • Una tabella pubblicata in una pubblicazione Oracle non può ricevere dati replicati.A table published in an Oracle publication cannot receive replicated data. 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.Therefore, Oracle publishing does not support: publications with immediate updating or queued updating subscriptions; or topologies in which publication tables also act as subscription tables, such as peer-to-peer and bidirectional replication.

  • Le relazioni tra chiave primaria e chiave esterna nel database Oracle non vengono replicate nei Sottoscrittori.Primary key to foreign key relationships in the Oracle database are not replicated to Subscribers. Tali relazioni vengono tuttavia mantenute tra i dati via via che le modifiche vengono recapitate.However, the relationships are maintained in the data as changes are delivered.

  • Le pubblicazioni transazionali standard supportano tabelle contenenti fino a 1000 colonne.Standard transactional publications support tables of up to 1000 columns. Le pubblicazioni transazionali Oracle supportano 995 colonne (la replica aggiunge cinque colonne a ogni tabella pubblicata).Oracle transactional publications support 995 columns (replication adds five columns to each published table).

  • 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.Collate clauses are added to the CREATE TABLE statements to enable case sensitive comparisons, which is important for primary keys and unique constraints. Questo comportamento viene controllato mediante l'opzione dello schema 0x1000 specificata con il parametro @schema_option di sp_addarticle (Transact-SQL).This behavior is controlled with the schema option 0x1000, which is specified with the @schema_option parameter of 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.If you use stored procedures to configure or maintain an Oracle Publisher, do not put the procedures inside an explicit transaction. Questa operazione non è supportata sul server collegato utilizzato per connettersi al server di pubblicazione Oracle.This is not supported over the linked server used to connect to the Oracle Publisher.

  • Se si crea una sottoscrizione pull in una pubblicazione Oracle mediante una procedura guidata, è necessario utilizzare la Creazione guidata nuova sottoscrizione fornita con SQL Server 2005SQL Server 2005 e versioni successive.If you create a pull subscription to an Oracle publication with a wizard, you must use the New Subscription Wizard supplied with SQL Server 2005SQL Server 2005 and later versions. Per le versioni precedenti di SQL ServerSQL Server, è tuttavia possibile utilizzare la stored procedure e le interfacce SQL-DMO per impostare le sottoscrizioni pull nelle pubblicazioni Oracle.For previous versions of SQL ServerSQL Server, you can, however, use the stored procedure and SQL-DMO interfaces to setup pull subscriptions to Oracle publications.

  • 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.If you use stored procedures to propagate changes to Subscribers (the default), be aware that the MCALL syntax is supported, but it has different behavior when the publication is from an Oracle Publisher. Generalmente MCALL include una bitmap in cui vengono illustrate le colonne che sono state aggiornate nel server di pubblicazione.Typically MCALL provides a bitmap that shows which columns were updated at the Publisher. Con una pubblicazione Oracle, la bitmap indica sempre che sono state aggiornate tutte le colonne.With an Oracle publication, the bitmap always shows that all columns were updated. Per altre informazioni sull'uso delle stored procedure, vedere Specificare la modalità di propagazione delle modifiche per gli articoli transazionali.For more information about using stored procedures, see Specify How Changes Are Propagated for Transactional Articles.

Supporto della replica transazionaleTransactional Replication Feature Support

  • Le pubblicazioni Oracle non supportano tutte le opzioni di schema supportate nelle pubblicazioni SQL Server.Oracle publications do not support all of the schema options that SQL Server publications support. Per altre informazioni sulle opzioni di schema, vedere sp_addarticle (Transact-SQL).For more information on schema options, see 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.Subscribers to Oracle publications cannot use immediate updating or queued updating subscriptions, or be nodes in a peer-to-peer or bidirectional topology.

  • I Sottoscrittori delle pubblicazioni Oracle non possono essere inizializzati automaticamente da un backup.Subscribers to Oracle publications cannot be automatically initialized from a backup.

  • SQL ServerSQL Server supporta due tipi di convalida: binaria e mediante il conteggio delle righe. supports two types of validation: binary and rowcount. I server di pubblicazione Oracle supportano la convalida mediante il conteggio delle righe.Oracle Publishers support rowcount validation. Per altre informazioni, vedere Convalidare i dati replicati.For more information, see Validate Replicated Data.

  • SQL ServerSQL Server include due formati di snapshot: in modalità bcp nativa e in modalità carattere. offers two snapshot formats: native bcp-mode and character-mode. I server di pubblicazione Oracle supportano gli snapshot in modalità carattere.Oracle Publishers support character mode snapshots.

  • Le modifiche dello schema delle tabelle Oracle pubblicate non sono supportate.Schema changes to published Oracle tables are not supported. Per apportare tali modifiche, eliminare innanzitutto la pubblicazione, inserire le modifiche e quindi ricreare la pubblicazione e le eventuali sottoscrizioni.To make schema changes, first drop the publication, make the changes, and then re-create the publication and any subscriptions.

    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.If the schema changes and the subsequent drop and re-creation of the publication and subscriptions are performed at a time when no activity is occurring on the published tables, you can specify the option 'replication support only' for the subscriptions. In questo modo sarà possibile sincronizzarle senza dover copiare uno snapshot in ogni Sottoscrittore.This allows them to be synchronized without having to copy a snapshot to each Subscriber. Per altre informazioni, vedere Initialize a Transactional Subscription Without a Snapshot.For more information, see Initialize a Transactional Subscription Without a Snapshot.

Modello di sicurezza della replicaReplication Security Model

Il modello di sicurezza per il server di pubblicazione Oracle è identico a quello per la replica transazionale standard, con le eccezioni seguenti:The security model for Oracle publishing is the same as the security model for standard transactional replication, with the following exceptions:

Vedere ancheSee Also

Considerazioni amministrative per i server di pubblicazione Oracle Administrative Considerations for Oracle Publishers
Configurare un server di pubblicazione Oracle Configure an Oracle Publisher
Oracle Publishing OverviewOracle Publishing Overview