Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Fernando

update automatico em outo banco.

Recommended Posts

Ola pessoal boa tarde.

 

Estou precisando montar a seguinte rotina:

 

 

Preciso exportar um banco de dados para ORACLE 11G porem não para por ai a aplicação continuará utilizando o SQLSERVER 2012.

 

Dessa forma o banco SQLSERVER 2012 continuará a ser alimentado com informação.

 

Eu não entendo de "Procedures" não sei se seria esse caso vou fazer um DBLINK do SQLSERVER X ORACLE porem não sei como fazer para que por exemplo o banco ORACLE seja atualizado a cada 50 novos registros adicionados on SQLSERVER.

 

 

Se alguem tiver alguma ideia por favor me avise.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem é o 'dono' da aplicação , lado Oracle ou SqlServer ?

Qual volume disto ?

Em termos de segurança o quanto é crítico ?

Qual o ambiente em questão ? Que linguagens são usadas ? Que Sistemas Operacionais.

 

 

Um solução simples seria um programa disparado de n em n minutos, lendo de um BD fazendo críticas, tratamentos e conversões e atualizando o outro BD.Não abre "brechas" como dblinks é simples mas pode ser meio lento se o volume for grande.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta obrigado pela ajuda ai vai.

 

O "dono" da aplicação é o SQLSERVER.

 

O volume é baixo arrisco dizer que não passa de 20 inserts a cada 40minutos

 

Em segurança não é um fator preocupante a maioria dos dados se trata de números e cálculos e não é nada "Valioso".

 

Quanto a linguagem utilizada o sistema que se comunica com o sqlserver é o indusoft web studio, porem o oracle não terá comunicação nenhuma ele apenas vai receber as informações do sqlserver.

 

O sistema que tem o SQLSERVER2012 instalado e funcionando com a aplicação do indusoft é o windows7 e o servidor que tem o oracle é um linux mais ainda tenho que verificar ao certo qual é a versão.

 

Voce pode me dar exemplos de programas free que eu poderia utilizar para fazer o que me disse ?

 

E o mais dificil de tudo algo que seja um pouco simples, eu não estou com muito tempo para fazer isso.

 

 

Eu estava imaginando utilizar o pentaho o BI open source, porem ele é um pouco complicado.

 

fico no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este indusoft web studio acessa Oracle e Sql Server ?

 

O mais simples pode ser uma aplicação lendo uma base, tratando as diferenças e inserindo na outra.

Este processo seria disparado por um agendador (pode ser o do Windows de um servidor )

Após o fim ele log o processo via email , talvez o email apenas se houver erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Motta, não o indusoft acessa apenas o SQLSERVER

 

Deu um bom trabalho mais eu criei a conexão no sqldeveloper com o sqlserver2012.

 

Acabei de fazer um teste de migração e agora vou ver como ficou.

 

Eu não conheço praticamente nada de sqldeveloper.

 

Não sei se é possivel efetuar esse processo automatico por ele mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cria o "job" no SqlServer, mas aí não sei como se faz, mas deve ter algo assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou mega ocupado esta semana com algumas migrações e diversos projetos, mas pq nao cria um linked server do SQL para o Oracle??

Nao consegui ler o post todo, mas seria uma ideia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu ja criei o Linked server. Na verdade nunca utilizei linkedserver.

 

Agora estou tendo dificuldades para criar a JOB. O SQLSERVER AGENT não inicia.

 

Eu tento inicia-lo mais ele apresenta problemas e não é iniciado.

 

 

Agora descobri o porque não estou conseguindo usar o SQLSERVER AGENT.

 

A versão do SQLSERVER 2012 é a EXPRESS

Pelo que pesquisei o EXPRESS não suporta o AGENT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu ja criei o Linked server. Na verdade nunca utilizei linkedserver.

 

Agora estou tendo dificuldades para criar a JOB. O SQLSERVER AGENT não inicia.

 

Eu tento inicia-lo mais ele apresenta problemas e não é iniciado.

 

 

Agora descobri o porque não estou conseguindo usar o SQLSERVER AGENT.

 

A versão do SQLSERVER 2012 é a EXPRESS

Pelo que pesquisei o EXPRESS não suporta o AGENT.

Exato, mas tem suporte ao linkedserver

 

LinkedServer eh uma extensao do servidor de destino, no seu caso o Oracle.

