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 :

[9i SE] ORA-12054 cannot set ON COMMIT refresh attribut


Sujet :

Oracle

  1. #1
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut [9i SE] ORA-12054 cannot set ON COMMIT refresh attribut
    Bonjour,

    J'essaye de créer un vue matérialisée comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE MATERIALIZED VIEW "TEST"."SN_MATABLE" 
    BUILD IMMEDIATE 
    REFRESH FAST 
    ON COMMIT 
    AS
    Select * from MATABLE@DBLINK
    J'ai alors l'erreur : ORA-12054 cannot set ON COMMIT refresh attribut

    Le code suivant fonctionne très bien sur la base ou la table maître est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE MATERIALIZED VIEW "TEST"."SN_MATABLE" 
    BUILD IMMEDIATE 
    REFRESH FAST 
    ON COMMIT 
    AS
    Select * from MATABLE
    Est-il possible de créer des VM on commit entre bases de données distantes (avec DBLINK) ? (Attention je suis en Standard édition !)

    Si oui qu'est-ce qui merde ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 165
    Points
    165
    Par défaut
    Réponse sur l'excellent site : ASKTOM

    http://asktom.oracle.com/pls/ask/f?p...:1167235330355

  3. #3
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par jlucch
    Réponse sur l'excellent site : ASKTOM

    http://asktom.oracle.com/pls/ask/f?p...:1167235330355
    Je ne vois pas ma réponse dans l'exellent ASKTOM.

    Il parle d'un DBLINK avec interbase ! Tu confirmes ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 165
    Points
    165
    Par défaut
    Les MV sont asynchrones .. et Tom (de asktom) dit que l'on ne peut pas avoir de refresh on commit dans un environnement distribué ...

    essaye comme ça, (je procède comme ceci dans mes environnements répliqués) :

    CREATE SNAPSHOT "TEST"."SN_MATABLE"
    on prebuilt table
    REFRESH FAST
    FOR UPDATE
    AS SELECT *
    FROM MATABLE@DBLINK;
    commit;

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    impossible de faire du ON COMMIT sur une vue complexe... dont une vue qui contient un DB Link.

    Dans la référence au forum de Tom Kyte on peut lire :
    you cannot refresh on commit over a dblink, period.

    you cannot even capture a "commit" action from borland interbase in Oracle -
    think about it.

  6. #6
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Merci pour vos réponses.

    J'explique mon problème.

    Dans notre SI nous avons plusieurs developpements internes utilisants chacun une base de données métier. Ces developpements internes utilisent tous des données communes (table de référence commune à tous par exemple la liste des sites). Nous stockons cela sur une base de données séparée. Aujourd'hui nous utlisons des DBLINK pour accéder a ces données depuis les bases de données métiers.

    Nous aimerions répliquer l'informations des tables de référence communes vers les bases de données métiers et nous voudrions dès qu'il y a une mise à jour, qu'elle soit repercuter casiment en temps réel sur les bases de données métiers.

    Connaissez-vous un mécanisme le permetant ?

  7. #7
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Alors ???? Personne ne connait un moyen génial de repliquer des tables d'une base de données à une autre et de propager une mise à jour de la table maître très rapidement ????

    Je suis le seul à avoir ce cas à la con !

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    faut faire des tables mises à jour via des jobs ou des triggers

  9. #9
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Tu ne connais pas de mécanisme magique même en entreprise edition ? ou un outil du marché ?

  10. #10
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Vous connaissez Advanced Replication ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 165
    Points
    165
    Par défaut
    A vue de nez :
    - Soit tu crées un trigger sur chaque table référence qui met à jour les datas par DBlink ....
    - Soit tu fais de la réplication avancée (snaphot + snapshotLog) et tu crées un ou plusieurs groupes de refresh.

    Ensuite tu déclenches ton refresh via un job lancé régulièrement ...

    Est -ce que les datas de tes tables réferences (sur ta base séparée) évoluent souvent ?
    Combien as tu de bases qui doivent être rafraîchies ?

    Quoi qu'il en soit, les triggers vont sûrement pénaliser les perfs côté base référence ,
    tandis que les refresh (s'ils sont réalisés très régulièrement) vont engendrer un trafic réseau (plus ou moins important selon l'évolution de tes données) risquant de faire écrouler aussi tes perf ....

Discussions similaires

  1. [Oracle 10g] cannot set sga_target
    Par falco- dans le forum Débuter
    Réponses: 21
    Dernier message: 19/11/2009, 10h57
  2. ORA-01102: cannot mount database in EXCLUSIVE mode
    Par ragasy29 dans le forum Administration
    Réponses: 1
    Dernier message: 19/04/2007, 08h37
  3. Réponses: 10
    Dernier message: 21/12/2006, 10h55
  4. Locale: Cannot set LC_ALL to default locale: No such file or directory
    Par Trillian dans le forum Mandriva / Mageia
    Réponses: 7
    Dernier message: 03/11/2006, 10h08
  5. Réponses: 2
    Dernier message: 23/06/2006, 20h34

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