Tente obter parâmetros nls de seus diferentes cases (programas ide ou java) eles devem ser diferentes
select * from NLS_SESSION_PARAMETERS
Em seguida, dentro de seu procedimento de armazenamento, defina as variáveis para torná-las iguais no caso mais rápido.
execute immediate 'alter session set NLS_SORT=''SPANISH''';
Uma vez que você SP tenha todos os parâmetros nls. Vai correr rápido.
Recentemente, encontrei um caso semelhante na sessão Alter que diminui a velocidade da consulta por meio do Hibernate. mas no caso deles eles mudam os parâmetros e depois ficam lentos.
Eu investiguei e descobri que os parâmetros NLS_COMP y NLS_SORT podem afetar como o oracle usa o plano de execução para string (quando está comparando ou ordenando)
Quando NLS_COMP for definido como LINGUISTIC, ele usará a linguagem definida em NLS_SORT.
por exemplo, se NLS_COMP =LINGUISTIC e NLS_SORT=BINARI_AI sua consulta é
select * from table where string_column like 'HI%'
internamente vai fazer
select * from table where
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')
então se você não tiver um índice para NLSSORT(column,'BINARI_AI') será muito lento.
sabendo que NLS_SORT=BINARY_AI fará sua ordenação e comparações sem distinção entre acentos e maiúsculas.