Considerações e limitações de design para editoras Oracle

Aplica-se a:SQL Server

Publicar a partir de uma base de dados Oracle funciona quase da mesma forma que publicar a partir de uma base de dados base de dados do Microsoft SQL Server. No entanto, esteja ciente das seguintes limitações e questões:

  • A opção Oracle Gateway oferece melhor desempenho do que a opção Oracle Complete. No entanto, não pode usar a opção Oracle Gateway para publicar a mesma tabela em múltiplas publicações transacionais. Uma tabela pode aparecer apenas numa publicação transacional, mas pode aparecer em qualquer número de publicações de instantâneo. Se precisar de publicar a mesma tabela em várias publicações transacionais, escolha a opção Oracle Complete.

  • A replicação suporta a publicação de tabelas, índices e vistas materializadas. Não replica outros objetos.

  • Algumas pequenas diferenças entre o armazenamento e processamento de dados nas bases de dados Oracle e SQL Server afetam a replicação.

  • Existem diferenças na forma como as funcionalidades de replicação transacional são suportadas quando se utiliza um Oracle Publisher.

Suporte para publicação de objetos da Oracle

A replicação suporta a replicação dos seguintes objetos a partir das bases de dados Oracle:

  • Tables

  • Tabelas organizadas por índice

  • Indexes

  • Vistas materializadas (replicadas como tabelas)

Os seguintes objetos podem estar presentes em tabelas publicadas, mas não são replicados:

  • Índices baseados em domínios

  • Índices baseados em funções

  • Defaults

  • Verificar restrições

  • Chaves estrangeiras

  • Opções de armazenamento (espaços de mesas, clusters, e assim por diante)

Os seguintes objetos não podem ser replicados:

  • Tabelas aninhadas

  • Views

  • Pacotes, corpos de pacotes, procedimentos e gatilhos

  • Queues

  • Sequences

  • Synonyms

Para informações sobre tipos de dados suportados, consulte Data Type Mapping for Oracle Publishers.

Diferenças entre Oracle e SQL Server

  • A Oracle tem limites máximos de tamanho diferentes para alguns objetos. Quaisquer objetos que criar na base de dados de publicações Oracle devem cumprir os limites máximos de tamanho para os objetos correspondentes no SQL Server. Para informações sobre limites no SQL Server, consulte Especificações de Capacidade Máxima para SQL Server.

  • Por defeito, a Oracle cria nomes de objetos em maiúsculas. Certifique-se de que fornece os nomes dos objetos Oracle em maiúsculas ao publicá-los através de um SQL Server Distributor, caso estejam em maiúsculas na base de dados Oracle. A falha em especificar os objetos no caso correto pode resultar numa mensagem de erro a indicar que o objeto não pode ser encontrado.

  • A Oracle utiliza um dialeto SQL ligeiramente diferente do SQL Server; escreve filtros de linha em sintaxe compatível com a Oracle.

Considerações para objetos grandes

A tabela de registos do artigo não armazena dados de objetos grandes (LOB). As atualizações dos dados LOB são sempre recuperadas diretamente da tabela publicada. As atualizações são replicadas em publicações transacionais apenas se operações que afetam o LOB acionarem o gatilho de replicação na tabela replicada. Os gatilhos Oracle disparam quando linhas contendo LOBs são inseridas ou eliminadas. No entanto, as atualizações das colunas LOB não acionam gatilhos. Uma atualização de uma coluna LOB é replicada imediatamente apenas se uma coluna não-LOB da mesma linha também for atualizada na mesma transação Oracle. Caso contrário, a coluna LOB é atualizada no subscritor aquando da atualização seguinte de uma coluna não LOB na mesma linha. Certifique-se de que este comportamento é aceitável para a sua candidatura.

Para replicar atualizações das colunas LOB em publicações transacionais, considere uma das seguintes estratégias ao escrever a aplicação:

  • Elimine e insira novamente as linhas dentro de uma transação em vez de atualizar a linha: especifique o novo LOB ao inserir novamente a linha. Como eliminar e inserir ambos os gatilhos de disparo, a linha é replicada.

  • Incluir uma coluna que não seja LOB na atualização da linha para além da coluna LOB, ou atualizar uma coluna que não seja LOB da linha como parte da mesma transação Oracle. Em ambos os casos, a atualização da coluna não-LOB assegura a ativação do gatilho.

Para mais informações sobre LOBs, consulte Data Type Mapping for Oracle Publishers.

Índices e restrições únicas

Para replicação instantânea e transacional, as colunas em índices e restrições únicas (incluindo restrições de chave primária) devem seguir certas restrições. Se não cumprirem estas restrições, a restrição ou o índice não é replicado.

  • Pode incluir até 16 colunas num índice no SQL Server.

  • Todas as colunas em restrições únicas devem ter tipos de dados suportados. Para mais informações sobre tipos de dados, consulte Data Type Mapping for Oracle Publishers.

  • Tens de publicar todas as colunas com restrições únicas (não as podes filtrar).

  • Colunas em restrições ou índices únicos não devem ser nulas.

