Ik weet niet of het probleem zich nog steeds voordoet, maar toen ik naar het artikel keek dat je hebt gegeven, viel me iets op (wat hier misschien de oplossing is):
OP COMMIT Vernieuwen
Een gerealiseerde weergave kan automatisch worden vernieuwd met behulp van de ON COMMIT-methode. Daarom, wanneer een transactie wordt vastgelegd die de tabellen heeft bijgewerkt waarop een gerealiseerde weergave is gedefinieerd, worden deze wijzigingen automatisch weergegeven in de gerealiseerde weergave. Het voordeel van deze aanpak is dat u er nooit aan hoeft te denken om de gematerialiseerde weergave te vernieuwen. Het enige nadeel is dat de tijd die nodig is om de commit te voltooien iets langer zal zijn vanwege de extra verwerking die ermee gemoeid is. In een datawarehouse zou dit echter geen probleem moeten zijn, omdat het onwaarschijnlijk is dat er gelijktijdige processen zijn die dezelfde tabel proberen bij te werken.
- Let op de vetgedrukte lijn.
Dan hebben we:
Tabel 7-1 OP DEMAND-vernieuwingsmethoden
Vernieuwen Optie Parameter BeschrijvingVOLLEDIG C Vernieuwt door de definiërende zoekopdracht opnieuw te berekenen van de gematerialiseerde weergave.
SNEL F Vernieuwt door stapsgewijs wijzigingen toe te passen op de gerealiseerde weergave . Voor lokaal gematerialiseerde weergaven kiest het de verversingsmethode die door de optimalisatie als het meest efficiënt wordt geschat. De beschouwde verversingsmethoden zijn op logs gebaseerde FAST en FAST_PCT.
FAST_PCT P Vernieuwt door de rijen in de gerealiseerde weergave opnieuw te berekenen die zijn beïnvloed door gewijzigde partities in de detailtabellen.
KRACHT ? Probeert snel te vernieuwen. Als dat niet mogelijk is, voert het een volledige verversing uit. Voor lokaal gematerialiseerde weergaven kiest het de verversingsmethode die door de optimalisatie als het meest efficiënt wordt geschat. De beschouwde verversingsmethoden zijn op logboeken gebaseerd FAST, FAST_PCT en COMPLETE.
- Let op de vetgedrukte lijnen.
- Persoonlijk geef ik de voorkeur aan de FORCE-optie.
Kunt u aangeven of dit na enige tijd opnieuw gebeurt (afhankelijk van de parameters van de DB en de machine waarop het draait, dus ik kan u niet eens een hint geven hoeveel)?
Als snel vernieuwen mogelijk is
Niet alle gerealiseerde weergaven kunnen snel worden vernieuwd. Gebruik daarom het pakket DBMS_MVIEW.EXPLAIN_MVIEW om te bepalen welke verversingsmethoden beschikbaar zijn voor een gerealiseerde weergave.
Als u niet zeker weet hoe u een gerealiseerde weergave snel vernieuwbaar kunt maken, kunt u de DBMS_ADVISOR.TUNE_MVIEW gebruiken procedure, die een script levert dat de instructies bevat die nodig zijn om een snel vernieuwbare gematerialiseerde weergave te creëren.
Proost