2017-07-27 7 views
0

ich struggeling mit Performance in Oracle. Situation ist: Subsystem B hat einen DBlink zum Master DB A. auf System B eine Abfrage nach 15 Sekunden über dblink abgeschlossen ist, verwendet db plan entsprechende Indizes.Oracle verwendet nicht beste dbplan

Wenn dieselbe Abfrage jetzt eine Tabelle in einer gespeicherten Prozedur füllen sollte, verwendet Oracle einen anderen Plan mit vollständigen Scans. was auch immer ich versuche (Hinweise), ich kann diese vollständigen Scans nicht loswerden. das ist schrecklich.

Was kann ich tun?

+1

Bitte geben Sie Ihren Code und die relevanten Tabellendefinitionen an – Rene

Antwort

0

Der Oracle Query Optimizer versucht 2000 verschiedene Möglichkeiten und wählt die beste in normalen Situationen. Aber wenn Sie denken, dass es einen falschen Plan auswählt, können Sie folgende Fälle vermuten:

1- Ihre Histogramme, die zu Abfragetabellen gehören, sind veraltet.

2- Ihre Indizes können aufgrund Ihrer fehlerhaften Abfrage nicht verwendet werden.

3- Sie können Indexhinweise verwenden, um zu erzwingen, dass die Indizes verwendet werden.

4- Sie können SQL Advisor verwenden oder TKProf für die Leistungsanalyse ausführen und entscheiden, was falsch ist oder welche schlechte Leistung verursacht hat. Überprüfen Sie das Netzwerk, die Festplatten-E/A-Werte usw.

Wenn Sie Ihre Anfrage teilen, können wir Ihnen weitere Informationen geben.

0

Sieht aus, als würden wir nicht dieselben Abfragen unter zwei verschiedenen Bedingungen ausführen. Erster Fall ist Einfache Auswahl über dblink & Zweiter Fall ist "als Auswahl über dblink einfügen".

können Sie bitte zwei Abfragen teilen & Ausführungspläne hier, wie Sie sie möglicherweise zur Hand haben. Wenn aufgrund von Sicherheitseinschränkungen keine Abfragen in der Vergangenheit möglich sind, führen Sie bitte die Ausführungspläne durch.

-Abhi

0

nach vielen Versuchen, konnte ich einen neuen DB-Plan mit Enterprise Manager erstellen. jetzt läuft es perfekt.

Verwandte Themen