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 :

commit on refresh


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut commit on refresh
    Bonjour,
    je suis sur une base 9.2.0.3 et j'essaie de créer des materialized view en utilisant la clause 'on commit' .
    mais j'ai l'erreur
    ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view .
    Le privilege objet 'on commit refresh' a ete positionné sur les tables implique dans la requete de creation de la mv.
    En depit de la note 2695081.8 d'oracle y a t'il quelqu un qui a reussi a creer une mv ' refresh complet on commit'.
    merci

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Aucun pb pour créer un snapshot on commit :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    SQL> select * from DEPT;
     
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
     
    SQL> create materialized view MV_DEPT 
      2  refresh on commit as
      3  select * 
      4  from   DEPT;
     
    Materialized view created.
     
    SQL> select * from MV_DEPT;
     
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
     
     
    SQL> insert into DEPT values (50, 'MON DEPT', 'PARIS');
     
    1 row created.
     
    SQL> select * from MV_DEPT;
     
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
     
    SQL> commit;
     
    Commit complete.
     
    SQL> select * from MV_DEPT;
     
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            50 MON DEPT       PARIS
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
    Tu peux poster un script qui permette de reproduire ton erreur ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  3. #3
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut
    Merci pour la demonstration Laly, cela m'a permis de relancer mes recherche.(j'ai rejoué ton senario et c'est passé)

    Voici les deux erreurs m'empechaient de creer la mv.
    1- une des tables utilisée dans mon select était un synonym public.
    2- dans l'autre cas il n'y avait pas de Pk sur la master table.

    encore merci et bon we

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Comme je n'étais pas au courant de ces restrictions, j'ai essayé de reproduire ton cas de figure :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    SQL> create table A(x number);
     
    Table created.
     
    SQL> create table B(x number);
     
    Table created.
     
    SQL> create synonym B1 for B;
     
    Synonym created.
     
    SQL> insert into A values (1);
     
    1 row created.
     
    SQL> insert into B values (1);
     
    1 row created.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> create snapshot MV_AB 
      2  refresh on commit as
      3  select *
      4  from   A, B1
      5  where  A.x = B1.x;
    from   A, B1
           *
    ERROR at line 4:
    ORA-12054: impossible de définir l'attribut de régénération ON COMMIT pour la vue matérialisée
     
    -- pb avec le synonyme ET/OU l'absence de PK 
    SQL> ed
    Wrote file afiedt.buf
     
      1  create snapshot MV_AB
      2  refresh on commit as
      3  select A.x, B.x x1
      4  from   A, B
      5* where  A.x = B.x
    SQL> /
     
    Materialized view created.
     
    SQL> select * from MV_AB;
     
             X         X1
    ---------- ----------
             1          1
     
    SQL> insert into A values (2);
     
    1 row created.
     
    SQL> insert into B values (2);
     
    1 row created.
     
    SQL> select * from MV_AB;
     
             X         X1
    ---------- ----------
             1          1
     
    SQL> commit;
     
    Commit complete.
     
    SQL> select * from MV_AB;
     
             X         X1
    ---------- ----------
             1          1
             2          2
     
    SQL>
    Donc ca marche en supprimant le synonyme, par contre l'absence de PK ne pose pas de pb !



    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  5. #5
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut
    voila l'exemple qui m'a conduit a placer la pk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create materialized view MV_DEPT
        refresh on commit as
        select *  from   DEPT
    ORA-12014: table 'DEPT' does not contain a primary key constraint
    ALTER TABLE DEPT
     ADD CONSTRAINT PK
     PRIMARY KEY (DPT_COD)
    Table altered
     
    create materialized view MV_DEPT
        refresh on commit as
        select *  from   DEPT
    Snapshot created

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

Discussions similaires

  1. [10g] Vue materialisée REFRESH ON COMMIT avec SELECT complexe
    Par carreau dans le forum SQL
    Réponses: 2
    Dernier message: 17/05/2013, 16h57
  2. Procedure stockee - Probleme de refresh et Commit
    Par xavier8383 dans le forum SQL
    Réponses: 5
    Dernier message: 29/08/2007, 08h50
  3. Privilège ON COMMIT REFRESH
    Par dcollart dans le forum Administration
    Réponses: 3
    Dernier message: 09/05/2007, 18h12
  4. Réponses: 10
    Dernier message: 23/05/2006, 16h42
  5. Réponses: 10
    Dernier message: 27/04/2006, 16h03

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