AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Ansi-Join provoziert Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Ansi-Join provoziert Fehler

Ein Thema von p80286 · begonnen am 7. Feb 2014 · letzter Beitrag vom 11. Feb 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 12:31
Datenbank: oracle • Version: 11 • Zugriff über: egal(?)
Hallo zusammen

hier ist ja schon öfter mal über ANSI-Joins Ja oder Nein diskutiert worden, mit folgender Abfrage habe ich dann folgenden Fehler provozieren können:
Code:
select tab1.Feld1,tab2.Feld2,Tab3.*
from tab1 join tab2 using (idkey)
          join tab3 on (tab2.seckey=tab3.objectkey)
where ....
Zitat:
Im Projekt XXX ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 4440F60B in Modul 'OraOLEDBrst11.dll'. Lesen von Adresse ABABABAB' aufgetreten.
Wohlgemerkt, es kommt keine ORACLE-Fehlermeldung, das ein Qualifier nicht genutzt werden darf.

denn
Code:
select tab1.Feld1,tab2.Feld2,Tab3.Felda
from tab1 join tab2 using (idkey)
          join tab3 on (tab2.seckey=tab3.objectkey)
where ....
funktioniert dann wieder.

Joint man nach "alter Väter Sitte"
Code:
select tab1.Feld1,tab2.Feld2,Tab3.*
from tab1,tab2,tab3
where tab1.idkey=tab2.idkey
  and tab2.seckey=tab3.objectkey
  and ....
gibt es keine Probleme und Fehlermeldungen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 12:36
Sieht nach einem Fehler im OleDB-Treiber aus.
Markus Kinzler
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 12:47
Die Adresse ABABABAB klingt mir auch stark nach einer "Magic" Adresse, die einen (als unmöglich auftretend gedachten) Fehler leichter auffindbar machen soll. Hat man früher zumindest gerne mal gemacht so. Da scheint wirklich was in der DLL struppig zu sein.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 13:12
Vergiss die Adresse, bei drei Aufrufen war sie dreimal anders.
Wo zum .. kommt die DLL her? Tante G hat da nichts erhellendes gebracht, nur die üblichen Besserwisserseiten.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 16:07
Meine Theorie ist:
- offensichtlich kein "ORA-" Fehler, also ein Treiberproblem (OLEDB)
- Die Joinvarianten, die Du produzierst, sind nur der Auslöser, da sie
- vermutlich durch andere Ausführungspläne bzw. in einem Fall anderes Select Statement
-> andere Daten ausspucken
Da liegt dann der Hase im Pfeffer.
Der Treiber hat ein Problem mit den Daten.

Typischerweise sind das Date Werte vor Christi Geburt usw.

Vielleicht kannst Du das durch eingrenzen des selects nachvollziehen. Es müsste demzufolge ein Single Table Select reichen (ohne Join) um das Problem zu reproduzieren. (wenn man die fehlerhaften Daten erwischt)

Seit ich auf Oracle OLEDB umgestiegen bin (glaub aktuell Version 11.2 bei mir) hab ich sowas (Treiberprobleme mit Dateninhalten) allerdings nicht mehr erlebt.

P.S.: Hab grad erst die "OraOLEDBrst11.dll" im Post endeckt. Also 11er Oracle OLEDB Client?
Ist schon etwas her, aber ich erinner mich, dass ich "damals" den Instant Client 11.2 vorinstalliert habe und den OLEDB Teil aus den älteren "ODAC" Komponenten nachinstalliert. Um eben halt so aktuell wie möglich zu sein. Mittlerweile dürfte es ja wesentlich aktuellere Treiber geben.
Gruß, Jo

Geändert von jobo ( 7. Feb 2014 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 16:17
Nee die Datenwerte aus der Steinzeit hab ich auch schon mal gehabt, das ist es nicht.
Es liegt einzig an dem "select Tab3.*" be dem ein Feld aus Using mit ausgegeben wird (werden sollte)
bloß gibts dann normalerweise einen richtigen ORA.Fehler.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Ansi-Join provoziert Fehler

  Alt 7. Feb 2014, 16:14
Vielleicht hilft dir das weiter:

http://www.pcmaxutilities.com/wikidl...fix-guide.html

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.211 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Ansi-Join provoziert Fehler

  Alt 8. Feb 2014, 11:53
Hallo zusammen

hier ist ja schon öfter mal über ANSI-Joins Ja oder Nein diskutiert worden, mit folgender Abfrage habe ich dann folgenden Fehler provozieren können:
Code:
select tab1.Feld1,tab2.Feld2,Tab3.*
from tab1 join tab2 using (idkey)
          join tab3 on (tab2.seckey=tab3.objectkey)
where ....
Zitat:
Im Projekt XXX ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 4440F60B in Modul 'OraOLEDBrst11.dll'. Lesen von Adresse ABABABAB' aufgetreten.
Wohlgemerkt, es kommt keine ORACLE-Fehlermeldung, das ein Qualifier nicht genutzt werden darf.
Hast du mal probiert dieses SQL-Statement direkt mit dem SQL+ oder den Oracle-Developer abzuschicken?
Was passiert wenn du das über eine ODBC-Verbindung abschicken würdest?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Ansi-Join provoziert Fehler

  Alt 8. Feb 2014, 16:57
@Bernhard
Für mich ist das nicht nachvollziehbar, was Du da schreibst. Ich habe in 15 Jahren Oracle nur einen echten Fehler in der DB gehabt. Performanceprobleme natürlich ab und an, die sich aber immer mit vertretbarem Aufwand lösen ließen.
Dagegen viel häufiger Voodoo Fehler wie ich sie nenne, Kollegen die sich über sch.. Oracle aufregen. IdR. reicht dann RTFM, um das "Phänomen" zu klären.

Was tatsächlich nicht gut gelungen ist bzw. war: Der neue CBO unter Oracle 9, der hat sehr viel nicht nachvollziehbare Ausführungspläne erzeugt. Das konnte man immer durch Rulebased Optimzer grade biegen.
Seit spätestens 10.2 alles unproblematisch nach meiner Erfahrung.

Zuletzt gibt es ja noch Support und Patches. Die habe ich aber nie bei Oracle DB gebraucht, dafür leider bei anderen Oracle Produkten.

Zu den ANSI Joins noch kurz. Ich weiß nicht, wann das eingeführt wurde. 9i würde ich auch als spät-aus Oracle Perspektive- bezeichnen. Fakt ist, es gibt noch Horden von Oracle Entwicklern und Gurus, die immernoch keine ANSI Joins verwenden. Ich habe mich auch noch nicht dran gewöhnt.
Natürlich sollte das funktionieren, da gebe ich Dir Recht. Wird aber scheinbar zu selten benutzt.
Der 11er OLEDB Treiber um den es hier geht, dürfte auch schon was älter sein.
Ich würde in jedem Fall versuchen, einen aktuelleren Treiber einzusetzen oder aber im Support mal nach Patches/Bugs schauen.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Ansi-Join provoziert Fehler

  Alt 8. Feb 2014, 18:36
Ist es eigentlich möglich eine Frage zu stellen, welche auch nur im Entferntesten etwas mit Oracel zu tun hat, ohne das ein Glaubenkrieg um Oracle entfacht wird?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz