Поделиться через


Сопоставление типов данных для издателей Oracle

Применимо к:SQL Server

Типы данных Oracle и типы данных Microsoft SQL Server не всегда совпадают точно. Там, где это возможно, выбор подходящего типа данных при публикации таблицы Oracle осуществляется автоматически. В случаях, когда выбор однозначного соответствия типов данных не очевиден, предлагаются альтернативные сопоставления типов данных. Сведения о выборе альтернативных соответствий типов данных см. ниже в разделе «Указание альтернативных сопоставлений типов данных».

В следующей таблице показано, как типы данных сопоставляются по умолчанию между Oracle и SQL Server при перемещении данных с издателя Oracle на распространитель SQL Server. В столбце «Альтернатива» показано, допустимы ли альтернативные соответствия.

Тип данных Oracle Тип данных SQL Server Альтернативные варианты
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 ИЗОБРАЖЕНИЕ Да
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]) Да

Вопросы сопоставления типов данных

При репликации данных из базы данных Oracle нужно помнить о следующих особенностях типов данных.

Неподдерживаемые типы данных

Следующие типы данных не поддерживаются; столбцы, имеющие эти типы, невозможно реплицировать.

  • Типы объектов

  • Типы XML

  • Типы Varray

  • Вложенные таблицы;

  • Столбцы, использующие REF

Тип данных DATE

Даты в SQL Server варьируются от 1753 до 9999 A.D., тогда как даты в Oracle варьируются от 4712 B.C до 4712 A.D. Если столбец типа DATE содержит значения, недоступные для SQL Server, выберите альтернативный тип данных для столбца, который является VARCHAR(19).

Типы FLOAT и NUMBER

Масштаб и точность, задаваемые при сопоставлении типов данных FLOAT и NUMBER, зависят от масштаба и точности, указанных для столбца, использующего этот тип данных в базе данных Oracle. Точность представляет собой количество цифр в числе. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Например, у числа 123,45 точность равна 5, а масштаб равен 2.

Oracle позволяет определять числа с масштабом, превышающим точность, например NU МБ ER(4,5), но SQL Server требует, чтобы точность была равна или больше масштабу. Чтобы исключить усечение данных, когда в данных издателя Oracle масштаб больше, чем точность, при преобразовании данных точность приравнивается к масштабу: тип данных NUMBER(4,5) был бы преобразован в NUMERIC(5,5).

Примечание.

Если не указать масштаб и точность для NU МБ ER, SQL Server по умолчанию использует максимальный масштаб (8) и точность (38). Для оптимизации хранения данных и производительности при репликации данных рекомендуется установить специальные значения масштаба и точности в Oracle.

Типы больших объектов

Oracle поддерживает до 4 гигабайт (ГБ), в то время как SQL Server поддерживает до 2 ГБ. Реплицируемые данные свыше 2 ГБ усекаются.

Если таблица Oracle включает столбец типа BFILE, данные для этого столбца хранятся в файловой системе. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. С этой целью должно использоваться следующее синтаксическое выражение:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Дополнительные сведения о типах больших объектов см. в разделе с рекомендациями по большим объектам статьи Рекомендации по структуре и ограничения для издателей Oracle.

Указание альтернативных сопоставлений типов данных

Обычно целесообразно использовать сопоставление типов данных по умолчанию, но для многих типов данных Oracle вместо сопоставления по умолчанию можно выбрать тип данных из набора альтернативных вариантов. Существует два способа указания альтернативных сопоставлений:

  • Переопределяйте значения по умолчанию для каждой статьи отдельно, используя хранимые процедуры или мастер создания публикаций.

  • Глобальная замена значений по умолчанию для всех последующих статей с помощью хранимых процедур (значения по умолчанию для существующих статей не изменяются).

Чтобы указать альтернативные сопоставления типов данных, см. раздел Указание сопоставления типов данных для издателя Oracle.

См. также

Настройка издателя Oracle
Рассмотрение структуры и ограничений издателей Oracle
Обзор публикации Oracle