Compartilhar via


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

A publicação de um banco de dados Oracle foi projetada para funcionar quase idêntica à publicação de um banco de dados do Microsoft SQL Server. No entanto, você deve estar ciente das seguintes limitações e problemas:

  • A opção Do Oracle Gateway fornece melhor desempenho em relação à opção Oracle Complete; no entanto, essa opção não pode ser usada para publicar a mesma tabela em várias publicações transacionais. Uma tabela pode aparecer em no máximo uma publicação transacional e em qualquer número de publicações de instantâneo. Se você precisar publicar a mesma tabela em várias publicações transacionais, escolha a opção Oracle Complete.

  • A replicação dá suporte à publicação de tabelas, índices e exibições materializadas. Outros objetos não são replicados.

  • Há algumas pequenas diferenças entre o armazenamento e o processamento de dados em bancos de dados Oracle e SQL Server que afetam a replicação.

  • Há várias diferenças na forma como os recursos de replicação transacional têm suporte ao usar um Publicador Oracle.

Suporte para publicação de objetos da Oracle

A replicação dá suporte à replicação dos seguintes objetos de bancos de dados Oracle:

  • Tabelas

  • Tabelas organizadas por índice

  • Índices

  • Visões materializadas são replicadas como tabelas

O seguinte pode estar presente em tabelas publicadas, mas não são replicados:

  • Índices baseados em domínio

  • Índices baseados em função

  • Configurações padrão

  • Verificar restrições

  • Chaves estrangeiras

  • Opções de armazenamento (tablespaces, clusters etc.)

Os seguintes objetos não podem ser replicados:

  • Tabelas aninhadas

  • Visões

  • Pacotes, corpos de pacote, procedimentos e gatilhos

  • Filas

  • Sequências

  • Sinônimos

Para obter informações sobre tipos de dados com suporte, consulte Mapeamento de Tipo de Dados para Editores Oracle.

Diferenças entre o Oracle e o SQL Server

  • O Oracle tem limites de tamanho máximo diferentes para alguns objetos. Todos os objetos criados no banco de dados de publicação Oracle devem seguir os limites máximos de tamanho para os objetos correspondentes no SQL Server. Para obter informações sobre limites no SQL Server, consulte As Especificações máximas de capacidade do SQL Server.

  • Por padrão, os nomes de objetos Oracle são criados em maiúsculas. Certifique-se de fornecer os nomes dos objetos Oracle em maiúsculas ao publicá-los por meio de um Distribuidor do SQL Server se eles estiverem em maiúsculas no banco de dados Oracle. A falha ao especificar os objetos no caso correto pode resultar em uma mensagem de erro indicando que o objeto não pode ser encontrado.

  • O Oracle tem um dialeto SQL ligeiramente diferente do SQL Server; Os filtros de linha devem ser gravados na sintaxe compatível com Oracle.

Considerações sobre objetos grandes

Os dados LOB (objeto grande) não são armazenados na tabela de log do artigo; as atualizações dos dados LOB são sempre recuperadas diretamente da tabela publicada. As atualizações serão replicadas em publicações transacionais somente se a operação que afeta o LOB disparar o gatilho de replicação na tabela replicada. O Oracle dispara quando linhas que contêm LOBs são inseridas ou excluídas; no entanto, as atualizações para colunas LOB não disparam gatilhos. Uma atualização para uma coluna LOB será replicada imediatamente somente se uma coluna não LOB da mesma linha também for atualizada na mesma transação Oracle. Caso contrário, a coluna LOB será atualizada no Assinante quando ocorrer a próxima atualização para uma coluna não LOB na mesma linha. Verifique se esse comportamento é aceitável para seu aplicativo.

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

  • Exclua e reinsira as linhas dentro de uma transação em vez de atualizar a linha: especifique o novo LOB ao inserir novamente a linha. Como excluir e inserir ambos os gatilhos de fogo, a linha será replicada.

  • Inclua uma coluna não LOB na atualização de linha, além da coluna LOB. Alternativamente, atualize uma coluna não LOB da linha como parte da mesma transação no Oracle. Em ambos os casos, a atualização da coluna não LOB garante que o gatilho seja acionado.

Para obter mais informações sobre LOBs, consulte Mapeamento de Tipo de Dados para Editores Oracle.

Índices e restrições exclusivos

Para a replicação instantânea e transacional, as colunas contidas em índices exclusivos e restrições (incluindo restrições de chave primária) devem aderir a certas limitações. Se eles não aderirem a essas restrições, a restrição ou índice não será replicado.

  • O número máximo de colunas permitidas em um índice no SQL Server é 16.

  • Todas as colunas incluídas em restrições exclusivas devem ter tipos de dados compatíveis. Para obter mais informações sobre tipos de dados, consulte Mapeamento de Tipo de Dados para Editores Oracle.

  • Todas as colunas incluídas em restrições exclusivas devem ser publicadas (elas não podem ser filtradas).

  • As colunas envolvidas em restrições ou índices exclusivos não devem ser nulas.

