Cool, ça ! mais nous non. c'est des tables indexées classiques. 8)
Est-ce-que tu peux recréer la MV log en adaptant l'exemple de la note Metalink fournie par Bouayo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 create materialized view log on emp with rowid(empno, ename, job, mgr, hiredate, sal, comm, deptno) including new values
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...)
J'ai réussi à reproduire le pb. La phrase clé toujours dans la note ML de Bouayo est :
Can be used with materialized views on single table aggregates
and with materialized views containing joins only.
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 SQL> create table TEST as select rownum rnk from all_objects; Table created SQL> alter table TEST add constraint pk_test primary key (rnk); Table altered SQL> create snapshot log on TEST with rowid(rnk) including new values; Materialized view log created SQL> create snapshot S_TEST refresh fast on commit as 2 select * 3 from TEST; create snapshot S_TEST refresh fast on commit as select * from TEST ORA-12054: impossible de définir l'attribut de régénération ON COMMIT pour la vue matérialisée SQL> create snapshot S_TEST refresh fast on commit as 2 select rnk, count(*) 3 from TEST 4 group by rnk; Materialized view created SQL> insert into TEST values(-1); 1 row inserted SQL> select * from S_TEST where rnk = -1; RNK COUNT(*) ---------- ---------- SQL> commit; Commit complete SQL> select * from S_TEST where rnk = -1; RNK COUNT(*) ---------- ---------- -1 1 SQL>
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...)
La commande de création du snapshot log avec primary key fonctionne :
Par contre, cette même commande ne fonctionne pas avec une materialized view.
Code : Sélectionner tout - Visualiser dans une fenêtre à part create snapshot log on VILLE with rowid(VIL_ID) including new values;
Sinon, j'ai fait un snapshot log avec une primary key. J'ai pu créer un snapshot avec un group by sur la primary key. Mais maintenant, quand j'insert dans la table maitre j'ai une erreur bizard :
Mais je vais faire un peu de ménage dans mes bases et je referai des essais.
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 SQL> insert into o2_ville 2 values 3 ( 4 o2_seq_ville.nextval, 5 'DUVALVILLE', 6 'DUVALVILLE', 7 'TSJD2', 8 '32454'); 1 ligne créée. SQL> commit; commit * ERREUR à la ligne 1 : ORA-00942: Table ou vue inexistante
il faut ajouter le privilege SELECT ANY TABLE à l'utilisaur qui a la vue materlialisé.
Questionnaires : Testez vos connaissances
Mes articles :
Les Fichiers Redo / SCN : System Change Number / Fichier de Contrôle : Administration
Oui exact ! suis-je distrait ! L'utilisateur maitre n'avait pas les droits sur les objets de l'utilisateur fils.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager