atualizar algumas tabelas em outro servidor
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
Eu trabalho na minha empresa com 0racle 10g instalado num ibm e tenho outro oracle numa maquina linux. Como no ibm o oracle tem o trafego muito grande, e eu so uso cinco tabelas que estão la, eu salvei estas tabelas no oracle que esta no linux. Ate tudo bem, so que eu gostaria que esse processo fosse automatico e estas tabelas fossem atualizadas diariamete. alguém tem algum exemplo de script ou algum programa externo que faça esta manutenção.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, segue uma dica:
Passos:
1) Criar uma procedure PL/SQL, comDbLinhks, que verifique a diferença das tabelas e faça o "MERGE" delas.
2) Criar um Job, que processe esta procedure de tempos em tempos.
Sobre a criação da procedure com merge, e o job, dê uma procurada aqui no fórum mesmo, que irá achar tópicos interessantes.
Qualquer coisa, manda ai.
Passos:
1) Criar uma procedure PL/SQL, comDbLinhks, que verifique a diferença das tabelas e faça o "MERGE" delas.
2) Criar um Job, que processe esta procedure de tempos em tempos.
Sobre a criação da procedure com merge, e o job, dê uma procurada aqui no fórum mesmo, que irá achar tópicos interessantes.
Qualquer coisa, manda ai.
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
Amigo,
fiz este sql com o merge, mas este erro.
ora-00969 na linha 2 coluna 14 falta do ON
eu to com o manual do oracle aqui e a sintaxe me parece correta.
aqui vai o script se pode me ajudar neste caso.
fiz este sql com o merge, mas este erro.
ora-00969 na linha 2 coluna 14 falta do ON
eu to com o manual do oracle aqui e a sintaxe me parece correta.
aqui vai o script se pode me ajudar neste caso.
Merge
INTO sisesgoto.stc_agua_tratada d USING stc.stc_agua.tratada s ON(s.cod_us = d.cod_us
AND s.cod_eta = d.cod_eta
AND s.dt_agua_trat = d.dt_agua_trat)
WHEN matched THEN
UPDATE
SET d.cod_us = s.cod_us,
d.cod_eta = s.cod_eta,
d.dt_agua_trat = s.dt_agua_trat,
d.vol_agua_tratada = s.vol_agua_tratada,
d.qtd_filtros_servico = s.qtd_filtros_servico,
d.nro_filtro_analisado = s.nro_filtro_analisado,
d.cons_agua_lavagem = s.cons_agua_lavagem,
d.pe_cons_agua_lavagem = s.pe_cons_agua_lavagem,
d.dt_inclusao = s.dt_inclusao,
d.dt_alteracao = s.dt_alteracao,
d.usuario = s.usuario,
d.evento = s.evento,
d.hrs_recalque_hhh = s.hrs_recalque_hhh,
d.hrs_recalque_mm = s.hrs_recalque_mm,
d.carreira_md_filtros_lavado_hhh = s.carreira_md_filtros_lavado_hhh,
d.carreira_md_filtros_lavado_mm = s.carreira_md_filtros_lavado_mm
WHEN NOT matched THEN
INSERT
VALUES(s.cod_us, s.cod_eta, s.dt_agua_trat, s.vol_agua_tratada, s.qtd_filtros_servico, s.nro_filtro_analisado, s.cons_agua_lavagem, s.pe_cons_agua_lavagem, s.dt_inclusao, s.dt_alteracao, s.usuario, s.evento, s.hrs_recalque_hhh, s.hrs_recalque_mm, s.carreira_md_filtros_lavado_hhh, s.carreira_md_filtros_lavado_mm);
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Segue um exemplo do MERGE:
Realmente o ON não estava na sintaxe q me passou.
Segue um exemplo do MERGE:
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id FROM employees
WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
VALUES (S.employee_id, S.salary*0.1);
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
cara, fiz o q você disse mas me da um erro que não consigo achar a resposta.
é o seguinte
mas se eu alterar aqui
deveria funcionar
vê se da uma luz.
MERGE INTO sisesgoto.stc_agua_tratada1 D
USING (SELECT
cod_us,
cod_eta,
dt_agua_trat,
vol_agua_tratada,
qtd_filtros_servico,
nro_filtro_analisado,
qtd_filtros_lavado,
cons_agua_lavagem,
pe_cons_agua_lavagem,
dt_inclusao,
dt_alteracao,
usuario,
evento,
hrs_recalque_hhh,
hrs_recalque_mm,
carreira_md_filtros_lavado_hhh,
carreira_md_filtros_lavado_mm
FROM sisesgoto.stc_agua_tratada d
WHERE cod_us = 27) S
ON (s.cod_us=d.cod_us) /* erro acontece aqui */
WHEN MATCHED THEN UPDATE SET
d.cod_us = s.cod_us,
d.cod_eta = s.cod_eta,
d.dt_agua_trat = s.dt_agua_trat,
d.vol_agua_tratada = s.vol_agua_tratada,
d.qtd_filtros_servico = s.qtd_filtros_servico,
d.nro_filtro_analisado = s.nro_filtro_analisado,
d.qtd_filtros_lavado= s.qtd_filtros_lavado,
d.cons_agua_lavagem = s.cons_agua_lavagem,
d.pe_cons_agua_lavagem = s.pe_cons_agua_lavagem,
d.dt_inclusao = s.dt_inclusao,
d.dt_alteracao = s.dt_alteracao,
d.usuario = s.usuario,
d.evento = s.evento,
d.hrs_recalque_hhh = s.hrs_recalque_hhh,
d.hrs_recalque_mm = s.hrs_recalque_mm,
d.carreira_md_filtros_lavado_hhh = s.carreira_md_filtros_lavado_hhh,
d.carreira_md_filtros_lavado_mm = s.carreira_md_filtros_lavado_mm
WHEN NOT MATCHED THEN INSERT
(
d.cod_us,
d.cod_eta,
d.dt_agua_trat,
d.vol_agua_tratada,
d.qtd_filtros_servico,
d.nro_filtro_analisado,
d.qtd_filtros_lavado,
d.cons_agua_lavagem,
d.pe_cons_agua_lavagem,
d.dt_inclusao,
d.dt_alteracao,
d.usuario,
d.evento,
d.hrs_recalque_hhh,
d.hrs_recalque_mm,
d.carreira_md_filtros_lavado_hhh,
d.carreira_md_filtros_lavado_mm)
VALUES
(s.cod_us,
s.cod_eta,
s.dt_agua_trat,
s.vol_agua_tratada,
s.qtd_filtros_servico,
s.nro_filtro_analisado,
s.qtd_filtros_lavado,
s.cons_agua_lavagem,
s.pe_cons_agua_lavagem,
s.dt_inclusao,
s.dt_alteracao,
s.usuario,
s.evento,
s.hrs_recalque_hhh,
s.hrs_recalque_mm,
s.carreira_md_filtros_lavado_hhh,
s.carreira_md_filtros_lavado_mm
);
ON (s.cod_us=d.cod_us) /* erro acontece aqui */
com a linha como esta da erro de nome invalido de coluna.
ON (s.cod_us=27) /* isso funciona mas não me serve */
s.cod_us=d.cod_us
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, bom dia.
Posta o erro aqui pra gente analisar.
Posta o erro aqui pra gente analisar.
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
o erro é este aqui.
Error at Command Line:2 Column:15
Error report:
SQL Error: ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
desculpe, postei o erro inconrreto, desconsidere o acima.
Error at Command Line:25 Column:15
Error report:
SQL Error: ORA-00904: nome inválido de coluna
00904. 00000 - "%s: invalid identifier"
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
trevisolli,
Cara é o seguinte, já consegui fazer funcionar, não como deveria mas
substitui as linha aonde deveria comparar o numero da us por estas
como eu tenho 500 codigo de us, então mando procurar todas as alterações. Com a tabela vazia fica facil e rapido, por ele so fazer o insert, mas o update ficou demorado. Vou rever isso.
Bem aqui acabou a etapa de desenvolvimento, agora vem o dificl para mim , eu acho.
tenho dois servidores oracle, um num ibm e outro no linux em lugares distantes com tns difrentes.
IBM
LINUX
Pergunta??
Como faço para fazer o merge das tabelas do IBM para as tabelas no servidorlinux??
a tabela stc_agua_tratada esta no IBM e
a tabela stc_agua_tratada1 esta no servidorlinux
como faço para o select achar as tabelas nos devido servidores??
isso aqui tentei e não funcionou
obs. estes nomes de maquina são so exemplos (ficticios).
aqui eu pesso agua!!! hehehehe
Cara é o seguinte, já consegui fazer funcionar, não como deveria mas
substitui as linha aonde deveria comparar o numero da us por estas
WHERE cod_us between 1 and 500)
ON(s.cod_us between 1 and 500)
Bem aqui acabou a etapa de desenvolvimento, agora vem o dificl para mim , eu acho.
tenho dois servidores oracle, um num ibm e outro no linux em lugares distantes com tns difrentes.
IBM
IBM.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = IBM.oracle.CIA.CIA)(PORT = 1524))
(CONNECT_DATA = (SID = IBM) (SERVER=DEDICATED))
linux.cia2.cia2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = servidorlinux)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = linux)
)
)
Como faço para fazer o merge das tabelas do IBM para as tabelas no servidorlinux??
a tabela stc_agua_tratada esta no IBM e
a tabela stc_agua_tratada1 esta no servidorlinux
como faço para o select achar as tabelas nos devido servidores??
isso aqui tentei e não funcionou
ibm.stc_agua_tratada (IBM)
linux.stc_agua_tratada1(linux)
aqui eu pesso agua!!! hehehehe
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Então brother,
Pra se realizar este select, em bases distintas, tem que ser criado um DBLink (Database Link) entre os servidores.
Isso deve ser analisado com o DBA responsável na empresa, que deverá criar este link pra você.
Aqui no fórum, existem exemplos interessantes de utilização e de criação.
Procure aqui por DBLink que irá achar tópicos interessantes, como este.
Qualquer dúvida, manda ai.
Pra se realizar este select, em bases distintas, tem que ser criado um DBLink (Database Link) entre os servidores.
Isso deve ser analisado com o DBA responsável na empresa, que deverá criar este link pra você.
Aqui no fórum, existem exemplos interessantes de utilização e de criação.
Procure aqui por DBLink que irá achar tópicos interessantes, como este.
Qualquer dúvida, manda ai.
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
Trevisolli,
esta tudo certo com o merge, funcionou beleza. So uma duvida quanto ao dblink, eu so preciso criar um dblink so para o servidor destino ou para as duas maquinas??
o oracle no ibm eu tenho as tabelas que quero selecionar, então devo criar o dblink para a maquina linux e rodar o script no oracle ibm ou vice versa ou seja crio na maquina linux aonde estao as tabelas destinos um dblink para o oracle ibm e rodo o script na maquina linux??
esta tudo certo com o merge, funcionou beleza. So uma duvida quanto ao dblink, eu so preciso criar um dblink so para o servidor destino ou para as duas maquinas??
o oracle no ibm eu tenho as tabelas que quero selecionar, então devo criar o dblink para a maquina linux e rodar o script no oracle ibm ou vice versa ou seja crio na maquina linux aonde estao as tabelas destinos um dblink para o oracle ibm e rodo o script na maquina linux??
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 09 Out 2007 11:36 pm
- Localização: Porto Alegre - RS
Trevissoli,
Muito obrigado pelas dicas e gostaria finalizar este topico. já criei os dblink e o merge esta funcionado e agendado.
Att
Henrique
Muito obrigado pelas dicas e gostaria finalizar este topico. já criei os dblink e o merge esta funcionado e agendado.
Att
Henrique
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, demorei um pouco pois estava num projeto...
Que bom que deu certo, se puder, detalhe os passos aqui , para quem mais necessitar de ajuda.
Muito obrigado,
Que bom que deu certo, se puder, detalhe os passos aqui , para quem mais necessitar de ajuda.
Muito obrigado,
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante