Compartilhar via


Assinantes do Oracle

A partir do SQL Server 2005, o SQL Server dá suporte a assinaturas push para a Oracle por meio do provedor Oracle OLE DB fornecido pela Oracle.

Configurando um Assinante de Sistema Oracle

Para configurar um Assinante Oracle, siga estas etapas:

  1. Instale e configure o software de rede do cliente Oracle e o provedor Oracle OLE DB no Distribuidor do SQL Server, para que o Distribuidor possa fazer conexões com o Assinante Oracle. O software de rede do cliente Oracle deve ser a versão mais recente disponível. A Oracle recomenda que os usuários instalem as versões mais recentes do software cliente. O software cliente geralmente é uma versão mais recente do que o software de banco de dados. A maneira mais simples de instalar o software é usar o Instalador Universal oracle no disco do Cliente Oracle. No Oracle Universal Installer, você fornecerá as seguintes informações:

    Informação Descrição
    Oracle Home Esse é o caminho para o diretório de instalação do software Oracle. Aceite o padrão (C:\oracle\ora90 ou similar) ou insira outro caminho. Para obter mais informações sobre o Oracle Home, consulte a seção "Considerações para Oracle Home" mais adiante neste tópico.
    Nome da página inicial do Oracle Um apelido para o caminho do Oracle Home.
    Tipo de instalação No Oracle 10g, selecione a opção de instalação runtime ou administrador .
  2. Crie um nome TNS para o Assinante. O TNS (Transparent Network Substrate) é uma camada de comunicação usada pelos bancos de dados Oracle. O Nome do Serviço TNS é o nome pelo qual uma instância de banco de dados Oracle é conhecida em uma rede. Você atribui um Nome de Serviço TNS ao configurar a conectividade com o banco de dados Oracle. A replicação usa o nome do serviço TNS para identificar o assinante e estabelecer conexões.

    Depois que o Instalador Universal do Oracle for concluído, use o Assistente de Configuração da Rede para configurar a conectividade de rede. Você deve fornecer quatro informações para configurar a conectividade de rede. O administrador do banco de dados Oracle configura a configuração de rede ao configurar o banco de dados e o ouvinte e deve ser capaz de fornecer essas informações se você não tiver. Faça o seguinte:

    Ação Descrição
    Identificar o banco de dados Há dois métodos para identificar o banco de dados. O primeiro método usa o SID (Oracle System Identifier) e está disponível em todas as versões do Oracle. O segundo método usa o Nome do Serviço, que está disponível a partir da versão 8.0 do Oracle. Ambos os métodos usam um valor configurado quando o banco de dados é criado e é importante que a configuração de rede do cliente use o mesmo método de nomenclatura usado pelo administrador ao configurar o ouvinte para o banco de dados.
    Identificar um alias de rede para o banco de dados Você deve especificar um alias de rede, que é usado para acessar o banco de dados Oracle. O alias de rede é essencialmente um ponteiro para o SID remoto ou o Nome do Serviço que foi configurado quando o banco de dados foi criado; ele foi referenciado por vários nomes em diferentes versões e produtos Oracle, incluindo Nome do Serviço de Rede e Alias de TNS. SQL*Plus solicita esse aliás como o parâmetro "Cadeia de Caracteres de Host" ao fazer login.
    Selecione o protocolo de rede Selecione os protocolos apropriados que você deseja dar suporte. A maioria dos aplicativos usa TCP.
    Especifique as informações do host para identificar o ouvinte de banco de dados O host é o nome ou alias DNS do computador no qual o ouvinte Oracle está em execução, que normalmente é o mesmo computador no qual o banco de dados reside. Para alguns protocolos, você deve fornecer informações adicionais. Por exemplo, se você selecionar TCP, deverá fornecer a porta na qual o listener está escutando solicitações de conexão para o banco de dados de destino. A configuração TCP padrão usa a porta 1521.
  3. Crie um instantâneo ou uma publicação transacional, habilite-o para assinantes que não sejam do SQL Server e, em seguida, crie uma assinatura push para o assinante. Para obter mais informações, consulte Criar uma assinatura para um assinante que não seja do SQL Server.

Definindo permissões de diretório

A conta na qual o serviço SQL Server no Distribuidor é executado deve receber permissões de leitura e execução para o diretório (e todos os subdiretórios) em que o software de rede do cliente Oracle está instalado.

Testando a conectividade entre o Distribuidor do SQL Server e o Publicador Oracle

Perto do final do Assistente de Configuração da Rede, pode haver uma opção para testar a conexão com o Assinante Oracle. Antes de testar a conexão, verifique se a instância do banco de dados Oracle está online e se o Ouvinte Oracle está em execução. Se o teste não for bem-sucedido, entre em contato com o Oracle DBA responsável pelo banco de dados ao qual você está tentando se conectar.

Depois de fazer uma conexão bem-sucedida com o Assinante Oracle, tente iniciar sessão no banco de dados usando a mesma conta e senha que você configurou para o Agente de Distribuição da assinatura:

  1. Clique em Iniciar e em Executar.

  2. Digite cmd e clique em OK.

  3. No prompt de comando, digite:

    sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>

    Por exemplo: sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. Se a configuração de rede tiver sido bem-sucedida, o logon terá êxito e você verá um SQL prompt.

