Ich habe gerade die Tabellen DEPT und EMP wie folgt erstellt:
%Vor%Ich habe materialisierte Ansichtsprotokolle für diese Tabellen mit Rowid- und materialisierten Ansichten wie folgt erstellt:
%Vor%Ich habe einen neuen Datensatz eingefügt und COMMIT ausgeführt; .. aber wenn ich die materialisierte Ansicht überprüfe, wird der neue Datensatz in der materialisierten Ansicht nicht angezeigt.
%Vor%Nun, wenn ich die Prozedur für Fast and complete refresh als ausführe per , Die Schnellaktualisierung aktualisiert das Mview nicht, aber die vollständige Aktualisierung funktioniert. (Hinweis: Aber das Mview ist immer noch REFRESH ON COMMIT )
%Vor%Die Ausgabe von DBMS_MVIEW.EXPLAIN_MVIEW ist wie folgt: (cpability_name --Possible-- msgtxt)
Wie kann ich eine schnelle Aktualisierung beim Commit erreichen?
Die Oracle Version Details sind wie folgt:
NLSRTL 10.2.0.4.0 Produktion
Oracle Database 10g 10.2.0.4.0 64-Bit-Produktion
PL / SQL 10.2.0.4.0 Produktion
TNS für Linux: 10.2.0.4.0 Produktion
Ich weiß nicht, ob das Problem weiterhin besteht, aber als ich mir den Artikel anschaute, den Sie zur Verfügung gestellt haben, habe ich etwas bemerkt (was hier vielleicht die Lösung sein könnte):
ON COMMIT Aktualisieren
Eine materialisierte Ansicht kann mithilfe der ON COMMIT-Methode automatisch aktualisiert werden. Wenn eine Transaktion festgeschrieben wird, die die Tabellen aktualisiert hat, für die eine materialisierte Ansicht definiert ist, werden diese Änderungen automatisch in der materialisierten Ansicht angezeigt. Der Vorteil dieses Ansatzes besteht darin, dass Sie nie daran denken müssen, die materialisierte Ansicht zu aktualisieren. Der einzige Nachteil ist, dass die Zeit für die Ausführung des Commits wegen der zusätzlichen Verarbeitung etwas länger ist. In einem Data Warehouse sollte dies jedoch kein Problem darstellen, da es unwahrscheinlich ist, dass gleichzeitig Prozesse ausgeführt werden versuchen, die gleiche Tabelle zu aktualisieren.
Dann haben wir:
Tabelle 7-1 ON DEMAND-Aktualisierungsmethoden
Refresh Option Parameter Beschreibung COMPLETE C Aktualisierung durch Neuberechnung der definierenden Abfrage der materialisierten Ansicht.
SCHNELL F Wird aktualisiert, indem Änderungen in der materialisierten Ansicht schrittweise angewendet werden . Für lokale materialisierte Ansichten wird die Aktualisierungsmethode ausgewählt, die vom Optimierungsprogramm als am effizientesten bewertet wird. Die betrachteten Aktualisierungsmethoden sind protokollbasiert FAST und FAST_PCT.
FAST_PCT P Refresh durch Neuberechnung der Zeilen in der materialisierten Ansicht, die von geänderten Partitionen in den Detailtabellen betroffen sind.
FORCE ? Versucht eine schnelle Aktualisierung. Wenn das nicht möglich ist, wird eine vollständige Aktualisierung durchgeführt. Für lokale materialisierte Ansichten wird die Aktualisierungsmethode ausgewählt, die vom Optimierungsprogramm als am effizientesten bewertet wird. Die betrachteten Aktualisierungsmethoden sind protokollbasiert FAST, FAST_PCT und COMPLETE.
Könnten Sie bitte sagen, ob das nach einiger Zeit wieder auftritt (abhängig von den Parametern der DB und der Maschine, auf der es läuft, so kann ich Ihnen nicht einmal sagen, wie viel)?
Wenn eine schnelle Aktualisierung möglich ist
Nicht alle materialisierten Ansichten können schnell aktualisiert werden. Verwenden Sie daher das Paket DBMS_MVIEW.EXPLAIN_MVIEW , um zu ermitteln, welche Aktualisierungsmethoden für eine materialisierte Ansicht verfügbar sind.
Wenn Sie nicht sicher sind, wie eine materialisierte Ansicht schnell aktualisierbar gemacht werden soll, können Sie die Prozedur DBMS_ADVISOR.TUNE_MVIEW verwenden, die ein Skript mit den Anweisungen zum Erstellen einer schnell aktualisierbaren materialisierten Ansicht enthält / p>
Prost
Ich sehe, dass Sie die materialisierten Ansichtsprotokolle mit ROWID erstellt haben, was nicht wirklich erforderlich ist, da beide Tabellen einen Primärschlüssel haben, so dass Sie ohne die ROWID versuchen könnten.
erstellt materialisierte Ansichtsprotokollierung bei emp; Erstellen Sie eine materialisierte Ansichtsprotokolldatei;
Wenn Sie das materialisierte Ansichtsprotokoll mit ROWID erstellen, sollten Sie außerdem die materialisierte Ansicht mit Rowid erstellen.
erstellt materialisierte Ansicht empdept_mv wird beim Commit WITH ROWID as schnell aktualisiert Wählen Sie a.rowid dept_rowid, b.rowid emp_rowid, a.dept_no, b.emp_no von Abteilung a, emp b wo a.dett_no = b.dept_no;
Sie könnten diese Änderungen ausprobieren und sehen, ob die materialisierten Ansichten beim Commit schnell aktualisiert werden.
Tags und Links oracle materialized-views