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-Key: 156276

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: CadelPigott
CadelPigott Dec 03, 2010 at 11:19:28 (UTC)
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
Member: Hertie
Hertie Dec 03, 2010 at 13:35:09 (UTC)
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ß
Member: NetWolf
NetWolf Dec 03, 2010 at 21:41:08 (UTC)
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)
Member: Biber
Biber Dec 04, 2010 at 00:21:36 (UTC)
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
Member: NetWolf
NetWolf Dec 04, 2010 at 10:50:06 (UTC)
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)
Member: CadelPigott
CadelPigott Dec 06, 2010 at 10:03:04 (UTC)
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
Member: Hertie
Hertie May 08, 2012 at 15:04:16 (UTC)
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