[SSIS] Integração SQL Server e Oracle
2 de maio de 2014 3 Comentários
Fala Galera,
Sei que estou sumido. As coisas tem estado um tanto quanto caóticas. Muitos projetos simultâneos e tecnologias novas para aprender; Eu destacaria Websphere MQ, AIX e Oracle Forms.
Mas hoje, aproveitando a madrugada do feriado do dia do trabalho, vou fazer post simples e objetivo sobre como fazer integração entre uma base de dados Oracle 11g (rodando em um red hat) e um SQL Server 2012, através do integration services. O assunto está dividido em duas partes;
- Preparando o ambiente [obtendo e instalando o driver Oracle ODBC e configurando o tnsnames.ora]
- Criando um pacote para transferência de dados entre as bases.
obs: Eu fiz o mesmo procedimento como o SQL 2008, a diferença é que para o 2008 só conseguimos usar um driver ODBC e para o 2012 conseguimos usar o OLEDB ou ODBC 🙂
Vamos lá..
Preparando o ambiente
Primeira coisa: Precisamos fazer o download do provider ODBC 32bits da Oracle.
http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip
- Descompactar o Client do Oracle Driver ODBC 32 bits
- Execute o C:\comp\win32_11gR2_client\client\setup.exe
Selecione a instalação como administrador e vá em Next
- Reinicie o servidor
- Configure o tnsnames.ora localizado em: [UNIDADE INSTALAÇÂO DO DRIVER ]:\app\Administrator\product\11.2.0\client_1\network\admin
O tnsnames é um arquivo de configuração, onde todos os dados de acesso do seu banco deverão ser armazenados./
mais informações podem ser encontradas em: http://docs.oracle.com/cd/B28359_01/network.111/b28317/tnsnames.htm#NETRF007
Linux1=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dev1ora.devlin.com)
)
)
Após configurarmos nosso tnsnames.ora, iremos utilizar o comando “tnsping” para que a conexão entre os dois hosts (SQL e ORACLE) seja validada.
Criando seu pacote de integração
Pré–requisito: Criação de sinônimos das tabelas que farão parte da integração.
Faça o login na sua base de dados oracle, encontre a tabela que você deseja que faça parte da integração e crie um sinonimo para ela; caso contrário ela não será listada como uma entidade válida para fazer parte da task.
Abra o Visual Studio
- Crie um novo projeto do integration services.
- Adicione uma “DATA FLOW TASK”. Clique 2x nela
- Adicione uma fonte de dados (ADO NET SOURCE)
- configure a conexão com seu banco SQL Server
- Adicione uma “OLE DB Destination”. Clique 2x
- Clique em “new” para configurar a nova fonte de dados. Uma nova janela será aberta “configure OLE DB connection manager”. Clique em new.
- No topo da tela, no list box “provider”; selecione o Oracle provider for OLE DB e clique OK
- Preencha os dados de conexão, conforme no arquivo TNSNAMES.ORA. Depois clique em testar conexão.:
- Se tudo tiver configurado adequadamente, a seguinte mensagem será apresentada
- De OK nas próximas 2 janelas. Até que a seguinte janela seja apresentada. Ao clicar no list box “Name of the table or the view”, todas as tabelas do oracle serão apresentadas.(Lembrando que será necessário que exista um sinônimo da tabela.)
- Depois clique em Mapping e faça o apontamento de onde cada campo (fonte / destino) e clique em OK
- Ligue as duas tasks recém adicionadas (source > destination)
- Altere o parâmetro Run64RunTime to false.
- Botao direito no nome do projeto (1)
- Vá em propriedades (2)
- Configuration Properties > Debugging > Debug Options > Run64BitRunTime e altere para “false” (3).
- Execute seu pacote.
e é isso 🙂
[]’s
Republicou isso em Alex Souza.
Dhiego, Muito bom o seu post. Obrigado.
Você sabe dizer se isso funciona para um ambiente semelhante, mas sendo 64bits?
Fala Reginaldo,
Funciona sim! Mas tem que usar o driver de 32bits, tentei com o x64 e não rolou.
Abraço!