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
Publicar a partir de um banco de dados Oracle funciona quase da mesma forma que publicar a partir de um banco de dados do Microsoft SQL Server. No entanto, esteja ciente das seguintes limitações e questões:
A opção Oracle Gateway oferece desempenho melhor do que a opção Oracle Complete. No entanto, você não pode usar a opção Oracle Gateway para publicar a mesma tabela em múltiplas publicações transacionais. Uma tabela só pode ser exibida na publicação transacional, mas pode aparecer 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. Não replica outros objetos.
Algumas pequenas diferenças entre o armazenamento e processamento de dados nos bancos de dados Oracle e SQL Server afetam a replicação.
Existem diferenças na forma como os recursos de replicação transacional são suportados quando você usa um Oracle Publisher.
Suporte para publicação de objetos da Oracle
A replicação oferece suporte para replicar os seguintes objetos de bancos de dados do Oracle:
Tabelas
Tabelas organizadas por índice
Índices
Vistas materializadas (replicadas como tabelas)
Os seguintes objetos 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 e assim por diante)
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. Qualquer objeto que você criar no banco de dados de publicações Oracle deve seguir os 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, a Oracle cria nomes de objetos em maiúsculas. Certifique-se de fornecer os nomes dos objetos Oracle em maiúsculas ao publicá-los por meio de um SQL Server Distributor, caso estejam em maiúsculas no banco de dados Oracle. A falha em especificar os objetos no caso correto pode resultar em uma mensagem de erro indicando que o objeto não pode ser encontrado.
A Oracle usa um dialeto SQL ligeiramente diferente do SQL Server; escreva filtros de linha em sintaxe compatível com a Oracle.
Considerações para objetos grandes
A tabela de logs do artigo não armazena dados de objetos grandes (LOB). Atualizações dos 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. Os gatilhos do Oracle são acionados quando linhas que contêm LOBs são inseridas ou excluídas. No entanto, atualizações nas colunas LOB não disparam gatilhos. Uma atualização de uma coluna LOB é replicada imediatamente somente se uma coluna não-LOB da mesma linha também for atualizada na mesma transação Oracle. Se não, a coluna LOB é atualizada no Assinante quando ocorre a próxima atualização para uma coluna que não seja LOB 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. Como delete e insert ambos disparam gatilhos, a linha é 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 únicos
Para replicação instantânea e transacional, colunas em índices e restrições únicas (incluindo restrições de chave primária) devem seguir certas restrições. Se eles não atenderem a essas restrições, a restrição ou o índice não será replicado.
Você pode incluir até 16 colunas em um índice no SQL Server.
Todas as colunas em restrições únicas devem ter tipos de dados suportados. Para obter mais informações sobre tipos de dados, consulte Data Type Mapping for Oracle Publishers.
Você deve publicar todas as colunas em restrições únicas (não dá para filtrá-las).
Colunas em restrições ou índices únicos não deveriam 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. Você não pode publicar uma restrição ou índice único que permita NULL porque uma violação de restrição ocorreria no Assinante 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 as lacunas em branco em um campo, mas o Oracle não.
Assim como na replicação transacional do SQL Server, 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 essas regras, você não pode publicar a tabela 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 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 obter mais informações sobre opções de esquema, consulte sp_addarticle (Transact-SQL).
Assinantes de publicações Oracle não podem usar assinaturas com atualização imediata ou em fila, nem ser nós em uma topologia peer-to-peer ou bidirecional.
Assinantes de publicações Oracle não podem ser inicializados automaticamente a partir 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 em tabelas Oracle publicadas não são suportadas. 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 você fizer alterações no esquema e eliminar e recriar a publicação e as assinaturas quando nenhuma atividade estiver ocorrendo nas tabelas publicadas, pode especificar a opção
replication support onlypara as assinaturas. Essa opção os sincroniza sem copiar um snapshot 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 de replicação para publicação Oracle é o mesmo modelo de segurança para replicação transacional padrão, com as seguintes exceções:
Você especifica a conta sob a qual o Agente de Instantâneo e o Log Reader Agent fazem conexões do Distribuidor para o Publisher por meio de um dos seguintes métodos:
O
@security_modeparâmetro de sp_adddistpublisher (Transact-SQL) (também especifica valores para@logine@passwordse for usada a Autenticação Oracle)A caixa de diálogo Conectar ao Servidor no SQL Server Management Studio, que você usa ao configurar o Oracle Publisher no SQL Server Distributor.
Na replicação transacional padrão, especifique a conta com sp_addpublication_snapshot (Transact-SQL) e sp_addlogreader_agent (Transact-SQL).
Você não pode alterar a conta sob a qual o Agente de Instantâneo e o Agente do Leitor de Logs fazem conexões usando sp_changedistpublisher (Transact-SQL) ou por meio de uma planilha de propriedades, mas pode mudar a senha.
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 mudar o
@job_loginparâmetro via sp_changepublication_snapshot (Transact-SQL) ou sp_changelogreader_agent (Transact-SQL), mas pode mudar a senha.
Para obter mais informações sobre a segurança de replicação, confira Exibir e modificar configurações de segurança de replicação.