AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

Ein Thema von mjustin · begonnen am 7. Jul 2021 · letzter Beitrag vom 25. Sep 2021
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
2.810 Beiträge
 
Delphi 2009 Professional
 
#1

'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 7. Jul 2021, 09:48
Datenbank: Oracle • Version: 19c • Zugriff über: ODBC
Bei Exceptions, die bei ungültiger Syntax eines SQL Statements über eine FireDAC Query entstehen, enthält die Exception-Message ungültige Zeichen:

screenshot-1.png

Die ungültigen Zeichen beginnen mit einem CR ($A) und einem Null-Byte. Der Datenbank-Zugriff erfolgt über Oracle InstantClient in Version 19.5. Mit einer anderen Oracle Version (12c) habe ich noch nicht getestet. Ist dies jemandem schon mal begegnet? Ich schaue später auch in der Delphi Bug-Datenbank nach. (update: unten oracle / firedac und oracle / exception habe ich keine Einträge gefunden. Dann müsste ich nun ein minimales Beispielprojekt erstellen ...).
Michael Justin

Geändert von mjustin ( 7. Jul 2021 um 09:53 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.963 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 7. Jul 2021, 14:02
Den Instant Client gibt es ja in verschiednen "Ausbaustufen". Ich erinnere mich, dass für eine Nutzung mit OLEDB diverse Extras installiert werden mussten.
Ich würde überprüfen, ob der Client allein sauber läuft und ordentliche Fehlermeldungen ausspukt, wenn man die gleichen falschen Statements einträgt. Das bedeutet beim Instant Client wahrscheinlich, dass man auch SQLplus oder so als Extra installieren muss. Weiß ich nicht mehr genau. (Alternativ ein anderes, vorhandenes DB Tool nutzen, das möglichst simpel den gleichen Instant Client nutzt. GgF. ein Java basierter Client wie sqldeveloper o.ä. oder irgendeine Test Version eines DB Tools.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.900 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 7. Jul 2021, 15:02
Zugriff über ODBC (Firedac -> ODBC -> InstantClient)?
Geht nicht auch FireDac -> InstantClient?

Je mehr zwischenschichten, desto mehr Probleme.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.810 Beiträge
 
Delphi 2009 Professional
 
#4

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 8. Jul 2021, 17:30
Vielen Dank für die Anregungen. Mit dBeaver (JDBC) erhalte ich keine besonderen Zeichen am Ende der Fehlermeldung. Mit Oracle 1c und 19c und FireDAC erhalte ich regelmäßig am Ende der 'normalen' Fehlermeldung (zum Beispiel "... ORA-00942: table or view does not exist") die in den Screenshots gezeigten #A #0 und weitere zufällige Bytes.

Meine Vermutung ist, dass beim Lesen des Fehlertextes aus der Oracle/ODBC Client DLL in den FireDAC Treiber ein Bug dazu führt, dass die Länge der Fehlermeldung fehlerhaft ermittelt wird, und dann mehr Zeichen als vorhanden ausgelesen werden. Bei Zugriff über den MS SQL ODBC Treiber tritt dieser Fehler bei gleichen SQL statements nicht auf.
Michael Justin
  Mit Zitat antworten Zitat
jobo

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

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 8. Jul 2021, 19:09
Ich bin mir nicht mehr sicher, aber die JAR Treiber sind vielleicht autark? Also kein geeigneter Test für den Instant Client?
Und woher kommt der MS SQL ODBC Treiber? Instant Client > ODBC Modul > MS SQL ODBC?
Wie aktuell sind die Treiber bzw. passen sie zur Version der DB? (1c ist vermutlich 12c?) Die 12er Version ist ja auch nicht unbedingt frisch.

Und noch was anderes:
(Ich bekomme das aus dem Kopf leider nicht mehr zusammen)
Der Instant Client kann ja pur ohne Setup und erhöhte Rechte "installiert" werden. Also im Prinzip einfach Dateien irgendwo hinkopieren und los geht's. (Wenn man auch ODBC und Tools installiert, geht das ja schon nicht mehr so ohne weiteres). Was aber bei der puren Grundinstallation wichtig ist, der Suchpfad.
Wird der nicht angepasst und hat man zufällig ältere oder auch schlicht andere Oracle Installationen auf dem Rechner, dann geht das leicht in die Hose. Da Du von 12c schreibst, könnte das ja hier der Fall sein.
Auch eine Deinstallation des Oracle (Fat-)Clients oder anderer Oracle Produkte war zumindest früher so schlecht, dass Pfad und Umgebungsvariablen nicht ordentlich hinterlassen wurden. Dann stehen u.U. diverse Oracle Suchpfade im PATH und es ist etwas Glückssache, welcher vorne steht / zuerst gefunden wird.
Solche Probleme kann man relativ leicht durchtesten, wenn man mit der CMD Box im Oracle Client Installationsverzeichnis bleibt, dort die Umgebungsvariablen anpasst/durchändert und sein eigenes Programm von dort lokal startet, so dass es die dortige oci dll nehmen muss.
Gruß, Jo
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.810 Beiträge
 
Delphi 2009 Professional
 
#6

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 9. Jul 2021, 12:57
Ich bin mir nicht mehr sicher, aber die JAR Treiber sind vielleicht autark? Also kein geeigneter Test für den Instant Client?
Und woher kommt der MS SQL ODBC Treiber? Instant Client > ODBC Modul > MS SQL ODBC?
Wie aktuell sind die Treiber bzw. passen sie zur Version der DB? (1c ist vermutlich 12c?) Die 12er Version ist ja auch nicht unbedingt frisch.
JDBC läuft direkt (ohne Zwischenhalt im InstantClient) von der Anwendung zum Server, daher hat man damit die ODBC und die FireDAC Schicht nicht im Spiel. MS SQL habe ich als alternatives DB System kontrolliert, es läuft natürlich nicht über den InstantClient. Ich habe aktuelle Treiber für Oracle 12 und Oracle 19 und ausser den InstantClient Installationen keine Oracle Tools installiert, und auch keine PATH Einstellungen für Oracle, d.h. die Installation ist vermutlich sauber. Ich prüfe das noch, Oracle 12 Clients kann man aktuell noch downloaden (12.1.0.2.0), es wird noch unterstützt.

Einen Kommandozeilen-Client habe ich nicht installiert, ich greife nur über ODBC auf die Datenbanken zu, und die ODBC-Konfiguration verwendet jeweils den zur Datenbank passenden InstantClient.
Michael Justin
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.963 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 9. Jul 2021, 23:21
Das mit MS SQL habe ich falsch verstanden. Ich hatte an den MS Treiber für Oracle gedacht, aber Du sprichst von einer separaten MS SQL Installation? Die hat natürlich auch nichts mit dem Instantclient zu tun, nur eben auch Firedac.
Aber Du hast beide Oracle Clients, 12c und 19c auf dem System? Das bietet immerin Potential für Vermischung. Den 12c Client habe ich auch noch verwendet, aber das ist schon länger her.

Es geht ja nur darum, das Problem zu finden. Also einfach mal einen der beiden, den alten z.B., deinstallieren. Der 19er Client geht angeblich auch mit alten 12er DB. Also gibt es eh keinen Grund für 2 clients auf einem System.
Gruß, Jo
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.810 Beiträge
 
Delphi 2009 Professional
 
#8

AW: 'Müll'-Zeichen in FireDAC-Exception Message (Oracle 19c)

  Alt 25. Sep 2021, 12:19
Der Bug wurde gefunden und auch schon korrigiert, leider kann ich den Bugfix hier nicht veröffentlichen.

Er entsteht in einer FireDAC ODBC Treiberklasse, darin wird der Rückgabewert der Client-DLL nicht korrekt ausgelesen.

(reproduziert bisher in Delphi 10.2, eine neuere Delphi-Version habe ich in der entsprechenden Systemumgebung leider nicht)
Michael Justin
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 09:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf