Mapping dei tipi di dati per i server di pubblicazione Oracle

Si applica a:SQL Server

I tipi di dati Oracle e i tipi di dati di Microsoft SQL Server non corrispondono sempre esattamente. Se possibile, durante la pubblicazione di una tabella Oracle viene selezionato automaticamente il tipo di dati corrispondente. Nei casi in cui il mapping di un singolo tipo di dati non risulti chiaro, vengono forniti mapping di tipi di dati alternativi. Per informazioni sulla selezione di mapping alternativi, vedere la sezione "Specifica di mapping di tipi di dati alternativi" più avanti in questo argomento.

Nella tabella seguente viene illustrato il mapping dei tipi di dati per impostazione predefinita tra Oracle e SQL Server quando i dati vengono spostati dal server di pubblicazione Oracle al server di distribuzione DI SQL Server. La colonna Alternativi indica se sono disponibili mapping alternativi.

Tipo di dati Oracle Tipo di dati di SQL Server Alternative
BFILE VARBINARY(MAX)
BLOB VARBINARY(MAX)
CHAR([1-2000]) CHAR([1-2000])
CLOB VARCHAR(MAX)
DATE DATETIME
FLOAT FLOAT No
FLOAT([1-53]) FLOAT([1-53]) No
FLOAT([54-126]) FLOAT No
INT NUMERIC(38)
INTERVAL DATETIME
LONG VARCHAR(MAX)
LONG RAW IMMAGINE
NCHAR([1-1000]) NCHAR([1-1000]) No
NCLOB NVARCHAR(MAX)
NUMBER FLOAT
NUMBER([1-38]) NUMERIC([1-38]) No
NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38])
NVARCHAR2([1-2000]) NVARCHAR([1-2000]) No
RAW([1-2000]) VARBINARY([1-2000]) No
REAL FLOAT No
ROWID CHAR(18) No
TIMESTAMP DATETIME
TIMESTAMP(0-7) DATETIME
TIMESTAMP(8-9) DATETIME
TIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37)
TIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37) No
TIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37)
TIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37) No
UROWID CHAR(18) No
VARCHAR2([1-4000]) VARCHAR([1-4000])

Considerazioni sul mapping dei tipi di dati

Durante la replica di dati da un database Oracle, è opportuno considerare i problemi relativi ai tipi di dati riportati di seguito.

Tipi di dati non supportati

I tipi di dati seguenti non sono supportati e pertanto non è possibile replicare le colonne che li contengono:

  • Tipi di oggetto

  • Tipi XML

  • Matrici con dimensione variabile

  • Tabelle nidificate

  • Colonne che utilizzano REF

Tipo di dati DATE

Le date in SQL Server vanno da 1753 A.D. a 9999 A.D., mentre le date in Oracle vanno da 4712 B.C. a 4712 A.D. Se una colonna di tipo DATE contiene valori non compresi nell'intervallo per SQL Server, selezionare il tipo di dati alternativo per la colonna, ovvero VARCHAR(19).

Tipi FLOAT e NUMBER

La scala e la precisione specificate durante il mapping dei tipi di dati FLOAT e NUMBER dipende dalla scala e dalla precisione specificate per la colonna che utilizza il tipo di dati nel database Oracle. La precisione è il numero di cifre in un numero. La scala è il numero di cifre a destra della virgola decimale in un numero. Il numero 123,45, ad esempio, ha una precisione di 5 e una scala di 2.

Oracle consente di definire numeri con una scala maggiore della precisione, ad esempio NUMBER(4,5), ma SQL Server richiede che la precisione sia uguale o maggiore della scala. Per garantire che i dati non vengano troncati, se la scala è maggiore della precisione nel server di pubblicazione Oracle, la precisione viene impostata su un valore uguale a quello della scala quando si esegue il mapping del tipo di dati. Il mapping di NUMBER(4,5) sarebbe NUMERIC(5,5).

Nota

Se non si specifica una scala e una precisione per NUMBER, per impostazione predefinita SQL Server usa la scala massima (8) e la precisione (38). Per migliorare le prestazioni e le operazioni di archiviazione durante la replica dei dati, è consigliabile impostare una scala e una precisione specifiche in Oracle.

Tipi di oggetti di grandi dimensioni

Oracle supporta fino a 4 GB, mentre SQL Server supporta fino a 2 GB. I dati replicati superiori a 2 GB vengono troncati.

Se una tabella Oracle include una colonna BFILE, i dati della colonna vengono archiviati nel file system. All'account utente di amministrazione della replica deve essere concesso l'accesso alla directory in cui sono archiviati i dati mediante la sintassi seguente:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Per altre informazioni sui tipi di oggetti di grandi dimensioni, vedere la sezione "Considerazioni sugli oggetti di grandi dimensioni" in Considerazioni e limitazioni relative alla progettazione dei server di pubblicazione Oracle.

Specifica di mapping di tipi di dati alternativi

Generalmente, è consigliabile utilizzare il mapping del tipo di dati predefinito, ma per molti tipi di dati Oracle è possibile selezionarne uno da un set di mapping alternativi, anziché utilizzare quello predefinito. È possibile specificare mapping alternativi in due modi:

  • Mediante l'override del mapping predefinito per ogni singolo articolo, utilizzando le stored procedure o la Creazione guidata nuova pubblicazione.

  • Mediante una modifica globale del mapping predefinito per tutti gli articoli futuri utilizzando stored procedure (i mapping predefiniti non vengono modificati per gli articoli esistenti).

Per specificare mapping di tipi di dati alternativi, vedere Specifica dei mapping tra i tipi di dati di un server di pubblicazione Oracle.

Vedi anche

Configurare un server di pubblicazione Oracle
Considerazioni e limitazioni relative alla progettazione dei server di pubblicazione Oracle
Panoramica della pubblicazione Oracle