miércoles, 15 de agosto de 2007

ORA-00600 y recolección de estadísticas con ORA-00933

Esto puede ocurrir en 9iR2:
Al ejecutar un select se produce el error inesperado

ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []

Esto puede solucionarse generando las estadísticas nuevamente, invocando el paquete dbms_stats.
Al hacer eso, puede ocurrir lo siguiente al ejecutar el procedimiento dbms_stats.gather_table_stats (o gather_schema_stats):

SQL> exec dbms_stats.gather_table_stats(user,tabname => 'FACTURADOR', estimate_percent => 20, block_sample => false, method_opt => 'FOR TABLE FOR ALL COLUMNS SIZE 1', cascade => true);

ERROR at line 1:
ORA-00933: SQL command not properly ended
ORA-06512: at "SYS.DBMS_STATS", line 9375
ORA-06512: at "SYS.DBMS_STATS", line 9389
ORA-06512: at line 1

Verificar que este error no se produce si invocamos el procedimiento con cascade => false.

Esto esta relacionado con los parámetros de NLS como NLS_LANGUAGE, NLS_SORT y NLS_NUMERIC_CHARACTERS. Seguramente no tienen valores por defecto, los cuales se necesitan para la generación de histogramas.

La vista NLS_SESSION_PARAMETERS nos muestra cuáles son los valores actuales que se están usando (recordar que éstos tienen prioridad sobre los parámetros de la base de datos).

SQL> select PARAMETER, VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER IN ('NLS_LANGUAGE', 'NLS_SORT', 'NLS_NUMERIC_CHARACTERS'); NLS_SESSION_PARAMETERS;

PARAMETER VALUE
------------------------- --------------------
NLS_LANGUAGE AMERICAN
NLS_NUMERIC_CHARACTERS .,
NLS_SORT BINARY

Si alguno de estos parámetros no aparece como arriba, será necesario hacer un ALTER SESSION para arreglarlo y probar generar las estadísticas nuevamente con cascade => true.

No hay comentarios: