Buenas! 🙂
Nos últimos meses estou envolvido em um curso oferecido pela Microsoft (curso 0800) sobre o MSSQL 2012.
Tem sido um aprendizado muitíssimo interessante. Legal ver as features que existem e alguns conceitos que são diferentes. Curti o AlwaysOn principalmente… o/
A parte final desse projeto constituí a criação e um ambiente com duas máquinas (VM’s), criação de uma database em cada, replicação e tal.
O professor nos disse que o que não víssemos no curso e fosse aplicado por conta, seria considerado um plus.
Pensando nisso, e como trabalho na área Oracle, imaginamos, meu colega Bruno e eu, o quão complicado seria implementar uma comunicação entre os bancos.
Cenário:
Uma tabela de pedidos no MSSQL. Quando o pedido é aprovado (PEDIDO_APROVADO=0 ou =1), a linha fosse transportada para uma tabela em um db Oracle, através de uma trigger after update, por exemplo! 🙂
Imagine que a empresa tenha uma aplicação de terceiros, que funciona em Oracle e precisa desses dados para informações internas, integração, BI, enfim…
Utilizei a figura do Linked Server, a qual irei demonstrar aqui! go! go! go!

Passo 1: Instalar o Oracle Client 11gR2 no host com MSSQL
32bit:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html

64bit:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html

* O client deve obedecer a versão do Windows onde está instalado o MSSQL (ex.: 32bit ou 64bit)

Passo 2: Instalar o Oracle Data Access Components (ODAC) no host com MSSQL
32bit:
http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

64bit:
http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

Passo 3: Configurar o tnsnames.ora do client:
Ex.:
G:Oracle_installproduct11.2.0client_1networkadmin

Configurar o tnsnames conforme exemplo:

# tnsnames.ora Network Configuration File: G:Oracle_installproduct11.2.0client_1networkadmintnsnames.ora
# Generated by Oracle configuration tools.

FABRIKAM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.134)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FABRIKAM.S2BSRVS.S2B.COM)
    )
  )

FABRIKAM = nome da minha empresa fictícia e nome que será utilizado para conexão;
HOST = ip do servidor linux com Oracle;

Passo 4: REBOOT! Do servidor com MSSQL! 😀

Passo 5: Alterar a configuração no OraOLEDB.Oracle
– Marcar a opção: “Allow inprocess”

Passo 6: Criação do Linked Server:

General
Linked Server: Nome a sua escolha. Será utilizado na consulta posteriormente
Provider: Oracle Provider for OLE DB
Product Name: Podemos colocar Oracle aqui! 🙂
Data Source: Deve refletir a entrada de TNS configurada anteriormente

Security
Selecione:
Be made using this security context
E forneça o user/pass oracle desejado.

Passo 7: Execute a consulta! 😀

Podemos ver na janela do prompt o select efetuado no sqlplus, no Oracle, e na atrás o MSSM efetuando a mesma consulta, também no Oracle.

Exemplos de sintaxe que podem ser utilizadas:

SELECT [ID]
,[TEXTO]
FROM [FABRIKAM_ORCL]..[FABRIKAM].[TESTE]
GO

INSERT INTO [FABRIKAM_ORCL]..[FABRIKAM].[TESTE]
([ID],[TEXTO]) values (1,'teste')
GO

UPDATE [FABRIKAM_ORCL]..[FABRIKAM].[TESTE]
SET TEXTO = 'testevitor'
WHERE [ID]=1
GO

DELETE FROM [FABRIKAM_ORCL]..[FABRIKAM].[TESTE]
WHERE [ID] = 1
GO

E como dizemos por aqui: deu pra bola! o/
Nos fones: