- Este tópico contém 13 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 5 meses atrás por
braza.
-
AutorPosts
-
6 de outubro de 2009 às 6:09 pm #90128
braza
Participanteolá,
Estou fazendo um exp de uma tabela chamada “historico_pag” do esquema “piramide” da minha base de producao.
segue o comando exp:
exp userid=piramide/**** file=histpag.dmp tables=(piramide.historico_pag)
Quando eu importo para o esquema “ab”, também na base de producao, não consigo habilitar a chave primária dessa tabela, pois o imp leva 4 registros repetidos.
segue o comando imp:
imp userid=piramide/**** file=histpag.dmp fromuser=piramide touser=ab
Não sei como esses 4 registros se repetiram. Gostaria de uma ajuda para resolver esse problema.
OBS:
Versão do banco: Oracle8i Enterprise Edition Release 8.1.7.0.0As duas tabelas “piramide.historico_pag” e “ab.historico_pag” tem a mesma quantidade de registros. 294.262.
Quando procuro por linhas repetidas na tabela “piramide.historico_pag” não encontro. Quando procuro na “ab.historico_pag” encontro 4 registros repetidos.
verifico os campos cheve com o seguinte select:
select
*
from historico_pag hp
where (hp.filial,hp.fornec,hp.titulo,hp.numparcela) in
(
select
hp.filial,hp.fornec,hp.titulo,hp.numparcela
from historico_pag hp
group by hp.filial,hp.fornec,hp.titulo,hp.numparcela
having count(*) > 1
)Como o GPO poderia me ajudar nesta tarefa ???
grato,
braza.
6 de outubro de 2009 às 7:11 pm #90131Marcio68Almeida
ParticipanteVocê tentou criar um índice não único nesta tabela com as colunas que fazem parte da PK para fazer uma nova avaliação ?
Você rodou estatísticas nesta tabela importada ?
A sua PK na outra tabela está válida ?6 de outubro de 2009 às 7:16 pm #90133vieri
ParticipanteCrie a tabela (DDL) na munheca,
antes de importar a mesma…e inclua o parâmetro ignore=y no imp.
ai quando ele for importar os dados ele irá rejeitar as linhas
que não obederem a PK, ficando a tabela somente com registros limpos.tenta ai e posta o result.
Deverá aparacer algo desse tipo:
> > >IMP-00019: row rejected due to ORACLE error 1
> > >IMP-00003: ORACLE error 1 encountered
> > >ORA-00001: unique constraint (TEST.TEST_UK) violated
> > >Column 1 1
> > >Column 2 1
> > >Column 3 16 de outubro de 2009 às 8:03 pm #90135braza
ParticipanteRespondendo ao colega “Marcio68Almeida”.
A minha pk na outra tabela está válida sim.
Tentei criar um índice único também e não consegui.
Mas as estatísticas da minha tabela está desatualizada sim.Vou fazer um analyze nesta tabela e tentar o import novamente se não der certo vou tentar seguir a dica do nosso colega “vieri” que é criar a tabela na “munheca” e pedir para ignorar as duplicidades de registro.
obrigado pela ajuda.
braza.
Logo mais posto o resultado.
6 de outubro de 2009 às 9:28 pm #90137Marcio68Almeida
Participante[quote=”braza”:3df5ykv6]Tentei criar um índice único também e não consegui.
Logo mais posto o resultado.[/quote]
A idéia é criar um índice não único e ver se aparecem as duplicidades ao fazer a consulta que você indicou…
6 de outubro de 2009 às 9:36 pm #90139braza
Participanteok.
Tinha entendido errado.
Estou terminando um novo import agora. Quando terminar tento criar o indice NAO UNICO.
blz.
6 de outubro de 2009 às 10:46 pm #90145braza
Participanteola pessoal,
Fiz o analyze na tabela importada e fiz novamente o import e não consegui ativar a chave primária.
Estou agora criando um índice não unico para rever os registros duplicados.
Mas o problema vai ser o seguinte, eu vou precisar mandar um dump desse meu esquema para uma outra empresa fazer uma análise num software que a gente roda aqui na empresa. Se esse dump estiver com essa duplicidade nessa tabela, eles não vão aceitar e vão nos pedir um dump “correto”.
o GPO tem alguma idéia do pôrque isso aconteceu ???
grato,
braza.
6 de outubro de 2009 às 10:59 pm #90146braza
Participanteolá pessoal,
Crieu o indice não único na tabela importada e verifiquei novamente a duplicidade.
O mesmo select indentificou um registro no esquema “piramide” (esquema origem) e dois registros no esquema “ab” (esquema destino).
Vou tentar a dica do colega “vieri” agora.
Mas o que eu preciso mesmo e gerar um dump para enviar para outra empresa. e este dump tem que está sem as duplicidades.
qualquer linha de raciocínio é válida.
grato,
braza.
6 de outubro de 2009 às 11:01 pm #90147Ishii
ParticipanteOlá,
Lembro-me vagamente na versão 8.1.7 alguns casos com esse “mistério” da PK duplicada. Nunca realmente consegui resolver, apenas exclui as linhas e depois ativei a PK. Sempre ficou a dúvida sobre em algum momento as PKs estarem desabilitadas mas não consegui comprovar isso nunca. Tive quase o mesmo cenário, criando uma base de testes uma tabela tinha 2 linhas em branco (sem nenhum dado) e mesmo que eu fizesse o import em outros owners isso permanecia, porém na Base de Produção nunca apareceu… na Migração de Servidor tivemos que excluir manualmente mesmo…
[]s Ishii
6 de outubro de 2009 às 11:18 pm #90148braza
Participanteok Ishii.
Valeu mesmo.
Um depoimento de uma pessoa que já passou por esse problema já me deixa mais tranquilo.
Vou continuar tentando.
Qualquer resultado posto no GPO.
Estou tentando agora a dica do colega “vieri”
grato,
braza.
6 de outubro de 2009 às 11:20 pm #90149vieri
Participantecria a tabela na mão inclusive com as constraints!!!
depois faça o import com constraint=n , ignore=y.Na hora de importar os dados , ele irá rejeitar registros duplicados por causa da PK !!
entendeu ??
6 de outubro de 2009 às 11:22 pm #90150vieri
Participantese ele não rejeitar irá cair na situação que o ishi relatou…
ai você desabilita,deleta e habilita
6 de outubro de 2009 às 11:30 pm #90151Ishii
ParticipanteOlá,
Na versão 8.1.7 aliás, aconteceram os casos mais estranhos que já vi:
Teve um dia que todas as triggers estavam desabilitadas depois do servidor reiniciar e ninguém ter feito nada. Quando rodava uma atualização de objetos do Oracle (procedures, triggers, views, packages) algumas vezes no spool ficava a mensagem Procedure created mas a procedure não foi atualizada com o código novo e isso não ocorria com o mesmo objeto, variava de objeto para objeto, o POG neste caso era rodar os scripts duas vezes. Mas o melhor mesmo foi quando o user owner do Objeto não conseguia mais fazer o replace no objeto, eu tinha um owner com uma Procedure XPTO e se eu conectasse com esse mesmo owner e rodasse o script de atualização da procedure XPTO que já existia, retornava mensagem: Insuficient Privileges!!!! mesmo com o create, alter any procedure ou até a role DBA…o POG era conectar como system e colocar o owner para a criação (replace) do objeto…
Como faz um tempo que os clientes estão no 9i, não me lembrava mais desses tipos de problemas…
[]s Ishii
6 de outubro de 2009 às 11:32 pm #90152braza
ParticipanteOk Vieri.
To fazendo o import agora.
Mas só posto o resultado amanhã. Porque vou ter que sair agora.
Mas valeu mesmo pessoal.
grato,
braza.
-
AutorPosts
- Você deve fazer login para responder a este tópico.