Obtendo um problema estranho com a função TO_NUMBER no Oracle

Tenho recebido um problema intermitente ao executar a função to_number na cláusula where em uma coluna varchar2 se o número de registros exceder um determinado número n. Eu usei n, pois não há um número exato de registros nos quais isso acontece. Em um banco de dados, isso acontece depois que n era 1 milhão em outro quando era 0,1. milhão.

Por exemplo. Eu tenho uma tabela com 10 milhões de registros, digamos Table Country, que possui o campo1 varchar2 contendo dados numéricos e ID

Se eu fizer uma consulta como exemplo

select * 
from country 
where to_number(field1) = 23
and id >1 and id < 100000

Isso funciona

Mas se eu fizer a consulta

select * 
from country 
where to_number(field1) = 23 
and id >1 and id < 100001

Falha ao dizer número inválido

Em seguida, tento a consulta

select * 
from country
where to_number(field1) = 23 
and id >2 and id < 100001

Funciona novamente <, / p>

Como eu só obtive um número inválido, era confuso, mas no arquivo de log dizia

Memory Notification: Library Cache Object loaded into SGA
Heap size 3823K exceeds notification threshold (2048K)
KGL object name :with sqlplan as (
    select c006 object_owner, c007 object_type,c008 object_name
      from htmldb_collections
     where COLLECTION_NAME='HTMLDB_QUERY_PLAN'
       and c007 in ('TABLE','INDEX','MATERIALIZED VIEW','INDEX (UNIQUE)')),
ws_schemas as(
    select schema 
      from wwv_flow_company_schemas
     where security_group_id = :flow_security_group_id),
t as(
        select s.object_owner table_owner,s.object_name table_name,
               d.OBJECT_ID
          from sqlplan s,sys.dba_objects d

Parece que está relacionado ao tamanho da SGA, mas o google não me ajudou muito nisso.

Alguém tem alguma idéia sobre esse problema com as funções TO_NUMBER ou oracle para dados grandes?

questionAnswers(4)

yourAnswerToTheQuestion