Frage

bemerkte ich vor kurzem, dass dbms_mview.refresh Aufruf (...), die materialisierte Ansichten in Oracle aktualisiert, hat eine implizite begehen.

Alle Ideen - anders als „weil es tut?“ - warum diese Aktion hat eine implizite commit

War es hilfreich?

Lösung

Abhängig von Ihrer Oracle-Version und / oder die Parameter, die Sie dbms_mview.refresh liefern kann eine TRUNCATE durch eine direkte Belastung gefolgt tun. TRUNCATE ist ein DDL-Befehl und als solche Probleme ein implizite begehen. Direkte Belastung erfordert keine begehen.

Wenn Sie eine neuere Version von Oracle verwenden, glaube ich 10.2+, können Sie den atomic_refresh Parameter auf TRUE gesetzt und es wird innerhalb einer einzigen Transaktion aktualisieren, unter Verwendung von Standard DELETE / INSERTs. Diese Methode könnte jedoch durchaus etwas langsamer sein.

scroll top