Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
A publicação de um banco de dados Oracle foi projetada para funcionar de maneira praticamente idêntica à publicação de um banco de dados do Microsoft SQL Server. Porém, deve-se estar atento às seguintes limitações e problemas:
A opção Oracle Gateway fornece desempenho melhorado em relação à opção Oracle Complete; entretanto, essa opção não pode ser usada para publicar a mesma tabela em várias publicações transacionais. Uma tabela pode aparecer no máximo em uma publicação transacional e em qualquer número de publicações de instantâneo. Se você precisa publicar a mesma tabela em várias publicações transacionais, escolha a opção Oracle Complete.
A replicação oferece suporte à publicação de tabelas, índices e visões materializadas. Outros objetos não são replicados.
Há algumas pequenas diferenças entre o armazenamento e o processamento de dados no Oracle e em bancos de dados do SQL Server que afetam a replicação.
Há várias diferenças relativas à maneira como recursos de replicação transacionais oferecem suporte ao usar um Editor Oracle.
Suporte para publicar objetos do Oracle
A replicação oferece suporte para replicar os seguintes objetos de bancos de dados do Oracle:
Tabelas
Tabelas organizadas por índice
Índices
Visões materializadas (elas são replicadas como tabelas)
Os seguintes itens podem estar presentes em tabelas publicadas mas não são replicados:
Índices com base em domínio
Índices com base em função
Padrões
Verificar restrições
Chaves estrangeiras
Opções de armazenamento (tablespaces, clusters etc.)
Os seguintes objetos não podem ser replicados:
Tabelas aninhadas
Visualizações
Pacotes, corpos de pacote, procedimentos e gatilhos
Filas
Sequências
Sinônimos
Para obter mais informações sobre tipos de dados com suporte, consulte Data Type Mapping for Oracle Publishers.
Diferenças entre Oracle e SQL Server
Oracle tem limites de tamanho máximo diferentes para alguns objetos. Quaisquer objetos criados no banco de dados de publicação Oracle devem aderir aos limites máximos de tamanho para os objetos correspondentes no SQL Server. Para mais informações sobre limites no SQL Server, consulte Especificações de capacidade máxima do SQL Server.
Por padrão nomes de objeto do Oracle são criados com maiúscula. Certifique-se de fornecer os nomes de objetos Oracle em maiúscula ao publicá-los por meio de um Distribuidor do SQL Server se eles tiverem maiúscula no banco de dados do Oracle. Falha ao especificar os objetos com maiúscula ou minúscula pode resultar em uma mensagem de erro indicando que o objeto não pode ser encontrado.
O Oracle tem um dialeto de SQL ligeiramente diferente do SQL Server. Os filtros de linha devem ser gravados em sintaxe compatível com Oracle.
Considerações para objetos grandes
Os dados de objetos grandes (LOB) não são armazenados na tabela de log do artigo; as atualizações nos dados LOB são sempre recuperadas diretamente da tabela publicada. Atualizações são replicadas em publicações transacionais somente se a operação que afete LOB acionar gatilhos de replicação na tabela replicada. Gatilhos Oracle são acionados quando linhas contendo LOBs são inseridas ou excluídas; entretanto, atualizações para colunas LOB não disparam gatilhos. Uma atualização em uma coluna LOB será replicada imediatamente somente se uma coluna que não seja LOB da mesma linha também for atualizada na mesma transação do Oracle. Caso contrário, a coluna LOB será atualizada no Assinante quando a próxima atualização para uma coluna não LOB ocorrer na mesma linha. Verifique se esse comportamento é aceitável para seu aplicativo.
Para replicar atualizações em colunas LOB em publicações transacionais, considere uma das seguintes estratégias ao desenvolver o aplicativo:
Exclua e volte a inserir as linhas em uma transação em vez de atualizar a linha: especifique a nova LOB ao reinserir a linha. Por excluir e inserir os dois gatilhos, a linha será replicada.
Inclua uma coluna não LOB na atualização de linha além da coluna LOB ou atualize uma coluna não LOB da linha como parte da mesma transação Oracle. Em ambos os casos, a atualização da coluna não LOB assegura o acionamento do gatilho.
Para obter mais informações sobre LOBs, consulte Data Type Mapping for Oracle Publishers.
Índices e restrições exclusivos
Tanto para replicação de instantâneo quanto para a replicação transacional, as colunas contidas em índices e restrições exclusivos (incluindo restrições de chave primária) devem se ater a determinadas restrições. Se não estiverem em conformidade com essas restrições, a restrição ou o índice não será replicado.
O número máximo de colunas permitido em um índice no SQL Server é 16.
Todas as colunas incluídas em restrições exclusivas devem ter tipos de dados com suporte. Para obter mais informações sobre tipos de dados, consulte Data Type Mapping for Oracle Publishers.
Todas as colunas incluídas em restrições exclusivas devem ser publicadas (não podem ser filtradas).
Colunas envolvidas em restrições ou índices exclusivos não devem ser nulas.
Considere também os seguintes problemas:
A Oracle e o SQL Server tratam o NULL diferentemente: a Oracle permite várias linhas com valores nulos para colunas que permitem o NULL e são incluídas em restrições ou índices exclusivos. O SQL Server impõe exclusividade permitindo somente uma única linha com um valor nulo para a mesma coluna. Não é possível publicar uma restrição ou índice exclusivo que permita NULL uma vez que haveria uma violação de restrição no Assinante se a tabela publicada tiver várias linhas com valores NULL para qualquer uma das colunas incluídas no índice ou restrição.
Ao testar a unicidade, os espaços em branco à direita em 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 acima especificadas. Se a chave primária não aderir às regras definidas nos pontos anteriores, a tabela não pode ser publicada para replicação transacional.
Diferenças entre publicação do Oracle e replicação transacional padrão
Um Editor Oracle não pode ter o mesmo nome de seu Distribuidor do SQL Server ou o mesmo nome que qualquer um dos Editores do SQL Server que usam o Distribuidor ou que qualquer Assinante que recebe a publicação. Publicações atendidas pelo mesmo Distribuidor devem ter nomes exclusivos.
Uma tabela publicada em uma publicação do Oracle não pode receber dados replicados. Assim, a publicação do Oracle não oferece suporte para: publicações com assinaturas de atualização imediata ou enfileirada; ou topologias nas quais tabelas de publicação também funcionam com tabelas de assinatura, tais como replicação ponto a ponto e bidirecional.
Os relacionamentos entre chave primária e chave estrangeira no banco de dados Oracle não são replicados para os Assinantes. Porém, os relações são mantidas nos dados conforme as alterações são aplicadas.
Publicações transacionais padrão oferecem suporte para tabelas de até 1000 colunas. Publicações transacionais Oracle oferecem suporte para 995 colunas (a replicação adiciona cinco colunas a cada tabela publicada).
Cláusulas de ordenação são adicionadas às instruções CREATE TABLE para habilitar comparações que diferenciam maiúscula de minúscula, o que é importante para chaves primárias e restrições exclusivas. Este comportamento é controlado com a opção de esquema 0x1000, especificada com o parâmetro
@schema_optionde sp_addarticle (Transact-SQL).Se você usar procedimentos armazenados para configurar ou manter um Editor Oracle, não coloque os procedimentos dentro de uma transação explícita. Isso não é suportado por meio do servidor vinculado usado para se conectar ao Oracle Publisher.
Se você criar uma assinatura pull para uma publicação Oracle usando um assistente, deverá usar o Assistente para Nova Assinatura incluído no SQL Server 2005 (9.x) e em versões posteriores. Para versões anteriores do SQL Server, é possível, entretanto, usar o procedimento armazenado e interfaces SQL-DMO para configurar assinaturas pull para publicações do Oracle.
Se 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 Editor Oracle. Normalmente, MCALL fornece um bitmap que mostra quais colunas foram atualizadas no Publicador. Com uma publicação do Oracle, o bitmap sempre mostra 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 ao recurso Replicação Transacional
As publicações do Oracle não oferecem suporte para todas as opções de esquema que as publicações do SQL Server oferecem suporte. Para obter mais informações sobre opções de esquema, consulte sp_addarticle (Transact-SQL).
Assinantes de publicações do Oracle não podem usar assinaturas de atualização imediata ou enfileiradas ou ser nós em uma topologia ponto a ponto ou bidirecional.
Assinantes de publicações do Oracle não podem ser inicializados automaticamente de um backup.
O SQL Server oferece suporte para dois tipos de validação: binária e de contagem de linhas. Os Publicadores da Oracle oferecem suporte à validação da contagem de linhas. Para obter mais informações, consulte Validar os dados replicados.
O SQL Server oferece dois formatos de instantâneo: modo bcp nativo e modo de caracteres. Publicadores Oracle oferecem suporte para instantâneos de modo de caractere.
Alterações de esquema para tabelas do Oracle publicadas não têm suporte. Para executar alterações de esquema, primeiro descarte a publicação, faça as alterações e, então, crie novamente a publicação e quaisquer assinaturas.
Observação
Se as alterações de esquema e subsequente cancelamento e recriação da publicação e assinaturas forem executados em um momento em que nenhuma atividade estiver ocorrendo nas tabelas publicadas, pode-se especificar a opção ‘suporte para replicação somente' para as assinaturas. Isso lhes permite ser sincronizados sem ter de copiar um instantâneo para cada Assinante. Para obter mais informações, consulte Initialize a Transactional Subscription Without a Snapshot.
Modelo de segurança de replicação
O modelo de segurança para publicação do Oracle é o mesmo que o modelo de segurança para replicação transacional padrão, com as seguintes exceções:
A conta na qual o Agente de Instantâneo e o Log Reader Agent se conectam do Distribuidor para o Publicador é especificada por meio de um dos seguintes métodos:
O parâmetro
@security_modedo sp_adddistpublisher (Transact-SQL) (você também especificará valores para@logine@passwordse for usada a autenticação do Oracle)Na caixa de diálogo Conectar ao Servidor no SQL Server Management Studio, que você usa ao configurar o Editor Oracle no Distribuidor do SQL Server.
Na replicação transacional padrão, a conta é especificada com sp_addpublication_snapshot (Transact-SQL) e sp_addlogreader_agent (Transact-SQL).
A conta sob a qual o Agente de Instantâneo e o Agente de Leitor de Log fazem conexões não pode ser alterada com sp_changedistpublisher (Transact-SQL) ou por uma folha de propriedades, mas a senha pode ser alterada.
Se você especificar um valor de 1 (Autenticação Integrada do Windows) para o parâmetro
@security_modede sp_adddistpublisher (Transact-SQL):A conta e a senha de processo usadas para o Agente de Instantâneo e o Agente de Leitor de Log (os parâmetros
@job_logine@job_passwordde sp_addpublication_snapshot (Transact-SQL) e sp_addlogreader_agent (Transact-SQL)) devem ser as mesmas que a conta e a senha usadas para a conexão com o Publicador Oracle.Você não pode alterar o parâmetro
@job_loginpor meio de sp_changepublication_snapshot (Transact-SQL) ou sp_changelogreader_agent (Transact-SQL), mas a senha pode ser alterada.
Para obter mais informações sobre a segurança de replicação, confira Exibir e modificar configurações de segurança de replicação.