jueves, 10 de septiembre de 2009

ORA-24795 ORA-29855 ORA-20000 ORA-24795 DRG-50857 ORA-06550 PLS-00302: ORA-06550 ORA-06512 ORA-06512

En caso de tener el error siguiente el crear un indixe: CONTEXT
INDEXTYPE IS CTXSYS.CONTEXT


ERROR at line 1:
ORA-24795: Illegal COMMIT attempt made
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
ORA-24795: Illegal ROLLBACK attempt made
DRG-50857: oracle error in dreii0fsh
ORA-06550: line 1, column 106:
PLS-00302: component 'S_MODE' must be declared
ORA-06550: line 1, column 10:
PL/SQL: Statement ignored
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 364

Es porque se instalo un parche y no se ejecuto el script para actualizar el diccionario y hay diferencias con el codigo fuentes instalado, para ver esta diferencia hacer:

select * from ctxsys.ctx_version;

VER_DICT VER_CODE
---------- ----------
10.2.0.1.0 10.2.0.3.0


Ejecutar ctxpatch.sql para actualizar Oracle TEXT, de la siguiente forma:

shutdown immediate
startup upgrade
@?/ctx/admin/ctxpatch.sql
shutdown immediate
startup

Posibles Causas del error ORA-38029 "Object Statistics Are Locked"

Posibles Causas del error ORA-38029 "Object Statistics Are Locked"

1. Se ejecuto el procedimiento de bloqueo como por ejemplo DBMS_STATS.LOCK_[SCHEMA|TABLE]_STATS
2. En Oracle 10gR2 10.2.0.1 se ejecuto un import con rows=n

La soluciones es ver que objetos tiene la estadísticas lokeadas:
select table_name, stattype_locked from user_tab_statistics where stattype_locked is not null;

select num_rows, last_analyzed from user_ind_statistics where stattype_locked is not null;

Con ese resultado ejecutar, según sea el caso:

Si es todo en esquema completo EXECUTE DBMS_STATS.UNLOCK_SCHEMA_STATS ('SCHEMA');
es decir: EXEC DBMS_STATS.UNLOCK_SCHEMA_STATS ('SCOTT');

Si es solo una tabla
EXEC DBMS_STATS.UNLOCK_TABLE_STATS('OWNER','TABLA');
es decir: EXEC DBMS_STATS.UNLOCK_TABLE_STATS('SCOTT','TIGER');

ORA-29868: cannot issue DDL on a domain index marked as LOADING

Cuando no se puede borrar el indexe porque marcar el error:
ORA-29868: cannot issue DDL on a domain index marked as LOADING

La menera de borrarlo es haciendo usando la opcion FORCE en el drop:
Drop index Nombre_de_indixe force;

Luego se recrea de nuevo.