Mapping dei tipi di dati per i server di pubblicazione OracleData Type Mapping for Oracle Publishers

I tipi di dati Oracle e i tipi di dati MicrosoftMicrosoft SQL ServerSQL Server non sempre corrispondono in modo preciso.Oracle data types and MicrosoftMicrosoft SQL ServerSQL Server data types do not always match exactly. Se possibile, durante la pubblicazione di una tabella Oracle viene selezionato automaticamente il tipo di dati corrispondente.Where possible, the matching data type is selected automatically when publishing an Oracle table. Nei casi in cui il mapping di un singolo tipo di dati non risulti chiaro, vengono forniti mapping di tipi di dati alternativi.In cases that a single data type mapping is not clear, alternative data type mappings are provided. Per informazioni sulla selezione di mapping alternativi, vedere la sezione "Specifica di mapping di tipi di dati alternativi" più avanti in questo argomento.For information about how to select alternative mappings, see the "Specifying Alternative Data Type Mappings" section later in this topic.

Nella tabella seguente viene illustrato il mapping predefinito tra i tipi di dati Oracle e SQL ServerSQL Server quando i dati del server di pubblicazione Oracle vengono spostati nel server di distribuzione SQL ServerSQL Server .The following table shows how data types are mapped by default between Oracle and SQL ServerSQL Server when data is moved from the Oracle Publisher to the SQL ServerSQL Server Distributor. La colonna Alternativi indica se sono disponibili mapping alternativi.The Alternatives column indicates whether alternative mappings are available.

Tipo di dati OracleOracle data type Tipo di dati di SQL ServerSQL Server data type AlternativiAlternatives
BFILEBFILE VARBINARY(MAX)VARBINARY(MAX) Yes
BLOBBLOB VARBINARY(MAX)VARBINARY(MAX) Yes
CHAR([1-2000])CHAR([1-2000]) CHAR([1-2000])CHAR([1-2000]) Yes
CLOBCLOB VARCHAR(MAX)VARCHAR(MAX) Yes
DATEDATE DATETIMEDATETIME Yes
FLOATFLOAT FLOATFLOAT NoNo
FLOAT([1-53])FLOAT([1-53]) FLOAT([1-53])FLOAT([1-53]) NoNo
FLOAT([54-126])FLOAT([54-126]) FLOATFLOAT NoNo
INTINT NUMERIC(38)NUMERIC(38) Yes
INTERVALINTERVAL DATETIMEDATETIME Yes
LONGLONG VARCHAR(MAX)VARCHAR(MAX) Yes
LONG RAWLONG RAW IMAGEIMAGE Yes
NCHAR([1-1000])NCHAR([1-1000]) NCHAR([1-1000])NCHAR([1-1000]) NoNo
NCLOBNCLOB NVARCHAR(MAX)NVARCHAR(MAX) Yes
NUMBERNUMBER FLOATFLOAT Yes
NUMBER([1-38])NUMBER([1-38]) NUMERIC([1-38])NUMERIC([1-38]) NoNo
NUMBER([0-38],[1-38])NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38])NUMERIC([0-38],[1-38]) Yes
NVARCHAR2([1-2000])NVARCHAR2([1-2000]) NVARCHAR([1-2000])NVARCHAR([1-2000]) NoNo
RAW([1-2000])RAW([1-2000]) VARBINARY([1-2000])VARBINARY([1-2000]) NoNo
REALREAL FLOATFLOAT NoNo
ROWIDROWID CHAR(18)CHAR(18) NoNo
TIMESTAMPTIMESTAMP DATETIMEDATETIME Yes
TIMESTAMP(0-7)TIMESTAMP(0-7) DATETIMEDATETIME Yes
TIMESTAMP(8-9)TIMESTAMP(8-9) DATETIMEDATETIME Yes
TIMESTAMP(0-7) WITH TIME ZONETIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37)VARCHAR(37) Yes
TIMESTAMP(8-9) WITH TIME ZONETIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37)VARCHAR(37) NoNo
TIMESTAMP(0-7) WITH LOCAL TIME ZONETIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37)VARCHAR(37) Yes
TIMESTAMP(8-9) WITH LOCAL TIME ZONETIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37)VARCHAR(37) NoNo
UROWIDUROWID CHAR(18)CHAR(18) NoNo
VARCHAR2([1-4000])VARCHAR2([1-4000]) VARCHAR([1-4000])VARCHAR([1-4000]) Yes

Considerazioni sul mapping dei tipi di datiConsiderations for Data Type Mapping

Durante la replica di dati da un database Oracle, è opportuno considerare i problemi relativi ai tipi di dati riportati di seguito.Keep the following data type issues in mind when replicating data from an Oracle database.

