![]() |
Datenbank: oracle • Version: 11 • Zugriff über: egal(?)
Ansi-Join provoziert Fehler
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:
denn
Code:
funktioniert dann wieder.
select tab1.Feld1,tab2.Feld2,Tab3.Felda
from tab1 join tab2 using (idkey) join tab3 on (tab2.seckey=tab3.objectkey) where .... Joint man nach "alter Väter Sitte"
Code:
gibt es keine Probleme und Fehlermeldungen.
select tab1.Feld1,tab2.Feld2,Tab3.*
from tab1,tab2,tab3 where tab1.idkey=tab2.idkey and tab2.seckey=tab3.objectkey and .... Gruß K-H |
AW: Ansi-Join provoziert Fehler
Sieht nach einem Fehler im OleDB-Treiber aus.
|
AW: Ansi-Join provoziert Fehler
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.
|
AW: Ansi-Join provoziert Fehler
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 |
AW: Ansi-Join provoziert Fehler
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. |
AW: Ansi-Join provoziert Fehler
|
AW: Ansi-Join provoziert Fehler
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 |
AW: Ansi-Join provoziert Fehler
Und was ist wenn "using(idkey)" durch "on tab1.idkey=tab2.idkey" ersetzt wird?
|
AW: Ansi-Join provoziert Fehler
Zitat:
Das Tab3.* hat mit dem using eigentlich nichts zu tun, denn das using bezieht sich auf den Join von tab1 und tab2, während tab3 einen expliziten "on " Join hat (und das Asterisks gemurkse vom using nicht relevant sein dürfte). Daher dürften die komischen Feld Selektor Alias Automatismen (ich find sowas furchtbar) nicht greifen. Hat aber vielleicht irgendjemand bei Oracle selbst nicht verstanden und falsch programmiert. :) Aber vielleicht hab ich es auch nicht verstanden :) @Mikal: Ist das etwa Humor hier in der DP?! |
AW: Ansi-Join provoziert Fehler
Zitat:
Während meiner Studienzeit hat es ein Mitkommilitone geschafft durch eine Select-Anweisung das ganz Uni-Netz lahm zu legen (ok, der Server auf dem die Oracle-DB lag war nicht nur DB-Server). |
AW: Ansi-Join provoziert Fehler
@Bernhard: Hast Du eigentlich irgendeinen Schwur gegen Oracle geleistet? Waren "sie" böse zu Dir?
Wie lang ist das her mit dem Studienkollegen? Man braucht nur einen Join zu vergessen und die Datenbank permutiert durch die Gegend, da muss jede Datenbank ackern. |
AW: Ansi-Join provoziert Fehler
Zitat:
Zitat:
Und einen "schwur" braucht man bei Oracle nicht. So oft wie man schon bei Oracle unnachvollziehbare Performanceprobleme hat. Ab und zu bringt es wenn der Server eh durch eine neuere Version aktualsiert werden. Ab und zu muss man praktisch den DB-Inhalt rauspumpen und die DB platt machen bis es wieder geht. Das erschreckende ist auch öfter das die Oracle-Admin (die sich oft als die Elite der DB-Admins ansieht) absolut kein Fachwissen von DB-Interne und gerade noch ihre Standardreports abrufen können die sie bei ihren nicht gerade billigen Oracle-DB-Schulungen durchgenommen haben. |
AW: Ansi-Join provoziert Fehler
20 Jahre! Da erübrigt sich eigentlich jeder Kommentar.
Dennoch, rechne ca. 10 Jahre drauf, zu der Zeit haben MS SQL Anwendung noch Probleme mit Rowlevel Locking gehabt. Man braucht da auch gar nicht über verschiedene Anbieter die Nase zu rümpfen. Es reicht falsche Transaktionsverwaltung in der Anwendung und keine DB hat ne Chance, das ist mit Sicherheit kein Admin Problem. Die Art und Weise, wie sich Schulungsinhalte oder-vorgehen entwickelt haben, reicht auch keinem Anbieter zur Ehre, es geht nur ums Geld verdienen. Oracle Datenbanken hatten und haben nach meiner Meinung technologisch die Nase vorne. Nicht mehr und nicht weniger. Wahrscheinlich sind sie auch deswegen am komplexesten in der Administration. Ich hatte bereits das "Vergnügen" Terrabyte Systeme zu verwalten- ohne Admin Titel. Die von Dir genannte "Tuning" Technik ist da einfach aus Platzgründen nicht ohne weiteres möglich, ganz abgesehen von der Tatsache, dass sich sowas bei einem 24x7 System von allein verbietet. Ganz anders sieht die Sache schon bei anderen Oracle Produkten aus. Und bei Oracle-Produkten in der Microsoftwelt merkt man immer wieder, dass es nicht ihre ist. Im übrigen ist es so, dass jedes Software-System eine Geschichte hat, die es idR nicht verleugnen kann. "Best practise" ist hierzu ein schönes (Microsoft- glaub ich) Stichwort. Wenn man ein System so nutzt, wie es gedacht ist, fährt man am besten. (Hier wäre man vermutlich irgendwie wieder beim Thema des Threads angelangt, ANSI Joins sind bei Oracle erst spät(er) angeflanscht worden und ich verwende sie nur, wenn der Oracle Style zu umständlich wäre) |
AW: Ansi-Join provoziert Fehler
Zitat:
Zitat:
Und nach den Erfahrungen die wir in den Jahren habe sind mir 10 MS SQL-Server-Installationen lieber als eine Oracle-Installation. Zitat:
Zitat:
Leider denken manche Firmen: Wir haben Oracle, die Admins sind geschult. Wenn es Probleme gibt muss es die Kauf-Software sein. Dann ist es immer sehr zeitaufwändig die Entscheidungsträger zu überzeugen das das Problem auf Ihrer Seite gibt. Vor allem wenn die Admins irgendwelche Statistiken ins Feld führen die gar nix mit dem Problem zu tun haben. Zitat:
Zitat:
ANSI-Join sind auch besser verständlich wenn man Einschränkungen dort definieren kann wo sie hin gehören: An den JOIN! |
AW: Ansi-Join provoziert Fehler
Zitat:
Was passiert wenn du das über eine ODBC-Verbindung abschicken würdest? |
AW: Ansi-Join provoziert Fehler
@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. |
AW: Ansi-Join provoziert Fehler
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? :gruebel:
|
AW: Ansi-Join provoziert Fehler
Zitat:
Hätte der Threadersteller das nicht gewollt, hätte er ja wohl eine Frage gestellt. Und mein letzter Post waren ja Hinweise was er entsprechend seinem Erstellerpost "Zugriff: egal" mal ausprobieren könnte. |
AW: Ansi-Join provoziert Fehler
Zitat:
Mir ist klar, dass es Forenmitglieder gibt, die meine oder Bernhards oder andere Beiträge größtenteils als "Gelaber" betrachten. Das teilen sie mit einem entsprechenden Beitrag ja dann auch mal mit. Genau wie ich das mache, wenn ich irgendeinen Beitrag auf die ein oder andere Art "unterirdisch" finde. So wie hier z.B. in diesem Thread. Was ist daran verkehrt? Gehört das nicht zu einem Forum dazu? Wer sachliche und trockene Information braucht, kann doch z.B. Handbücher lesen. Wer auch mal gern über den Tellerrand schaut und "apropos" Gedanken mitnehmen mag, schaut vielleicht lieber in ein Forum wie dieses. In einer idealen Welt sähe ein Forum wahrscheinlich anders aus. Klare Frage, klare Antwort, fertig... Bei der Gelegenheit, auch wenn es jetzt nach Deinem Anpfiff vielleicht blöd klingt, ein Dank an die Moderatoren. |
AW: Ansi-Join provoziert Fehler
<Senf>
Leute, ich habe einmal mit Oracle gearbeitet. Öfter muss nicht sein. Von einem RDBMS erwarte ich, das es seine Arbeit gut macht. Das ist bei Oracle nicht immer der Fall. Klar, man kann immer irgendwo drehen, rumschrauben, obskure Einstellungen ändern, aber ... wieso sollte ich das tun? Warum soll ich im 21. Jahrhundert ein System wie eine experimentelle Dampfmaschine behandeln, nur damit sie irgendwann vielleicht doch den Turbo rauslässt. Nee. Solange ich das nicht muss, lass ich es sein </Senf> |
AW: Ansi-Join provoziert Fehler
Hallo Leute, meine Erfahrungen mit xxx und yyy verkneif ich mir mal, das wurde hier teilweise schon angesprochen.
Ich hab nochmal getestet und ausprobiert
Code:
ist kein Problem, SQL+ gibt es bei 11 nicht mehr, da nennt das Teil sich "SQLDEVELOPER" und bestätigt alle Oracle-Vorurteile.
on(feld1=feld2)
Ich bin einen kleinen Schritt weiter gekommen, der Fehler wird wohl durch eine ganz bestimmte ?????Konstellation??? ausgelöst. Bei anderen Tabellen mit der gleichen Join Syntax war er nicht zu provozieren. Nehmen wir es hin, da ist irgendwas, man weiß nur nicht genau was. Vielen Dank an alle Gruß K-H P.S. jetzt hab ich es auch mal mit dem SQLDeveloper versucht, kein Problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07: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-2025 by Thomas Breitkreuz