Precisão e Escala do Número de Ponto Fixo
Bancos de dados diferentes suportam precisão ou escala máximas diferentes para os tipos de número de ponto fixo.
Se o tipo de número de ponto fixo de origem suportar valores de escala ou precisão maiores do que o destino e um possível truncamento de dados for previsto para uma coluna que não seja de CHAVE, uma mensagem de aviso será exibida e um tipo de dados de string adequado será usado no destino para evitar o truncamento de dados. No entanto, se o truncamento de dados estiver previsto para uma coluna de CHAVE do tipo de número de ponto fixo, o Replicat será interrompido com a mensagem de erro correspondente. Você terá que escolher AUTOSCHEMAOPTIONS TYPEMAP ou usar AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION para continuar.
Os cenários a seguir descrevem o uso destas opções:
-
Se o truncamento de dados for previsto com uma opção especificada pelo usuário (
AUTOSCHEMAOPTIONS TYPEMAPouAUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION), os dados serão truncados com uma mensagem de aviso correspondente.Por exemplo:
MySQL tem uma precisão decimal máxima de 65, mas o Oracle é 38. Portanto, o
DECIMAL(65,10)será mapeado paraVARCHAR2na Oracle.A escala de destino poderá ser ajustada automaticamente mantendo a proporção de precisão/escala se a escala de origem for maior que a precisão de destino.
Por exemplo:
Com o
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION, oDECIMAL(65,40)do MySQL será mapeado paraNUMBER(38,23)na Oracle e oDECIMAL(65,64)do MySQL será mapeado paraNUMBER(38,37)na Oracle. -
O tipo
NUMBERsem qualquer precisão e escala explícitas é tratado da seguinte maneira:O tipo
NUMBERsó é suportado no Oracle e no TimesTen. Na versão de visualização, TimesTen não é suportado. Se o tipo de dados de origem forNUMBER(sem qualquer precisão ou escala explícita) e se o banco de dados de destino também suportar o tipo de dadosNUMBER, o tipoNUMBERde destino será usado no destino.Se o banco de dados de destino não suportar o tipo de dados
NUMBER, o tipo de string adequado, comoVARCHARouVARCHAR2, será usado no destino.Exemplo:
NUMBER(5,-2)é mapeado paraDECIMAL(7,0)NUMBER(1,2)é mapeado paraDECIMAL(2,2) -
Se a precisão ou a escala usada na coluna de origem for maior do que o que pode ser suportado no destino e se a coluna correspondente fizer parte da chave, um tipo de string poderá ser usado no destino para evitar o truncamento de dados no destino, o que pode derrotar a propriedade de exclusividade na tabela de destino. Isso pode ser controlado por um parâmetro
AUTOSCHEMAOPTIONS.