Problem mit Access 2003-Abfragen auf verknüpfte Oracle-Datenbank
User mit verknüpften Oracle-Datenbanken kann nur gruppierte Abfragen ausführen, Abfragen ohne Gruppierung stürzen ab.
Hallo mit-supporter und mit-admins,
ein User bei mir hat mehrere Tabellen aus einer Oracle-Datenbank (Live) verknüpft mit Hilfe des Oracle ODBC-Treibers.
Er hat mehrere Abfragen auf diese Datenbanken. Diese funktionieren neuerdings aber nur richtig, wenn sie gruppiert abgefragt werden. Wählt man die Gruppierung ab, dann lädt Access auch bei einer auf einen Datensatz definierten Abfrage ewig, bis es in den "keine Rückmeldung"-Modus verfällt.
Da er viel mit den Datenbanken arbeitet und manchmal auch nicht-gruppiert abfragen muss, schränkt das seine Arbeitsfähigkeit derzeit natürlich ein.
Weiß jemand Bescheid, wie bei einem solchen Fehler vorzugehen ist?
Ist die Datenbank möglicherweise inkonsistent?
Ich kenne mich mit Datenbanken echt wenig aus, leider fällt Access aber unter meinen Support-Bereich...
Ich freue mich über eine Antwort,
Gruß,
Hertie
Hallo mit-supporter und mit-admins,
ein User bei mir hat mehrere Tabellen aus einer Oracle-Datenbank (Live) verknüpft mit Hilfe des Oracle ODBC-Treibers.
Er hat mehrere Abfragen auf diese Datenbanken. Diese funktionieren neuerdings aber nur richtig, wenn sie gruppiert abgefragt werden. Wählt man die Gruppierung ab, dann lädt Access auch bei einer auf einen Datensatz definierten Abfrage ewig, bis es in den "keine Rückmeldung"-Modus verfällt.
Da er viel mit den Datenbanken arbeitet und manchmal auch nicht-gruppiert abfragen muss, schränkt das seine Arbeitsfähigkeit derzeit natürlich ein.
Weiß jemand Bescheid, wie bei einem solchen Fehler vorzugehen ist?
Ist die Datenbank möglicherweise inkonsistent?
Ich kenne mich mit Datenbanken echt wenig aus, leider fällt Access aber unter meinen Support-Bereich...
Ich freue mich über eine Antwort,
Gruß,
Hertie
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156276
Url: https://administrator.de/contentid/156276
Ausgedruckt am: 05.11.2024 um 06:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Hertie,
die Oracle Datenbank ist doch sicherlich indiziert, oder?
Hast du mal versucht via Primärindex diese Indizierung in der Accessdatei nachzubilden?
Bei verknüpften Datenbanken werden die Datenbankindizierungen ignoriert und müssen per Hand in Access nachgebildet werden.
Vielleicht funktioniert dann die Abfrage wieder in angemessener Geschwindigkeit.
Gruß
Cadel
die Oracle Datenbank ist doch sicherlich indiziert, oder?
Hast du mal versucht via Primärindex diese Indizierung in der Accessdatei nachzubilden?
Bei verknüpften Datenbanken werden die Datenbankindizierungen ignoriert und müssen per Hand in Access nachgebildet werden.
Vielleicht funktioniert dann die Abfrage wieder in angemessener Geschwindigkeit.
Gruß
Cadel
Moin Moin,
besonders dann, wenn die Abfrage nicht optimiert ist.
Mit welcher Geschwindigkeit ist der PC ans Netzwerk angeschlossen?
Die Oracle - Datenbank liegt wo? Hardware, Festplatten, Größe etc. pp.
Wie viele Mitarbeiter greifen noch auf die DATENBANK zu?
Grüße aus Rostock
Wolfgang
(Netwolf)
ein User bei mir hat mehrere Tabellen aus einer Oracle-Datenbank (Live) verknüpft mit Hilfe des Oracle ODBC-Treibers.
ok, und welche Zeit hat er für den Timeout definiert? (Access Grundeinstellungen)Er hat mehrere Abfragen auf diese Datenbanken.
ämm, auf die Tabellen?Diese funktionieren neuerdings aber nur richtig, wenn sie gruppiert abgefragt werden.
logisch wenn Sie für die Gruppierung definiert sindWählt man die Gruppierung ab, dann lädt Access auch bei einer auf einen Datensatz definierten Abfrage ewig,
eine Abfrage sollte man sooo nicht ändern. Besser wäre es, eine neue Abfrage zu definieren.bis es in den "keine Rückmeldung"-Modus verfällt.
siehe oben = Timeout (bei 3 Mio. Datensätzen, dann einen Datensatz nach z.B. 10 Kriterien rausfiltern, kann schon mal was dauern...)besonders dann, wenn die Abfrage nicht optimiert ist.
Da er viel mit den Datenbanken arbeitet und manchmal auch nicht-gruppiert abfragen muss, schränkt das seine
Arbeitsfähigkeit derzeit natürlich ein.
wenn er seine Abfragen neu definiert, optimiert und dann das Timeout höher setzt, sollte es funktionierenArbeitsfähigkeit derzeit natürlich ein.
Weiß jemand Bescheid, wie bei einem solchen Fehler vorzugehen ist?
ohne hier die Abfrage zu lesen, benötigt man für so eine Aussage schon eine Glaskugel Ist die Datenbank möglicherweise inkonsistent?
wenn, dann die Tabellen! und "ja das wäre möglich" sagt meine GlaskugelIch kenne mich mit Datenbanken echt wenig aus, leider fällt Access aber unter meinen Support-Bereich...
hmm, die nächste Schulung sollte mit dem Thema mal geplant werden Mit welcher Geschwindigkeit ist der PC ans Netzwerk angeschlossen?
Die Oracle - Datenbank liegt wo? Hardware, Festplatten, Größe etc. pp.
Wie viele Mitarbeiter greifen noch auf die DATENBANK zu?
Grüße aus Rostock
Wolfgang
(Netwolf)
Moin NetWolf,
ist ja alles zielführend, was du schreibst, allerdings dieses hier ist missverständlich:
Solche Client-User liebe ich ja, die eben mal mit irgendwelchen Krücken wie Excel oder Access und am liebsten über den Microsoft-Oracle-Treiber spontane Adhoc-Queries abfeuern, die dann aber die DB auch mal 20 Minuten rödeln lassen.
Wenn der fachlich bedingte Hintergrund wirklich ist, dass 2000 Datensätze aus einem Datenbestand von 200 Mio Datensätzen geholt und dabei vielleicht noch mit einenm GROUP BY verdichtet werden sollen.. dann soll dieser fachliche Bedarf bitteschön an die Oracle-Fuzzies gemailt werden und die legen die richtigen Indices an, basteln eventuell in der Mittagspause eine 10-Zeilen-Stored-Procedure und fackeln das Ganze auf dem Server ab.
Aber doch nicht mit dynamischem Client-SQL, bei dem der geneigte DAU dann sagt :"Ich setz den Timeout auf 2 Stunden... ich kann ja Access minimieren und in Ruhe frühstücken, während die Abfrage läuft."
Abgesehen davon reagiert IMHO ohnehin keine real existierende Oracle-Instanz auf einen im Access eingestellten Timeout-Wert.
Grüße
Biber
ist ja alles zielführend, was du schreibst, allerdings dieses hier ist missverständlich:
Zitat von @NetWolf:
Moin Moin,
> ein User bei mir hat mehrere Tabellen aus einer Oracle-Datenbank (Live) verknüpft mit Hilfe des Oracle ODBC-Treibers.
ok, und welche Zeit hat er für den Timeout definiert? (Access Grundeinstellungen)
> bis es in den "keine Rückmeldung"-Modus verfällt.
wenn er seine Abfragen neu definiert, optimiert und dann das Timeout höher setzt, sollte es funktionieren
Wenn ich dann allerdings der Oracle-DBA wäre, dann würde ich ihm entweder die Tür eintreten oder aber den Timeout auf dem Oracle-Server runtersetzen.Moin Moin,
> ein User bei mir hat mehrere Tabellen aus einer Oracle-Datenbank (Live) verknüpft mit Hilfe des Oracle ODBC-Treibers.
ok, und welche Zeit hat er für den Timeout definiert? (Access Grundeinstellungen)
> bis es in den "keine Rückmeldung"-Modus verfällt.
wenn er seine Abfragen neu definiert, optimiert und dann das Timeout höher setzt, sollte es funktionieren
Solche Client-User liebe ich ja, die eben mal mit irgendwelchen Krücken wie Excel oder Access und am liebsten über den Microsoft-Oracle-Treiber spontane Adhoc-Queries abfeuern, die dann aber die DB auch mal 20 Minuten rödeln lassen.
Wenn der fachlich bedingte Hintergrund wirklich ist, dass 2000 Datensätze aus einem Datenbestand von 200 Mio Datensätzen geholt und dabei vielleicht noch mit einenm GROUP BY verdichtet werden sollen.. dann soll dieser fachliche Bedarf bitteschön an die Oracle-Fuzzies gemailt werden und die legen die richtigen Indices an, basteln eventuell in der Mittagspause eine 10-Zeilen-Stored-Procedure und fackeln das Ganze auf dem Server ab.
Aber doch nicht mit dynamischem Client-SQL, bei dem der geneigte DAU dann sagt :"Ich setz den Timeout auf 2 Stunden... ich kann ja Access minimieren und in Ruhe frühstücken, während die Abfrage läuft."
Abgesehen davon reagiert IMHO ohnehin keine real existierende Oracle-Instanz auf einen im Access eingestellten Timeout-Wert.
Grüße
Biber
Moin Biber,
Andernfalls wundert es mich auch, dass sich noch niemand beschwert hat, dass die DB / das Netzwerk dann so langsam ist.
Grüße aus Rostock
Wolfgang
(Netwolf)
Wenn ich dann allerdings der Oracle-DBA wäre, dann würde ich ihm entweder die Tür eintreten oder aber den Timeout
auf dem Oracle-Server runtersetzen.
klar, da kann ich dir nur Recht geben, daher auch meine entsprechenden Fragenauf dem Oracle-Server runtersetzen.
Solche Client-User liebe ich ja, die eben mal mit irgendwelchen Krücken wie Excel oder Access und am liebsten über den
Microsoft-Oracle-Treiber spontane Adhoc-Queries abfeuern, die dann dann aber die DB auch mal 20 Minuten rödeln lassen.
daher mein Hinweis auf eine optimierte Abfrage etc.Microsoft-Oracle-Treiber spontane Adhoc-Queries abfeuern, die dann dann aber die DB auch mal 20 Minuten rödeln lassen.
.. dann soll dieser fachliche Bedarf bitteschön an die Oracle-Fuzzies gemailt werden und die fackeln das Ganze auf dem Server ab.
das wäre das Beste, nur scheint es mir dort in der Firma wohl keinen Oracle-Fuzzie zu geben?Aber doch nicht mit dynamischem Client-SQL, bei dem der geneigte DAU dann sagt :"Ich setz den Timeout auf 2 Stunden... ich
kann ja Access minimieren und in Ruhe frühstücken, während die Abfrage läuft."
genau aus diesem Grund meine entsprechenden Fragen. Wenn's ne mini DB ist, wo nur er Zugriff hat, warum nicht kann ja Access minimieren und in Ruhe frühstücken, während die Abfrage läuft."
Andernfalls wundert es mich auch, dass sich noch niemand beschwert hat, dass die DB / das Netzwerk dann so langsam ist.
Abgesehen davon reagiert IMHO ohnehin keine real existierende Oracle-Instanz auf einen im Access eingestellten Timeout-Wert.
richtig, gemeint war das ODBC-TimeoutGrüße aus Rostock
Wolfgang
(Netwolf)
Hallo Hertie,
ich weiß nicht ob es für dich noch interessant ist, aber ich beschreibe dir trotzdem kurz wie es geht.
Zunächst solltest du dir die Indizes der Oracle - DB notieren die du nachbilden willst.
Dann öffest du die Access Datei, Rechtsklick auf die verknüpfte Datenbank, Entwurfsansicht.
In Access 2010 (sorry, hab keine ältere Version mehr) siehst du im Ribbon oben schon den Button "Indizes".
Dort trägst du die Indizierten Tabellenfelder ein.
Gruß
Cadel
ich weiß nicht ob es für dich noch interessant ist, aber ich beschreibe dir trotzdem kurz wie es geht.
Zunächst solltest du dir die Indizes der Oracle - DB notieren die du nachbilden willst.
Dann öffest du die Access Datei, Rechtsklick auf die verknüpfte Datenbank, Entwurfsansicht.
In Access 2010 (sorry, hab keine ältere Version mehr) siehst du im Ribbon oben schon den Button "Indizes".
Dort trägst du die Indizierten Tabellenfelder ein.
Gruß
Cadel