Considere também as seguintes questões:

  • O Oracle e o SQL Server tratam o NULL de forma diferente: O Oracle permite múltiplas linhas com valores NULL para colunas que permitem NULL e estão incluídas em restrições ou índices únicos. O SQL Server impõe a unicidade permitindo apenas uma linha com um valor NULL para a mesma coluna. Não pode publicar uma restrição ou índice único que permita NULL porque ocorreria uma violação de restrição no Subscritor se a tabela publicada contiver várias linhas com valores NULL para qualquer uma das colunas incluídas no índice ou restrição.

  • Ao testar a unicidade, o SQL Server ignora os espaços em branco de um campo, mas o Oracle não.

Tal como na replicação transacional do SQL Server, as tabelas em publicações transacionais Oracle requerem uma chave primária. A chave primária deve ser única com base nas regras especificadas anteriormente. Se a chave primária não seguir estas regras, não pode publicar a tabela para replicação transacional.

Diferenças entre a Oracle Publishing e a Standard Transactional Replication

  • Um Editor Oracle não pode ter o mesmo nome que: o seu Distribuidor SQL Server; qualquer um dos editores SQL Server que utilizam o Distribuidor; ou quaisquer subscritores que recebam a publicação. As publicações servidas pelo mesmo Distribuidor devem ter cada uma um nome único.

  • Uma tabela publicada numa publicação Oracle não pode receber dados replicados. Portanto, a Oracle publishing não suporta: publicações com assinaturas de atualização imediata ou assinaturas de atualização em fila; ou topologias em que tabelas de publicação também funcionam como tabelas de subscrição, como peer-to-peer e replicação bidirecional.

  • As relações de chave primária para chaves estrangeiras na base de dados Oracle não são replicadas para os Subscritores. No entanto, as relações mantêm-se nos dados à medida que as alterações são entregues.

  • As publicações transacionais padrão suportam tabelas de até 1000 colunas. As publicações transacionais Oracle suportam 995 colunas (a replicação adiciona cinco colunas a cada tabela publicada).

  • As cláusulas COLLATE são adicionadas nas instruções CREATE TABLE para permitir comparações que distinguem maiúsculas de minúsculas, o que é importante para chaves primárias e restrições de unicidade. Este comportamento é controlado com a opção de esquema 0x1000, que é especificada com o @schema_option parâmetro de sp_addarticle (Transact-SQL).

  • Se usar procedimentos armazenados para configurar ou manter um Oracle Publisher, não coloque os procedimentos dentro de uma transação explícita. Isto não é suportado através do servidor ligado usado para se ligar ao Oracle Publisher.

  • Se criar uma subscrição pull para uma publicação Oracle com um assistente, deve utilizar o Assistente de Nova Subscrição fornecido com o SQL Server 2005 (9.x) e versões posteriores. Para versões anteriores do SQL Server, pode, no entanto, usar as interfaces de procedimento armazenado e SQL-DMO para configurar subscrições pull para publicações da Oracle.

  • Se usar procedimentos armazenados para propagar alterações aos Subscritores (o padrão), tenha em atenção que a sintaxe MCALL é suportada, mas tem um comportamento diferente quando a publicação é de um Oracle Publisher. Normalmente, o MCALL fornece um bitmap que mostra quais as colunas que foram atualizadas no Publisher. Numa publicação Oracle, o bitmap mostra sempre que todas as colunas foram atualizadas. Para mais informações sobre o uso de procedimentos armazenados, consulte Especificar Como as Alterações São Propagadas para Artigos Transacionais.

Suporte a funcionalidades de replicação transacional

  • As publicações Oracle não suportam todas as opções de esquema que as publicações do SQL Server suportam. Para mais informações sobre opções de esquema, consulte sp_addarticle (Transact-SQL).

  • Os subscritores de publicações Oracle não podem usar assinaturas de atualização imediata ou de atualização em fila de espera, nem ser nós numa topologia ponto a ponto ou bidirecional.

  • Os assinantes das publicações Oracle não podem ser inicializados automaticamente a partir de um backup.

  • O SQL Server suporta dois tipos de validação: binária e contagem de linhas. A Oracle Publishers suporta validação de contagem de linhas. Para mais informações, consulte Validar Dados Replicados.

  • O SQL Server oferece dois formatos de snapshot: modo nativo bcp e modo de caracteres. A Oracle Publishers suporta snapshots em modo de personagem.

  • Alterações de esquema em tabelas Oracle publicadas não são suportadas. Para fazer alterações no esquema, primeiro retire a publicação, faça as alterações e depois recrie a publicação e quaisquer subscrições.

    Observação

    Se fizer alterações ao esquema e eliminar e recriar a publicação e as subscrições quando não estiver a ocorrer qualquer atividade nas tabelas publicadas, pode especificar a opção replication support only para as subscrições. Esta opção sincroniza-os sem copiar um snapshot para cada Assinante. Para obter mais informações, consulte Inicializar uma subscrição transacional sem instantâneo.

Modelo de segurança de replicação

O modelo de segurança de replicação para publicação Oracle é o mesmo que o modelo de segurança para replicação transacional padrão, com as seguintes exceções:

Para mais informações sobre a segurança da replicação, consulte Visualizar e modificar as definições de segurança da replicação.