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
Este artigo lista uma série de problemas que podem surgir ao configurar e usar um Oracle Publisher.
É gerado um erro relativo ao software de rede e de cliente Oracle
Você deve conceder permissões para a leitura e execução da conta sob a qual o Microsoft SQL Server roda no Distribuidor para o diretório e todos os subdiretórios onde o software de rede cliente Oracle está instalado. Se você não conceder as permissões ou se os componentes do cliente Oracle não estiverem instalados corretamente, você recebe a seguinte mensagem de erro:
"Falha na conexão ao servidor com [Microsoft OLE DB Provider for Oracle]. Cliente Oracle e componentes de rede não foram localizados. Esses componentes são fornecidos pela Oracle Corporation e são parte da instalação de software de cliente Oracle Versão 7.3.3 ou posterior. O provedor está incapaz de funcionar até que esses componentes estejam instalados."
Se você instalar um cliente Oracle apropriado no Distribuidor, certifique-se de parar e reiniciar o SQL Server após a conclusão da instalação do cliente. Essa etapa é necessária para que o SQL Server reconheça os componentes do cliente.
Se você conceder as permissões e instalar os componentes corretamente, mas o erro persistir, verifique se as configurações do registro em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI estão corretas:
Para Oracle 10g, as configurações corretas são:
OracleOciLib = oci.dll
OracleSqlLib = orasql10.dll
OracleXaLib = oraclient10.dll
Para Oracle 9i, as configurações corretas são:
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
O SQL Server Distributor não consegue se conectar à instância do banco de dados Oracle
Se o SQL Server Distributor não conseguir se conectar ao Oracle Publisher, certifique-se de que:
O software Oracle necessário esteja instalado no Distribuidor.
O banco de dados Oracle é online e você pode se conectar a ele usando uma ferramenta como SQL*Plus.
A replicação de login usada para se conectar ao Publicador do Oracle tem permissões suficientes. Para obter mais informações, consulte Configure an Oracle Publisher (Configurar um publicador do Oracle).
O arquivo tnsnames.ora lista os nomes TNS que você definiu durante a configuração do Oracle Publisher.
Você está usando o Oracle Home e o caminho corretos. Mesmo se você tiver um conjunto de binários Oracle instalados no Distribuidor do SQL Server, certifique-se de que as variáveis do ambiente relacionadas ao Oracle Home tenham sido adequadamente configuradas. Se você alterar valores de variáveis do ambiente, deverá parar e reiniciar o SQL Server para que a alteração entre em vigor.
Para obter maiores informações sobre como configurar e testar a conectividade, consulte “Instalando e configurando software de rede de cliente Oracle no Distribuidor do SQL Server”, em Configurar um Publicador Oracle.
O Oracle Publisher está associado a outro Distribuidor
Um Publicador Oracle só pode estar associado a um Distribuidor do SQL Server. Se um distribuidor diferente estiver associado ao Oracle Publisher, retire-o antes de usar outro distribuidor. Se você não derrubar o Distribuidor primeiro, recebe uma das seguintes mensagens de erro:
“Instância do servidor Oracle ‘<OraclePublisherName>’ foi configurada anteriormente para usar ‘<SQLServerDistributorName>’ como Distribuidor. Para começar a usar '<NewSQLServerDistributorName>' como Distribuidor, você deve remover a configuração de replicação atual na instância de servidor Oracle, o que excluirá todas as publicações nessa instância de servidor."
“Servidor Oracle '<OracleServerName>' já está definido como publicador '<OraclePublisherName>' no distribuidor '<SQLServerDistributorName>.<DistributionDatabaseName>'. Remova o publicador ou o sinônimo público "<SynonymName>" para recriar."
Quando você elimina um Oracle Publisher, os objetos de replicação no banco de dados Oracle são automaticamente limpos. No entanto, em alguns casos, você precisa limpar manualmente os objetos de replicação do Oracle. Para limpar manualmente objetos de replicação Oracle criados por replicação:
Conecte-se ao publicador do Oracle com permissões de DBA.
Emita o comando SQL
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;.Emita o comando SQL
DROP USER <replication_administrative_user_schema>``CASCADE;.
O erro SQL Server 21663 é levantado devido à falta de uma chave primária
Os artigos em publicações transacionais devem ter uma chave primária válida. Se eles não tiverem uma chave primária válida, você recebe a seguinte mensagem de erro ao tentar adicionar um artigo:
“Nenhuma chave primária válida foi encontrada para a tabela de origem [<TableOwner>].[<TableName>]”
Para informações sobre os requisitos para chaves primárias, veja a seção "Índices e Restrições Únicas" no artigo Considerações e Limitações de Design para Editoras Oracle.
O erro 21642 do SQL Server é gerado devido a um login duplicado para servidor vinculado.
Quando você configura inicialmente um Oracle Publisher, o processo cria uma entrada de servidor vinculado para a conexão entre o Publisher e o Distribuidor. O servidor vinculado tem o mesmo nome que o serviço TNS Oracle. Se você tentar criar um servidor vinculado com o mesmo nome, verá a seguinte mensagem de erro:
"Os publicadores heterogêneos exigem um servidor vinculado. Um servidor vinculado chamado '<LinkedServerName>' já existe. Remova o servidor vinculado ou escolha um nome de publicador diferente."
Esse erro pode ocorrer se você tentar criar o servidor vinculado diretamente ou se você previamente perdeu a relação entre o Oracle Publisher e o SQL Server Distributor, e agora estiver tentando reconfigurá-lo. Se receber esse erro ao tentar reconfigurar o Publicador, remova o servidor vinculado com sp_dropserver (Transact-SQL).
Se você precisar se conectar ao Publicador Oracle usando uma conexão de servidor vinculado, crie outro nome de serviço TNS e use esse nome ao chamar sp_addlinkedserver (Transact-SQL). Para obter informações sobre como criar nomes de serviço TNS, consulte a documentação do Oracle.
É gerado o erro SQL Server 21617
A publicação da Oracle usa o aplicativo Oracle SQL*PLUS para fazer download do pacote de código de suporte do Publisher para o banco de dados Oracle. Antes de tentar configurar o Publicador Oracle, o SQL Server verifica se SQL*PLUS está acessível através do caminho do sistema no Distribuidor. Se o SQL*PLUS não puder ser carregado, a seguinte mensagem de erro será mostrada:
"Não é possível executar o SQL*PLUS. Certifique-se de que uma versão atual do código de cliente Oracle esteja instalada no distribuidor."
Tente localizar o SQLPLUS no Distribuidor. Para uma instalação cliente Oracle 10g, o nome desse executável é sqlplus.exe. Normalmente, ele é instalado em %ORACLE_HOME%/bin. Para verificar se o caminho do SQLPLUS aparece no caminho do sistema, examine o valor da variável do sistema Caminho:
Clique com o botão direito do mouse em Meu Computadore, em seguida, clique em Propriedades.
Clique na guia Avançado e clique em Variáveis de Ambiente.
Na caixa de diálogo Variáveis de Ambiente , na lista Variáveis de Sistema , selecione a variável Caminho e, então, clique em Editar.
Na caixa de diálogo Editar Variável do Sistema : se o caminho para a pasta que contém sqlplus.exe não estiver presente na caixa de texto Valor da Variável , edite a string para inclui-la.
Clique em OK em cada caixa de diálogo aberta para sair e salvar as alterações.
Se você não conseguir localizar sqlplus.exe no Distribuidor, instale uma versão atual do software cliente Oracle no Distribuidor. Para obter mais informações, consulte Configure an Oracle Publisher (Configurar um publicador do Oracle).
É gerado o erro SQL Server 21620
Se você está conectando a um banco de dados Oracle anterior à versão 8.1, a publicação Oracle exige que o software cliente Oracle instalado no Distribuidor seja da versão 9. Se você estiver conectando a um banco de dados Oracle versão 8.1 ou posterior, use o software cliente Oracle versão 10 ou posterior.
Antes de tentar configurar o Publicador Oracle, a publicação Oracle verifica se a versão de SQL*PLUS acessível através do caminho do sistema no Distribuidor é a versão 9 ou posterior. Se não estiver, a seguinte mensagem de erro é mostrada:
A versão de SQL*PLUS acessível através da variável Caminho do Sistema não é atual o suficiente para oferecer suporte à publicação Oracle. Certifique-se de que uma versão atual do código de cliente Oracle esteja instalada no distribuidor."
Se você tiver várias versões do software cliente Oracle instaladas no Distribuidor, certifique-se de que a versão mais recente seja pelo menos a versão 9 e que a variável path do sistema se refira primeiro a essa versão (referências a outras versões podem aparecer desde que a mais recente apareça primeiro). Para mais informações sobre como editar a variável de caminho do sistema, consulte a seção "SQL Server is Raised" mencionada anteriormente neste artigo.
É gerado o erro SQL Server 21624 ou 21629
Para Distribuidores de 64 bits, a publicação Oracle usa o provedor Oracle OLE DB para Oracle (OraOLEDB.Oracle). Certifique-se de que o provedor Oracle OLEDB esteja instalado e registrado no Distribuidor. Se o provedor não estiver instalado e registrado, você verá uma ou ambas as seguintes mensagens de erro:
"Não foi possível localizar o provedor OLEDB Oracle, OraOLEDB.Oracle, registrado no distribuidor '%s.' Certifique-se de que uma versão atual do provedor OLEDB Oracle esteja instalada e registrada no distribuidor."
A chave de Registro CLSID que indica que o provedor Oracle OLEDB para Oracle, OraOLEDB.Oracle, foi registrado não está presente no distribuidor. Certifique-se de que o provedor OLEDB Oracle esteja instalado e registrado no distribuidor."
Se você estiver usando o software cliente Oracle versão 10g, o provedor é OraOLEDB10.dll; para a versão 9i, é OraOLEDB.dll. O provedor é instalado em %ORACLE_HOME%\BIN (por exemplo, C:\oracle\product\10.1.0\Client_1\bin). Se você determinar que o provedor Oracle OLEDB não está instalado no Distribuidor, instale-o a partir do disco de instalação do software cliente Oracle fornecido pela Oracle. Para obter mais informações, consulte Configure an Oracle Publisher (Configurar um publicador do Oracle).
Se o provedor Oracle OLEDB estiver instalado, certifique-se de que ele está registrado. Para registrar a DLL do provedor, execute o seguinte comando a partir do diretório onde a DLL está instalada e, em seguida, pare e reinicie a instância do SQL Server:
-
regsvr32 OraOLEDB10.dllouregsvr32 OraOLEDB.dll.
O erro do SQL Server 21626 ou o erro 21627 é gerado
Para verificar se o ambiente de publicação Oracle está configurado corretamente, o SQL Server tenta se conectar ao Oracle Publisher usando as credenciais de login que você especificou durante a configuração. Se o SQL Server Distributor não conseguir se conectar ao Oracle Publisher, você verá a seguinte mensagem de erro:
- Não foi possível estabelecer conexão com o servidor de banco de dados Oracle '%s' usando o provedor Oracle OLE DB OraOLEDB.Oracle.
Se você vir essa mensagem de erro, verifique a conectividade ao banco de dados Oracle rodando SQL*PLUS diretamente, usando o mesmo login e senha especificados durante a configuração do Oracle Publisher. Para mais informações, veja a seção "O Distribuidor do SQL Server Não Consegue Se Conectar à Instância do Banco de Dados Oracle" anteriormente neste artigo.
O erro SQL Server 21628 é levantado
Para Distribuidores de 64 bits, a publicação Oracle usa o provedor Oracle OLE DB para Oracle (OraOLEDB.Oracle). O SQL Server cria uma entrada de registro para permitir que o provedor Oracle seja executado em processo com o SQL Server. Se houver algum problema para ler ou escrever essa entrada do registro, a seguinte mensagem de erro aparece:
“Não é possível atualizar o Registro do distribuidor '%s' para permitir que o provedor OLE DB Oracle OraOLEDB.Oracle seja executado em processo com o SQL Server. Certifique-se de que o logon atual tem autorização para modificar as chaves do Registro que pertencem ao SQL Server.”
A publicação da Oracle exige que a entrada do registro exista e esteja definida como 1 para distribuidores de 64 bits. Se a entrada não existir, o SQL Server tenta criá-la. Se a entrada existir, mas está definida como 0, a configuração não muda e a configuração do Oracle Publisher falha.
Para exibir e modificar a configuração de registro:
Selecione Iniciar e, em seguida, selecione Executar.
Na caixa de diálogo Executar, digite regedit e então selecione OK.
Navegue até HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Em Provedores, encontre uma pasta chamada
OraOLEDB.Oracle. Dentro dessa pasta, encontre o nome do valor DWORD AllowInProcess com valor 1.Se você perceber que AllowInProcess está definido como 0, atualize a entrada do registro para 1:
Clique com o botão direito na entrada e depois selecione Modificar.
Na caixa de diálogo Editar Cadeia , digite 1 no campo Dados do Valor .
O erro 21684 do SQL Server é levantado
Se a conta de usuário administrativo não tiver privilégios suficientes, você verá a seguinte mensagem de erro:
As permissões associadas ao logon de administrador do publicador Oracle '%s' não são suficientes.
Para verificar as permissões concedidas ao usuário, execute a seguinte consulta: SELECT * from session_privs. A saída deve ser semelhante ao seguinte:
PRIVILEGE
------------------
CREATE SESSION
CREATE TABLE
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Você encontra problemas de permissões para o esquema de usuário de replicação
O esquema de usuário de replicação deve ter as permissões descritas em “Criando o esquema de usuário manualmente” em Configurar um Publicador Oracle.
Erro Oracle ORA-01000
A replicação utiliza cursores no Publicador do Oracle durante o processo de adição de artigos a uma publicação. É possível exceder o número máximo de cursores disponíveis no Publicador durante esse processo. Se isso acontecer, o seguinte erro será gerado:
ORA-01000: número máximo de cursores abertos excedido
Para evitar esse problema, certifique-se de que a configuração max_open_cursors no banco de dados Oracle esteja definida como um número suficientemente alto (pelo menos 1000). Para obter mais informações sobre essa configuração, consulte a documentação Oracle.
Erro Oracle ORA-01555
O seguinte erro de banco de dados Oracle não está relacionado à replicação instantânea; está relacionado ao modo como o Oracle constrói exibições de dados de leitura consistente:
"ORA-01555: Instantâneo muito antigo"
Usando objetos conhecidos como segmentos de reversão, o Oracle constrói visões consistentes dos dados para leitura no momento em que uma instrução SQL é emitida. Um erro de "snapshot too old" pode ocorrer quando as informações de rollback são substituídas por outras sessões concorrentes. Antes do Oracle 9i, o método recomendado para reduzir a frequência desse erro era aumentar o tamanho e/ou o número de segmentos de reversão e atribuir grandes transações a um segmento de reversão específico.
No Oracle 9i, a Oracle introduziu o conceito de espaço de tabela UNDO, que substitui o segmento de reversão. Para evitar o erro "snapshot too old" no Oracle 9i, recomenda-se:
Criar um espaço de tabela UNDO com uma quantidade adequada de espaço livre.
Definir a garantia de retenção no espaço de tabela (Oracle 10G e maior).
Configurar os parâmetros de inicialização Oracle UNDO_MANAGEMENT e UNDO_RETENTION.
Para obter detalhes adicionais sobre como evitar o erro "snapshot too old", consulte a documentação da Oracle.
Erro Oracle ORA-22285
Se uma tabela inclui uma coluna BFILE, os dados para a coluna são armazenados no sistema de arquivos. Você deve conceder à conta de usuário administrativo da replicação acesso ao diretório onde os dados são armazenados usando a seguinte sintaxe:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Se você não conceder acesso, o Agente Leitor de Log gera o seguinte erro:
"ORA-22285: diretório ou arquivo inexistente para a operação FILEOPEN"
Mudanças que exigem reconfiguração do Publisher
Se você fizer alterações em tabelas ou procedimentos de metadados de replicação, deve desligar e reconfigurar o Publisher. Para reconfigurar o Publisher, você deve desligar o Publisher e configurá-lo novamente usando o SQL Server Management Studio, Transact-SQL ou RMO. Para mais informações sobre como configurar o Publisher, veja Configure um Oracle Publisher.
Para descartar um Publicador Oracle (SQL Server Management Studio)
Conecte-se ao Distribuidor do Publicador do Oracle no SQL Server Management Studio e expanda o nó do servidor.
Clique com o botão direito do mouse na pasta Replicaçãoe, então, clique em Propriedades do Distribuidor.
Na página Publicadores da caixa de diálogo Propriedades do Distribuidor , desmarque a caixa de seleção para o Publicador Oracle.
Clique em OK.
Para descartar um Publicador Oracle (Transact-SQL)
- Execute sp_dropdistpublisher. Para obter mais informações, consulte sp_dropdistpublisher (Transact-SQL).