Fast Refresh beim Commit der materialisierten Ansicht

8

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)

  1. PCT --N -
  2. REFRESH_COMPLETE --Y -
  3. REFRESH_FAST --Y -
  4. REWRITE --N -
  5. PCT_TABLE --N-- Oracle-Fehler: siehe RELATED_NUM und RELATED_TEXT für Details
  6. REFRESH_FAST_AFTER_INSERT --Y -
  7. REFRESH_FAST_AFTER_ONETAB_DML --Y -
  8. REFRESH_FAST_AFTER_ANY_DML --Y -
  9. REFRESH_FAST_PCT --N-- PCT ist in keinem der Details möglich Tabellen in der Materie
  10. REWRITE_FULL_TEXT_MATCH --N-- Oracle Fehler: siehe RELATED_NUM und  RELATED_TEXT für Details
  11. REWRITE_FULL_TEXT_MATCH --N-- Das Neuschreiben von Abfragen ist in der  materialisierte Ansicht
  12. REWRITE_PARTIAL_TEXT_MATCH --N-- materialisierte Ansicht kann nicht unterstützt werden  jede Art von Abfrage umschreiben
  13. REWRITE_PARTIAL_TEXT_MATCH --N-- Das Neuschreiben von Abfragen ist in der  materialisierte Ansicht
  14. REWRITE_GENERAL --N - materialisierte Ansicht kann keine Art von unterstützen  Abfrage neu schreiben
  15. REWRITE_GENERAL --N-- Das Neuschreiben von Abfragen ist auf dem Material deaktiviert  Ansicht
  16. REWRITE_PCT --N-- general rewrite ist nicht möglich oder PCT nicht  möglich auf einem
  17. PCT_TABLE_REWRITE --N-- Oracle-Fehler: siehe RELATED_NUM und  RELATED_TEXT für Details

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

    
Deepak Venga 20.11.2013, 17:48
quelle

2 Antworten

2

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.

  • Beachten Sie die fett gedruckte Zeile.

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.

  • Beachten Sie die fett gedruckten Zeilen.
  • Ich persönlich bevorzuge die Option FORCE.

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

    
g00dy 25.07.2014 07:19
quelle
1

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.

    
Dxxg 19.12.2013 22:47
quelle

Tags und Links