- Este tópico contém 15 respostas, 7 vozes e foi atualizado pela última vez 17 anos atrás por
jspaulonci.
-
AutorPosts
-
20 de fevereiro de 2009 às 1:19 pm #85405
jspaulonci
ParticipanteMoçada…estou aqui com um negócio bizarro .
Tenho uma procedure que quando eu a executo manualmente ela roda com sucesso, quando eu a crio com um job para executa-la ela dá o erro
[color=red]ORA-12012: error on auto execute of job 5121
ORA-01427: single-row subquery returns more than one row
ORA-02063: preceding line from DBLK_PGSF_PRD3
ORA-06512: at “PGSF.PR_TESTE”, line 5
ORA-06512: at “PGSF.PR_ATUALIZAR_FISCAIS”, line 90
ORA-06512: at line 1[/color]Alguem sabe o que pode ser esse erro ?
Abraços
João Paulo Spaulonci20 de fevereiro de 2009 às 3:17 pm #85406Leonardo Litz
ParticipanteOlá João, voce poderia colocar a procedure para gente dar uma olhada?
20 de fevereiro de 2009 às 5:16 pm #85411jspaulonci
ParticipanteOlha moçada…..não sei se é pra Rir..chorar…… rasgar a OCP…..ou ir em São Francisco dar um pedala o Lary Ellison…(que está com bolso cheio)
Bom…escolhi chorar pois é muito bizarro.
O negócio é o seguinte…..
Eu vim resumindo o problema e cheguei no seguinte na instrução que dá o erro pra mim.Quando eu rodo a instrução no meu servidor Oracle (Sun Solaris 5.10 com client 10.2.0.3.0) ele dá erro
NUM_FISCAL NUM_VINCULO COD_SETOR
16760 1 51253 16771 1 51253 16941 1 77858 16989 1 51253 17040 1 51253 17192 1 51253 17234 1 51249 17258 1 12218 17570 1 24333 17623 1 51085ERROR:
ORA-01427: single-row subquery returns more than one row
ORA-02063: preceding line from DBLK_PGSF_PRD3120 rows selected.
O retorno de linhas desta query deveria ser 5308 linhas, acontece que quando ela executa 120 linhas dá o erro, detalhe…utilizei a ferramenta sqlplus.
Aí é que vem o problema.
Quando eu rodo , também utilizando o sqlplus , porem na minha máquina, ele executa normalmente.vocês acreditam ?
NUM_FISCAL NUM_VINCULO COD_SETOR
173451 1 12209 173633 1 13836 173669 1 13798 32132 1 19606 32417 1 19606 32624 1 512205308 linhas selecionadas.
alguem tem alguma lúz….
abraços
João Paulo Spaulonci
20 de fevereiro de 2009 às 5:33 pm #85413vieri
Participanteconsultes os parâmetros de nls da sua sessão.
SQL> select *
2 from NLS_SESSION_PARAMETERS
3 ;PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMPARAMETER VALUE
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSEO problema pode estar ai…
caso esteja diferente coloque os iguais via alter session.
20 de fevereiro de 2009 às 5:44 pm #85414jspaulonci
ParticipanteVieri…infelizmente não resolveu….mas boa tentativa..eu não tinha pensado nisso.
Abraços
João Paulo Spaulonci
20 de fevereiro de 2009 às 6:57 pm #85417vieri
Participantegere um trace da sua sessão via sqlplus local e outro trace da sua sessão via sqlplus client,
análise as diferenças…
com certeza irá acusar algo.
20 de fevereiro de 2009 às 9:02 pm #85421Rodrigo Almeida
ParticipanteE porque no client que você executa no client e recebe esse erro:
ERROR:
ORA-01427: single-row subquery returns more than one row
ORA-02063: preceding line from DBLK_PGSF_PRD3???
Abraços,
Rodrigo Almeida20 de fevereiro de 2009 às 9:04 pm #85422jspaulonci
ParticipanteRodrigo,,,,
No client da minha máquina, ou seja…realizando uma conexão via tns
não dá erro, quando entro no servidor localmente, aí o erro ocorreAbraços
João Paulo Spaulonci
20 de fevereiro de 2009 às 9:19 pm #85423David Siqueira
ParticipanteJoão meu brother tudo beleza!!!!
Cra tu vai me desculpar , mais é impossível isso, até porque o mesmo caminho que sua procedure faria executada no server é o mesmo caminho que ela faz executada do client, o único passo a mais é que enviada via client ela faz uma utilização do TNS e trafega via rede até seu BD, mais dai ela executar na sua sessão client e não executar direto do server é duro viu, tá com cara de erro de query mesmo isso meu velho, algum passo da query dessa proc tem parametro faltando ou filtragem de dados de maneira equivocada. O Vieri mandou bem na observação dos parametros, e reforço o pedido do Litz, posta ela interia aqui pra gente ver.Abcs.
David
20 de fevereiro de 2009 às 9:23 pm #85424jspaulonci
ParticipanteDavid,,,,,não tem procedure, não tem parametros cara…….não sei o que acontece…… na minha estação de trabalho roda…o servidor do banco não roda….já abri chamado na Oracle…. vamos ver o que vão dizer..
Obrigado
25 de fevereiro de 2009 às 3:15 am #85443CleitonHanzen
ParticipanteOpá..
E o que seria o objeto DBLK_PGSF_PRD3 que ele está retornando o erro no teu select?
Pelo que entendi, o teu Job chama a procedure PGSF.PR_ATUALIZAR_FISCAIS certo? O que vem a ser um este outro objeto? Trigger/procedure/função?Você está executando o processo com o mesmo usuário tanto no servidor quanto no cliente?
Isso tá muuuuuito estranho…pra mim, tem cara de estar sendo utilizados usuários diferentes, e as queries estarem sendo feitas em cima de objetos diferentes (view, tabela ou sinônimo), somente assim explicaria este problema.
26 de fevereiro de 2009 às 5:18 pm #85459jspaulonci
ParticipanteBom dia moçada, pelo que o analista da Oracle disse, o problema pode ser esse aí …… se alguem quiser dar uma olhada no Metalink, assim que eu confirmar eu publico a conclusão.
RESEARCH
Bug 7526851 ORA-1427 ON DISTRIBUTED SUBQUERY THROUGH DBLINKS
Bug 5146740 INCORRECT RESULTS ON OUTER JOIN WITH BIND VARIABLEAbraços
João Paulo Spaulonci
26 de fevereiro de 2009 às 5:30 pm #85461Ishii
ParticipanteOlá,
Então em algum momento vc está usando o DBLink? Se estiver usando verifique o tnsnames do Servidor e o do cliente e veja se tem diferenças…
[]s Ishii
26 de fevereiro de 2009 às 5:38 pm #85463jspaulonci
ParticipanteSim…uso dblink sim, mas isso eu já verifiquei.
Obrigado
26 de fevereiro de 2009 às 8:20 pm #85471CleitonHanzen
ParticipanteOpá..
Eu já tive alguns problemas com queries através de DBLInks na versão 9.2.0.7 e 10.2.0.2..
A “solução de contorno” que a Oracle me passou, era setar um parâmetro oculto..
Tenha certeza das seguintes informações:
– Executar a procedure com o mesmo usuário (tanto no server, quanto no cliente)
– Se está está acessando dados via DBLink, faça esta query no banco que este DBLink está apontandoSe já verificou isso e ainda sim não chegou à conclusão nenhuma do problema, abra um SR no suporte da Oracle que vão resolver teu problema…. 😉
-
AutorPosts
- Você deve fazer login para responder a este tópico.