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

SQL Oracle Discussion :

Erreur ORA-12015 avec vue matérialisée et refresh FAST


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Points : 89
    Points
    89
    Par défaut Erreur ORA-12015 avec vue matérialisée et refresh FAST
    Bonjour ,

    J'ai 2 bases Oracle distinctes DB1 et DB2, chacune contenant une table DOSSIER (qui a le même schéma dans les 2 bases), et chaque table DOSSIER étant alimentée par le même système.
    Pour un outil d'administration, je dois regrouper dans une table DOSSIER d'une base DB3 le contenu des 2 tables DOSSIER des bases DB1 et DB2.
    Le principe retenu est d'utiliser une "Materialized View" que je crée comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE MATERIALIZED VIEW DB3.DOSSIER
    REFRESH FAST ON DEMAND
    WITH PRIMARY KEY
    AS 
    SELECT DOSSIER.* FROM DOSSIER@DB1
    UNION
    SELECT DOSSIER.* FROM DOSSIER@DB2
    WHERE DOS_ID NOT IN (SELECT DOS_ID FROM DOSSIER@DB1);
    Note 1 : DB1 et DB2 sont des DB_LINKS que j'ai créé précédemment, cela marche bien
    Note 2 : la requête imbriquée à la fin est nécessaire pour ne pas avoir de doublons (si 2 objets ont la même clé primaire dans les 2 tables DOSSIER de DB1 et DB2, je ne veux garder que l'exemplaire de DB1 car ils représentent la même chose et je sais que celui de DB1 sera forcément le plus à jour)
    Note 3 : j'ai bien créé un Snapshot log pour mes tables DOSSIER dans DB1 et DB2 comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE MATERIALIZED VIEW LOG ON DOSSIER WITH PRIMARY KEY;
    Mais lors de la création de la vue matérialisée, j'ai l'erreur "ORA-12015: impossible de créer une vue matérialisée de régénération rapide à partir d'une interrogation complexe"

    Est-ce l'opérateur UNION ou bien la présence d'une sous-requête imbriquée qui provoque cette erreur ?

    Je précise qu'avec "REFRESH COMPLETE", tout marche bien, je recupere bien dans ma table DOSSIER de DB3 le contenu des 2 autres bases, mais je ne veux faire qu'un rafraichissement simple, pas complet

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    ORA-12015: "cannot create a fast refresh snapshot from a complex query"
    ORA-12015: "cannot create fast refresh materialized view from a complex query"

    Cause: Neither ROWIDs and nor primary key constraints are supported for
    complex queries.
    Action: Reissue the command with the REFRESH FORCE or REFRESH COMPLETE
    option or create a simple materialized view.


    pour ce qui est de savoir ce qu'est une complex query , cela dépend de ta release . néanmoins, tente avec un synonym en lieu et place tes xxx@dblink

  3. #3
    Membre régulier
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    en fait, le REFRESH FAST impose bcp de restrictions et notamment : on ne peut pas utiliser de requete imbriquée (comme le NOT IN), ni les UNION, ni les SYSDATE, ....
    Donc je vais devoir trouver une autre solution

  4. #4
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    Je cherchais des solutions car j'ai exactement le même problème mais je ne vois pas du tout d'ou vient le mien car sur deux vm quasi identiques l'une passe et pas l'autre.

    Quelles sont les clauses et fonctions interdites pour un fast refresh ? (en plus des NOT IN, SYSDATE, UNION déjà cités ? Merci d'avance

    ps : mon thread

  5. #5
    Membre régulier
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    pour l'erreur ORA-12015, en fait, le REFRESH FAST impose bcp de restrictions et notamment : on ne peut pas utiliser de requete imbriquée (comme le NOT IN), ni les UNION, ni les SYSDATE, ....

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2002
    Messages : 141
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par Le Marlou Voir le message
    pour l'erreur ORA-12015, en fait, le REFRESH FAST impose bcp de restrictions et notamment : on ne peut pas utiliser de requete imbriquée (comme le NOT IN), ni les UNION, ni les SYSDATE, ....
    Bonjour,
    J'ai une vue basée sur 3 requête SQL UNION ALL avec une condition sur sysdate. le temps de réponse est ennorme.
    Et suite a ta réponse, il est impossible de créer une vue matérialisée FAST ON COMIT. c'est bien ça?

    Mon objectif est d'optimiser ma vue
    Merci,

  7. #7
    Candidat au Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Solution trouvée dans certains cas
    Perso, j'ai vu ce genre d'erreur résolu sur une MV avec UNION ALL, en ajoutant à la requête une colonne à valeur littérale ayant une valeur différente par "UNION ALL".

    Voir la discussion suivante, + récente:
    http://www.developpez.net/forums/d15...ight=ORA-12015

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/09/2012, 14h59
  2. erreur ORA-06502 avec UTL_FILE
    Par leftyy dans le forum PL/SQL
    Réponses: 1
    Dernier message: 03/11/2010, 17h14
  3. erreur ora-00907 avec oracle
    Par mehdiyou dans le forum SQL
    Réponses: 3
    Dernier message: 11/04/2008, 22h53
  4. Réponses: 10
    Dernier message: 27/04/2006, 16h03
  5. Erreur ORA-12514 avec database link
    Par gafreu dans le forum Administration
    Réponses: 20
    Dernier message: 09/09/2004, 11h53

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