IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[Oracle 9i] : Synchonisation d'Index Text


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut [Oracle 9i] : Synchonisation d'Index Text
    Bonjour,

    J'ai un index Oracle Text sur une colonne 'Titre' de type CLOB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE INDEX IDX_EXTRACT_TITRE
    ON TABLE_TITLE (Titre) INDEXTYPE IS CTXSYS.CONTEXT
    PARAMETERS ('DATASTORE DS_EXTRACT_TITRE LEXER LX_EXTRACT_TITRE FILTER FILTER_EXTRACT_TITRE STORAGE STORAGE_EXTRACT_TITRE WORDLIST WORDLIST_EXTRACT_TITRE');
    Lors des mises à jour via une commande SQL, l'index n'est pas recalculé... Un petit tour sur Google plus tard, une solution consiste à créer un trigger qui déclenche un job de synchronisation soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    CREATE OR REPLACE TRIGGER TU_TABLE_TITLE
    AFTER INSERT OR UPDATE OR DELETE ON TABLE_TITLE
    DECLARE
      v_job NUMBER;
    BEGIN
      IF deleting THEN
        DBMS_JOB.SUBMIT(v_job, 'ctx_ddl.optimize_index(''IDX_EXTRACT_TITRE
    '',''FULL'');', SYSDATE);
      ELSE
        DBMS_JOB.SUBMIT(v_job, 'ctx_ddl.sync_index(''IDX_EXTRACT_TITRE');', SYSDATE);
      END IF;
    END;
    /
    show errors;
    /
    Le job est bien créé sur une mise à jour en base et s'exécute (enfin je pense et qu'il n'y a pas d'erreur dans la log ORACLE).
    Par contre, l'index n'est pas recalculé.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     UPDATE TABLE_TITLE
        SET titre = 'LES INDEX TEXT C LA FETE'
      WHERE cle=une cle
     
     
    SELECT count(*) FROM TABLE_TITLE WHERE CONTAINS(TITRE, 'INDEX') > 0 me retourne 0 enregistrement.
    Quelqu'un a-t-il une petite idée ? La solution ?


    Merci

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Si après l'update tu n'a pas fait commit le job ne s'exécute pas.
    Essaye d'abord sans trigger de jouer avec Alter ... index rebuild et le package pour te familiariser avec ces indexes.

Discussions similaires

  1. [Oracle 9i] Différence d'index
    Par kalyparker dans le forum Oracle
    Réponses: 2
    Dernier message: 17/01/2007, 17h12
  2. [Oracle 9i] gestion des indexs
    Par Herveg dans le forum Oracle
    Réponses: 14
    Dernier message: 18/05/2006, 12h00
  3. [Oracle 9i] création des index
    Par Herveg dans le forum Oracle
    Réponses: 1
    Dernier message: 21/02/2006, 17h32
  4. [Oracle 9] Vue materialisée indexée et optimisation
    Par scornille dans le forum Oracle
    Réponses: 4
    Dernier message: 18/11/2005, 15h11
  5. [SQL Serv2000][Indexation Texte Integral]Choix menu grisé
    Par TreizeSegments dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2004, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo