vendredi 14 décembre 2012

ORA-13226 interface not supported without a spatial index

La requête suivante m'a donné le message d'erreur ci-après:

SELECT DOC1.SER_NO_SEQ, DOC1.DOC_NO_SEQ FROM CIG_DOCUMENT DOC1, CIG_ZONE_RECHE ZRE1
WHERE SDO_RELATE ( DOC1.SHAPE_M, ZRE1.SHAPE, 'MASK=ANYINTERACT QUERYTYPE=WINDOW' ) = 'TRUE'
AND ZRE1.SES_CODE_SESSI='Z+i8zRHOva7Q7AhlJw0j61cS6Jg='
AND DOC1.SER_NO_SEQ IN (1099,1918,1905,2194);


ORA-13226: interface non prise en charge sans index spatial
ORA-06512: à "MDSYS.MD", ligne 1723
ORA-06512: à "MDSYS.MDERR", ligne 8
ORA-06512: à "MDSYS.SDO_3GL", ligne 88


Le message d'erreur fait allusion à un problème d'index spatial. Vérifions donc le statut des indexes spatial:

select OWNER, INDEX_NAME, STATUS, DOMIDX_STATUS, DOMIDX_OPSTATUS, FUNCIDX_STATUS, ITYP_NAME
from   dba_indexes
where  INDEX_TYPE = 'DOMAIN'
and ITYP_NAME = 'SPATIAL_INDEX'
and (DOMIDX_STATUS<>'VALID' or DOMIDX_OPSTATUS<>'VALID' or FUNCIDX_STATUS<>'VALID');

OWNER   INDEX_NAME   STATUS   DOMIDX_STATU DOMIDX FUNCIDX_ ITYP_NAME
------- ------------ -------- ------------ ------ -------- ---------------
CIG     DOC_AS_IS    VALID    VALID        FAILED          SPATIAL_INDEX
CIG     DOC_P_IS     VALID    VALID        FAILED          SPATIAL_INDEX


En essayant de recréer les indexes en question, j'obtiens:

SQL> DROP INDEX CIG.DOC_AS_IS FORCE;
Index supprimé.
SQL> CREATE INDEX DOC_AS_IS ON CIG_DOCUMENT
  2  (SHAPE_M)
  3  INDEXTYPE IS MDSYS.SPATIAL_INDEX
  4  PARAMETERS('sdo_indx_dims=2 sdo_dml_batch_size=1')
  5  NOPARALLEL;
CREATE INDEX DOC_AS_IS ON CIG_DOCUMENT
*
ERREUR Ó la ligne 1 :
ORA-29855: erreur d'exÚcution de la routine ODCIINDEXCREATE
ORA-13249: internal error in Spatial index: [mdidxrbd]
ORA-13249: Error in Spatial index: index build failed
ORA-13249: Error in spatial index: [mdrcrtxfergm]
ORA-13249: Error in spatial index: [mdpridxtxfergm]
ORA-13200: erreur interne [ROWID:AAAipHAAXAAAAk7AAG] dans l'indexation spatiale.
ORA-13206: erreur interne [] lors de la crÚation de l'index spatial
ORA-13033: DonnÚes non valides dans le champ SDO_ELEM_INFO_ARRAY de l'objet SDO_GEOMETRY
ORA-06512: Ó "MDSYS.SDO_INDEX_METHOD_10I", ligne 10
SQL> DROP INDEX CIG.DOC_P_IS FORCE;
Index supprimé.
SQL> CREATE INDEX DOC_P_IS ON CIG_DOCUMENT
  2  (SHAPE_P)
  3  INDEXTYPE IS MDSYS.SPATIAL_INDEX
  4  PARAMETERS('layer_gtype=MULTIPOINT sdo_indx_dims=2 sdo_dml_batch_size=1')
  5  NOPARALLEL;
CREATE INDEX DOC_P_IS ON CIG_DOCUMENT
*
ERREUR Ó la ligne 1 :
ORA-29855: erreur d'exÚcution de la routine ODCIINDEXCREATE
ORA-13249: internal error in Spatial index: [mdidxrbd]
ORA-13249: Error in Spatial index: index build failed
ORA-13249: Error in spatial index: [mdrcrtxfergm]AAAipHAAXAAAAk7AAG
ORA-13249: Error in spatial index: [mdpridxtxfergm]
ORA-13200: erreur interne [ROWID:AAAipHAAXAAAAk7AAG] dans l'indexation spatiale.
ORA-13206: erreur interne [] lors de la crÚation de l'index spatial
ORA-13033: DonnÚes non valides dans le champ SDO_ELEM_INFO_ARRAY de l'objet SDO_GEOMETRY
ORA-06512: Ó "MDSYS.SDO_INDEX_METHOD_10I", ligne 10
SQL>


Conclusion:
Il y a un problème au niveau de l'enregistrement dont le ROWID=AAAipHAAXAAAAk7AAG.

Après avoir corrigé cet enregistrement, j'ai recréé les indexes et la requête a fonctionné.

Référence:
Spatial Healthcheck Shows Index Status Failed [ID 1430629.1] 

Si cette erreur est dûe à l'utilisation de lien base de données (database link), il faut savoir que cela n'est pas supporté.
Voir le document Spatial Query Over a Database Link Fails With ORA-13226 or ORA-22804 [ID 374321.1] 

Hope it helps. 

Aucun commentaire:

Enregistrer un commentaire