http://oracle.developpez.com/guide/a...age=Chap1#L1.4 :twisted:
Version imprimable
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:
1
2
3
4 create materialized view log on emp with rowid(empno, ename, job, mgr, hiredate, sal, comm, deptno) including new values
Laly.
J'ai réussi à reproduire le pb. La phrase clé toujours dans la note ML de Bouayo est :
Citation:
Can be used with materialized views on single table aggregates
and with materialized views containing joins only.
Code:
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.
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: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:
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é.
Oui exact ! suis-je distrait ! L'utilisateur maitre n'avait pas les droits sur les objets de l'utilisateur fils.