Com ele, eh possivel fazer desde select no Oracle pelo SQL ateh mesmo insert.

 

Qual a versao do Oracle?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falei job mas talvez uma trigger seja viável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal não sei se é simples ou é o caso de abrir um outro topico só para isso.

 

Estou fazendo teste agora em meu computador aqui de casa instalei o sqlserver2012 em uma maquina virtual mais quando vou fazer o linked server com o oracle em provider não está aparecendo o Microsoft OLE DB Provider for Oracle.

 

Muito estranho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos ressuscitando o tópico eu ainda não consegui finalizar o problema acima eu acabei nem tentando resolver isso é algo que estava acontecendo em meu computador.

 

Mais continuando. Eu montei o Linkedserver.

 

Depois criei uma Trigger insert bem simples apenas no mesmo banco.

 

A trigger que eu criei foi a seguinte:

/* Cria uma nova trigger responsável por duplicar os dados inseridos na tabela tblAluno
a irem tambem para a tabela CopytblAluno */


CREATE TRIGGER TgrCopyAluno
ON tblAluno
FOR INSERT
AS
BEGIN
    DECLARE
	@IdAluno int,
	@Nome varchar(100),
	@DataNascimento datetime;

	SELECT 
	    @IdAluno = IdAluno,
		@Nome = Nome,
		@DataNascimento = DataNascimento
	FROM 
	    INSERTED
	INSERT INTO CopytblAluno
	(
	IdAluno,
	Nome,
	DataNascimento
	)
	VALUES
	(
	@IdAluno,
	@nome,
	@DataNascimento
	)
	END

Porem ao adicionar isso para o linkedserver estou tendo problemas.

 

ele apresenta o seguinte erro:

 

msg 8501

MSDTC on server '<nome do server>' is unavailable.

 

 

O linked server esta funcionando corretamente o problema esta sendo somente na trigger mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Devagar que sao dois erros ai.

O linked server funciona?

Onde ele esta mapeado no trigger? Pois estou vendo somente ele dar um insert na CopytblAluno. Ela esta no Oracle ou no SQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola A.Jr.

 

Então o erro que estava apresentando era o 8501 em todos os lugares que eu li (maioria em ingles) falaram que era para ativar o "Distributed Transaction Coordinator" eu ativei e segui todos os passas porem passou a apresentar outro erro 7391 que ainda diz estar relacionado ao serviço porem eu ativei ele, desativei o firewall do windows para testar e nada.

 

O linked server está funcionando certinho já fiz diversos testes de select e insert. O que não funciona é a trigger.

 

Agora eu estou sem o exemplo da query que esta apresentando o erro.

 

Mais é basicamente a mesma query que apresentei acima com a diferença que o.

 

INSERT INTO CopytblAluno

 

na realidade é

 

INSERT INTO linkedserver.banco

 

o linkedserver esta no SQLSERVER.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok.

O DTC esta ativo e se vc fizer um "update na unha" no Oracle pelo SQLServer funciona?

Qual a mensagem de erro completa?!

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, na verdade seria um "INSERT" o insert na unha está funcionando perfeitamente e eu consigo inserir linhas do SQLSERVER para o ORACLE sem problemas.

 

O erro está acontecendo apenas com a trigger ativa.

 

Segue o erro completo:

 

MSG 8501, Level 16, State 3, Procedure CopyCarga01, Line 15

MSDTC on server 'OR-PC\SQLEXPRESS' is unavaliable.

 

 

só para especificar

CopyCarga01 = nome da trigger

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isso:

 

Vá em:

START > SETTINGS > CONTROL PANEL > ADMINISTRATIVE TOOLS > SERVICES

Localize o serviço: "Distributed Transaction Coordinator" e verifique se o usuário que esta ativando este serviço tem acesso ao SQL e ao Oracle. Se estiver como Network Services, mantenha assim.

 

Na sua trigger, coloque:

SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION
 
[SEUS COMANDOS]
 

COMMIT TRANSACTION
SET XACT_ABORT OFF

Ah!!!

Mais uma coisa que tem que ser observada:

 

Administrative Tools -> Component Services

Component Services -> Computers

Botao direito -> Properties -> MSDTC

Verifique também o usuario que esta na guia "Security"

http://alexduggleby.com/2008/08/24/msdtc-unavailable-for-sql-express-transactions-or-who-took-my-msdtc-settings-on-vista/

 

[]´S

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.