Considere também os seguintes problemas:

  • Oracle e SQL Server tratam NULL de forma diferente: o Oracle permite várias linhas com valores NULL para colunas que permitem NULL e são incluídas em restrições ou índices exclusivos. O SQL Server impõe a exclusividade permitindo apenas uma única linha com um valor NULL para a mesma coluna. Não é possível publicar uma restrição ou índice exclusivo que permita NULL porque uma violação de restrição ocorreria no Assinante se a tabela publicada contivesse várias linhas com valores NULL para qualquer uma das colunas incluídas no índice ou restrição.

  • Ao testar para unicidade, os espaços em branco no final de um campo são ignorados pelo SQL Server, mas não pelo Oracle.

Assim como na replicação transacional do SQL Server, as tabelas em publicações transacionais do Oracle exigem uma chave primária; a chave primária deve ser exclusiva com base nas regras especificadas acima. Se a chave primária não aderir às regras descritas nos tópicos anteriores, a tabela não poderá ser publicada para replicação transacional.

Diferenças entre Publicação da Oracle e Replicação Transacional Padrão

  • Um Publicador Oracle não pode ter o mesmo nome que: seu Distribuidor do SQL Server; qualquer um dos Publicador do SQL Server que usam o Distribuidor; ou todos os Assinantes que recebem a publicação. As publicações atendidas pelo mesmo Distribuidor devem ter um nome exclusivo.

  • Uma tabela publicada em uma publicação oracle não pode receber dados replicados. Portanto, a publicação da Oracle não dá suporte a: publicações com assinaturas de atualização imediata ou de atualização na fila; ou topologias nas quais as tabelas de publicação também atuam como tabelas de assinatura, como replicação entre pares e bidirecional.

  • Relações de chave primária para chave estrangeira no banco de dados Oracle não são replicadas para assinantes. No entanto, as relações são mantidas nos dados à medida que as alterações são entregues.

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

  • As cláusulas collate são adicionadas às instruções CREATE TABLE para habilitar comparações sensíveis a maiúsculas e minúsculas, o que é importante para chaves primárias e restrições exclusivas. Esse comportamento é controlado com a opção de esquema 0x1000, que é especificada com o parâmetro @schema_option de sp_addarticle (Transact-SQL).

  • Se você usar procedimentos armazenados para configurar ou manter um Publicador Oracle, não coloque os procedimentos dentro de uma transação explícita. Não há suporte para isso no servidor vinculado usado para se conectar ao Publicador Oracle.

  • Se você criar uma subscrição pull para uma publicação Oracle utilizando um assistente, deverá usar o Assistente para Nova Subscrição fornecido com o SQL Server 2005 e versões posteriores. Para versões anteriores do SQL Server, você pode usar, no entanto, o procedimento armazenado e as interfaces SQL-DMO para configurar assinaturas pull para publicações Oracle.

  • Se você usar procedimentos armazenados para propagar alterações para Assinantes (o padrão), lembre-se de que a sintaxe MCALL tem suporte, mas tem um comportamento diferente quando a publicação é de um Publicador Oracle. Normalmente, o MCALL fornece um bitmap que mostra quais colunas foram atualizadas no Publicador. Com uma publicação da Oracle, o bitmap sempre mostra que todas as colunas foram atualizadas. Para obter mais informações sobre como usar procedimentos armazenados, consulte Especificar como as alterações são propagadas para artigos transacionais.

Suporte a recursos de replicação transacional

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

  • Os assinantes de publicações Oracle não podem usar assinaturas de atualização imediata ou atualização em fila, ou ser parte de uma topologia ponto a ponto ou bidirecional.

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

  • O SQL Server dá suporte a dois tipos de validação: binário e rowcount. O Oracle Publishers dá suporte à validação de contagem de linhas. Para obter mais informações, consulte Validar Dados Replicados.

  • O SQL Server oferece dois formatos de instantâneo: modo bcp nativo e modo de caractere. Os Editores Oracle dão suporte a instantâneos de modo de caractere.

  • Não há suporte para alterações de esquema em tabelas Oracle publicadas. Para fazer alterações de esquema, primeiro exclua a publicação, faça as alterações e, em seguida, recrie a publicação e todas as inscrições.

    Observação

    Se o esquema for alterado e a posterior exclusão e recriação da publicação e assinaturas forem executadas em um momento em que nenhuma atividade estiver ocorrendo nas tabelas publicadas, você poderá especificar a opção "somente suporte de replicação" para as assinaturas. Isso permite que eles sejam sincronizados sem precisar copiar uma captura de imagem para cada Assinante. Para mais informações, consulte Inicializar uma assinatura transacional sem um instantâneo.

Modelo de segurança de replicação

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

Para obter mais informações sobre segurança de replicação, consulte a Segurança de Replicação do SQL Server.

Consulte Também

Considerações administrativas para editores Oracle
Configurar um Publicador Oracle
Visão geral da publicação do Oracle