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

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 22
    Points
    22
    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
    Points : 848
    Points
    848
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 22
    Points
    22
    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
    Points : 848
    Points
    848
    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.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 22
    Points
    22
    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