hertie
Goto Top

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

Content-ID: 156276

Url: https://administrator.de/contentid/156276

Ausgedruckt am: 05.11.2024 um 06:11 Uhr

CadelPigott
CadelPigott 03.12.2010 um 12:19:28 Uhr
Goto Top
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
Hertie
Hertie 03.12.2010 um 14:35:09 Uhr
Goto Top
Hallo Cadel,

nein, das habe ich noch nicht versucht.
Auf der Suche nach der Durchführung deines Vorschlages wurde ich leider auch nicht fündig.
Deswegen frage ich dich nun doch "persönlich", wie ich denn eine solche Indizierung starte?!

Danke,
Gruß
NetWolf
NetWolf 03.12.2010 um 22:41:08 Uhr
Goto Top
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)

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 sind

Wä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 funktionieren

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 face-sad

Ist die Datenbank möglicherweise inkonsistent?
wenn, dann die Tabellen! und "ja das wäre möglich" sagt meine Glaskugel

Ich 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 face-smile

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)
Biber
Biber 04.12.2010 um 01:21:36 Uhr
Goto Top
Moin NetWolf,

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.
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
NetWolf
NetWolf 04.12.2010 um 11:50:06 Uhr
Goto Top
Moin Biber,

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 Fragen

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.

.. 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 face-smile
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-Timeout

Grüße aus Rostock
Wolfgang
(Netwolf)
CadelPigott
CadelPigott 06.12.2010 um 11:03:04 Uhr
Goto Top
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
Hertie
Hertie 08.05.2012 um 17:04:16 Uhr
Goto Top
danke für die Hilfe, irgendwann hatte sich das Thema erledigt...
bin inzwischen nicht mal mehr bei der Firma :D wie gesagt trotzdem danke