Considerações sobre o Oracle Home

O Oracle dá suporte à instalação lado a lado de binários de aplicativos, mas apenas um conjunto de binários pode ser usado pela replicação em um determinado momento. Cada conjunto de binários está associado a um Oracle Home; os binários estão no diretório %ORACLE_HOME%\bin. Você deve garantir que o conjunto apropriado de arquivos binários (especificamente a versão mais recente do software cliente de rede) seja usado quando a replicação fizer conexões com o "Oracle Subscriber".

Faça logon no Distribuidor com as contas usadas pelo serviço SQL Server e pelo serviço SQL Server Agent e defina as variáveis de ambiente apropriadas. A variável %ORACLE_HOME% deve ser definida para se referir ao ponto de instalação especificado quando você instalou o software de rede do cliente. O %PATH% deve incluir o diretório \bin %ORACLE_HOME% como a primeira entrada oracle encontrada. Para obter informações sobre como definir variáveis de ambiente, consulte a documentação do Windows.

Observação

Se você tiver mais de um Oracle home no Distribuidor do SQL Server, verifique se o Distribution Agent está usando o provedor Oracle OLE DB mais recente. Em alguns casos, a Oracle não atualiza o provedor OLE DB por padrão quando você atualiza os componentes do cliente no Distribuidor do SQL Server. Desinstale o antigo provedor OLE DB e instale o provedor OLE DB mais recente. Para obter mais informações sobre como instalar e desinstalar o provedor, consulte a documentação do Oracle.

Considerações para assinantes oracle

Além das considerações abordadas no tópico Assinantes que não são do SQL Server, considere os seguintes problemas ao replicar para Assinantes Oracle:

  • O Oracle trata as cadeias de caracteres vazias e os valores NULL como NULL. Isso é importante se você definir uma coluna do SQL Server como NOT NULL e estiver replicando a coluna para um assinante Oracle. Para evitar falhas ao aplicar alterações ao Assinante Oracle, você deve fazer um dos seguintes procedimentos:

    • Verifique se as cadeias de caracteres vazias não são inseridas na tabela publicada como valores de coluna.

    • Use o parâmetro -SkipErrors para o Distribution Agent se for aceitável ser notificado sobre falhas no log de histórico do Distribution Agent e continuar o processamento. Especifique o código de erro Oracle 1400 (-SkipErrors1400).

    • Modifique o script de tabela de criação gerado, removendo o atributo NOT NULL de qualquer coluna de caractere que possa ter cadeias de caracteres vazias associadas e forneça o script modificado como um script de criação personalizado para o artigo usando o @creation_script parâmetro de sp_addarticle.

  • Os Assinantes Oracle dão suporte a uma opção de esquema de 0x4071. Para obter mais informações sobre opções de esquema, consulte sp_addarticle (Transact-SQL).

Mapeando tipos de dados do SQL Server para o Oracle

A tabela a seguir mostra os mapeamentos de tipo de dados usados quando os dados são replicados para um Assinante executando o Oracle.

Tipo de dados do SQL Server Tipo de dados Oracle
bigint NÚMERO(19,0)
binary(1-2000) RAW(1-2000)
binary(2001-8000) BLOB
bit NÚMERO(1)
char(1-2000) CHAR(1-2000)
char(2001-4000) VARCHAR2(2001-4000)
char(4001-8000) CLOB
date DATA
datetime DATA
datetime2(0-7) TIMESTAMP(7) para Oracle 9 e Oracle 10; VARCHAR(27) para Oracle 8
datetimeoffset(0-7) TIMESTAMP(7) WITH TIME ZONE para Oracle 9 e Oracle 10; VARCHAR(34) para Oracle 8
decimal(1-38, 0-38) NÚMERO(1-38, 0-38)
float(53) FLUTUAR
float FLUTUAR
geography BLOB
geometry BLOB
hierarchyid BLOB
image BLOB
int NUMBER(10,0)
money NÚMERO(19,4)
nchar(1-1000) CHAR(1-1000)
nchar(1001-4000) NCLOB
ntext NCLOB
numeric(1-38, 0-38) NUMBER(1-38, 0-38)
nvarchar(1-1000) VARCHAR2(1-2000)
nvarchar(1001-4000) NCLOB
nvarchar(max) NCLOB
real REAL
smalldatetime DATA
smallint NÚMERO(5,0)
smallmoney NÚMERO(10,4)
sql_variant Não aplicável
sysname VARCHAR2(128)
text CLOB
time(0-7) VARCHAR(16)
timestamp RAW(8)
tinyint NÚMERO(3,0)
uniqueidentifier CHAR(38)
varbinary(1-2000) RAW(1-2000)
varbinary(2001-8000) BLOB
varchar(1-4000) VARCHAR2(1-4000)
varchar(4001-8000) CLOB
varbinary(max) BLOB
varchar(max) CLOB
xml NCLOB

Consulte Também

Assinantes que não são do SQL Server
Assinar publicações