Bem, a msg de erro é Extrememante clara, indicando que vc está tendo mismatch 
de NLS : o que deve estar acontecendo aí é que : como creio que vc sabe, quando 
vc cria um job, ele assume os settings de NLS da sessão (veja exemplo abaixo, 
coluna NLS_ENV na query da DBA_JOBS) , e pelo jeito vc tem na rotina chamada 
pelo job algum tipo de conversão implícita (de string para data ou número, 
provavelmente)  ** OU ** tem algum setting NLS (de linguagem, calendário, 
formato de data, whatever)...
 
 Sendo isso, aí se explica o que vc relata : quando vc conecta via algum 
programa-cliente e roda manualmente a rotina, o NLS da sessão está setado como 
o job espera, aí funciona, MAS quando vc deixa o JOB rodar/criar sozinho a 
sessão logicamente ele não conecta via programa algum, e nem abre sessão/prompt 
de comando no ambiente então ele usa os defaults NLS do database, que são 
Diferentes do esperado...
 
 Primeiro, uma demonstração de que o JOB assume o NLS da sessão, e não o do 
database :
 
 SYSTEM@O11201:SQL>select * from nls_database_parameters;

PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               WE8MSWIN1252
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 AM
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            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_RDBMS_VERSION              11.2.0.1.0

20 linhas selecionadas.

SYSTEM@O11201:SQL>select * from nls_session_parameters;

PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE                   BRAZILIAN PORTUGUESE
NLS_TERRITORY                  BRAZIL
NLS_CURRENCY                   R$
NLS_ISO_CURRENCY               BRAZIL
NLS_NUMERIC_CHARACTERS         ,.
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD/MM/RR
NLS_DATE_LANGUAGE              BRAZILIAN PORTUGUESE
NLS_SORT                       WEST_EUROPEAN
NLS_TIME_FORMAT                HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT           DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY              Cr$
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE

17 linhas selecionadas.

SYSTEM:@O11201:SQL>ed
Gravou file afiedt.buf

  1  BEGIN
  2      dbms_job.submit(
  3        :jobno, 'BEGIN null; END;', sysdate, 'trunc(sysdate+5/1440,''MI'')', 
TRUE);
  4      commit;
  5* END;
SYSTEM:@O11201:SQL>/

Procedimento PL/SQL concluído com sucesso.

select JOB, LOG_USER,BROKEN,INTERVAL,FAILURES,WHAT,NLS_ENV from dba_jobs where 
log_user='SYSTEM';

JOB LOG_USER BROKEN INTERVAL                     FAILURES WHAT               
NLS_ENV                                                                         
                                                                                
                                                                              
--- -------- ------ -------------------------- ---------- ------------------ 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 65 SYSTEM   N      trunc(sysdate+5/1440,'MI')          0 BEGIN null; END;   
NLS_LANGUAGE='BRAZILIAN PORTUGUESE' NLS_TERRITORY='BRAZIL' NLS_CURRENCY='R$' 
NLS_ISO_CURRENCY='BRAZIL' NLS_NUMERIC_CHARACTERS=',.' 
NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss' NLS_DATE_LANGUAGE='BRAZILIAN 
PORTUGUESE' NLS_SORT='WEST_EUROPEAN'   


==> Até seria possível em tese se alterar o NLS do database para bater 
exatamente com o assumido pelo JOB, mas imho isso é uma porquice : a solução 
CORRETA é programação DEFENSIVA, que implica em NUNCA, JAMAIS, em TEMPO ALGUM, 
confiar nos defaults de NLS - LOCALIZE na tal rotina onde que vc faz conversão 
(INCLUSIVE implícita, via SQL!!) e/ou usa built-ins de data/hora/TZdatabase ou 
de sessão e EXPLICITAMENTE indique os formatos/datatype/linguagem/setting NLS 
que vc deseja...

  []s
  
    Chiappa
  • [oracle_br] ORA-018... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
    • [oracle_br] Re... jlchia...@yahoo.com.br [oracle_br]
      • RES: [orac... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]

Responder a