Tipi di dati non supportatiUnsupported Data Types

I tipi di dati seguenti non sono supportati e pertanto non è possibile replicare le colonne che li contengono:The following data types are not supported; columns that have these types cannot be replicated:

  • Tipi di oggettiObject types

  • Tipi XMLXML types

  • Matrici con dimensione variabileVarrays

  • Tabelle nidificateNested tables

  • Colonne che utilizzano REFColumns that use REF

Tipo di dati DATEThe DATE Data Type

Le date in SQL ServerSQL Server sono comprese nell'intervallo dal 1753 D.C.Dates in SQL ServerSQL Server range from 1753 A.D. al 9999 D.C., mentre le date in Oracle sono comprese nell'intervallo dal 4712 A.C.to 9999 A.D., whereas dates in Oracle range from 4712 B.C. al 4712 A.C.to 4712 A.D. Se una colonna di tipo DATE contiene valori non compresi nell'intervallo di SQL Server, selezionare il tipo di dati alternativo per la colonna, ovvero VARCHAR(19).If a column of type DATE contains values that are out of range for SQL Server, select the alternative data type for the column, which is VARCHAR(19).

Tipi FLOAT e NUMBERFLOAT and NUMBER Types

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.The scale and precision specified during the mapping of FLOAT and NUMBER data types depends upon the scale and precision specified for the column using the data type in the Oracle database. La precisione è il numero di cifre in un numero.Precision is the number of digits in a number. La scala è il numero di cifre a destra della virgola decimale in un numero.Scale is the number of digits to the right of the decimal point in a number. Il numero 123,45, ad esempio, ha una precisione di 5 e una scala di 2.For example, the number 123.45 has a precision of 5 and a scale of 2.

In Oracle è possibile definire i numeri con una scala maggiore della precisione, ad esempio NUMBER(4,5), mentre in SQL ServerSQL Server la precisione deve essere uguale o maggiore della scala.Oracle allows numbers to be defined with a scale greater than the precision, such as NUMBER(4,5), but SQL ServerSQL Server requires the precision to be equal to or greater than the scale. 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).To ensure there is no data truncation, if the scale is greater than the precision at the Oracle Publisher, the precision is set equal to the scale when the data type is mapped: NUMBER(4,5) would be mapped as NUMERIC(5,5).

Nota

Se non si specifica una scala e una precisione per NUMBER, in SQL ServerSQL Server vengono automaticamente utilizzate la scala massima (8) e la precisione massima (38).If you do not specify a scale and precision for NUMBER, SQL ServerSQL Server defaults to using the maximum scale (8) and precision (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.We recommend that you set a specific scale and precision in Oracle for better storage and performance when the data is replicated.

Tipi di oggetti di grandi dimensioniLarge Object Types

Oracle supporta fino a 4 GB, mentre SQL Server supporta fino a 2 GB.Oracle supports up to 4 gigabytes (GB), whereas SQL Server supports up to 2 GB. I dati replicati superiori a 2 GB vengono troncati.Data replicated above 2 GB is truncated.

Se una tabella Oracle include una colonna BFILE, i dati della colonna vengono archiviati nel file system.If an Oracle table includes a BFILE column, the data for the column is stored in the 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:The replication administrative user account must be granted access to the directory in which the data is stored using the following syntax:

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.For more information about large objects types, see the section "Considerations for Large Objects" in Design Considerations and Limitations for Oracle Publishers.

Specifica di mapping di tipi di dati alternativiSpecifying Alternative Data Type Mappings

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.Typically, the default data type mapping is appropriate, but for many Oracle data types, you can select a data type mapping from a set of alternative mappings, rather than using the default. È possibile specificare mapping alternativi in due modi:There are two ways to specify alternative mappings:

  • Mediante l'override del mapping predefinito per ogni singolo articolo, utilizzando le stored procedure o la Creazione guidata nuova pubblicazione.Override the default on a per-article basis using stored procedures or the New Publication Wizard.

  • 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).Globally change the default for all future articles using stored procedures (defaults are not changed for existing articles).

    Per specificare mapping di tipi di dati alternativi, vedere Specify Data Type Mappings for an Oracle Publisher.To specify alternative data type mappings, see Specify Data Type Mappings for an Oracle Publisher.

Vedere ancheSee Also

Configurare un server di pubblicazione Oracle Configure an Oracle Publisher
Considerazioni e limitazioni relative alla progettazione dei server di pubblicazione Oracle Design Considerations and Limitations for Oracle Publishers
Oracle Publishing Overview Oracle Publishing Overview