Sunday, July 18, 2010

Obtenir la DDL dels índexs d'Oracle Text

Per tal de crear els índex d'Oracle Text (el mecanisme de recerca textual que proporciona Oracle, i que s'ha anomenat al llarg del temps Intermedia Text, ConText, Text Server i no sé què més)... deia que per crear els índex d'Oracle Text no n'hi ha prou amb fer un CREATE INDEX, sinó que cal especificar un munt de preferències (l'idioma, els caràcters separadors de paraula, etcètera).

El més habitual és que l'administrador (o el desenvolupador) guardi les sentències de creació dels índexs de Text, però si no és així sempre ho pots deduir tirant de les vistes que comencen amb CTX.

El cas és que l'altre dia vaig trobar que a les noves versions d'Oracle Text ja tenen un mecanisme per obtenir la DDL (data definition language, les sentències de creació) dels índexs. I va molt bé! El nom de les preferències se les inventa, i si tens més d'un índex que vols que reaprofiti les preferències has d'adaptar els scripts que genera, però treu molta feina.

Ara n'hi ha prou amb fer servir CTX_REPORT.CREATE_INDEX_SCRIPT(index_name) i et treu totes les sentències com un CLOB.

Això existeix, com a mínim, des de la versió 9.2 d'Oracle, però jo havia estat una mica allunyat.

Tens una versió del CREATE_INDEX_SCRIPT com a funció i una altra com a procediment i si vols obtenir els scripts de tots els teus índexs textuals pots fer:

SELECT index_name, ityp_name, table_name, CTX_REPORT.CREATE_INDEX_SCRIPT(index_name)
FROM user_indexes
WHERE index_type='DOMAIN'
AND ityp_owner='CTXSYS'

No comments: