Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TSQLQuery Puffer-Problem (https://www.delphipraxis.net/173943-tsqlquery-puffer-problem.html)

itashadow 25. Mär 2013 14:59

Datenbank: Oracle • Version: 11.2.0.3.0 • Zugriff über: TSQLQuery

TSQLQuery Puffer-Problem
 
Hallo Leute,

ich versuche gerade ein kleines Status-Tool zu schreiben, welches Daten aus einer Datenbank abfragt und diese dann überprüft bzw. bearbeitet. Da ich noch totaler Delphi-Datenbank-Neuling bin, habe ich Bei folgenden Quellcode ein Problem:

Delphi-Quellcode:
      SQLQuery1.Close;
      SQLQuery1.SQL.Clear;
      SQLQuery1.SQL.Text := 'select cname from tschedulertask';
      SQLQuery1.Open;
sobald er das Open ausführt, kommt folgende Fehlermeldung:
Zitat:

ORA-01062: Speicher f?r Define-Puffer kann nicht zugewiesen werden

Die Tabelle Tschedulertask hat folgende Daten:

CIDCHAR(36 BYTE)No 1Unified ID
CNAMEVARCHAR2(64 BYTE)No 2descriptive name for task configuration
CACTIVENUMBER(1,0)No 3flag for (de-)activation of the task
CCOMMENTVARCHAR2(1024 BYTE)Yes 4optional comment
CCREATEDTIMESTAMP(6)Yes 5Datetime of task creation
CLASTMODIFIEDTIMESTAMP(6)Yes 6Datetime of last task modification
CCREATEUSERVARCHAR2(256 BYTE)Yes 7User who created the task
CLASTUSERVARCHAR2(256 BYTE)Yes 8Last user who modified the task
CENVCHAR(3 BYTE)No 9BIS client
CPROFILEVARCHAR2(64 BYTE)Yes 10Name of a profile/group
CNEXTEXECUTIONTIMESTAMP(6)Yes 11Datetime of next execution
CLASTEXECUTIONTIMESTAMP(6)Yes 12Datetime of last execution
CSITEREFCHAR(36 BYTE)No 13Reference to the site
CQOSNUMBER(5,0)Yes 14Quality of service

Eigentlich soll später dieses SQL ausgeführt werden. Aber das klappt ja auch noch nicht.

'select cid, substr(clastexecution,0,14), substr(cnextexecution,0,14), ctrigger, cactive from tschedulertask '

Wenn ich hingegen nach cactive frage dann klappt es. Wenn ich in einer anderen Tabelle nach VARCHAR(255 Byte) frage, dann klappt das auch --> da sollten ja mehr Daten stehen.

Woran kann das liegen? :(

Ich bin für jede Hilfe dankbar :)

Gruß

itashadow

edit: mist. hatte den betreff nur eingegeben, damit ich die Vorschau verwenden kann. Kann jemand bitte den Titel anpassen? --> "TSQLQuery Puffer-Problem" oder so ähnlich

p80286 25. Mär 2013 15:17

AW: test
 
edit: mist. hatte den betreff nur eingegeben, damit ich die Vorschau verwenden kann. Kann jemand bitte den Titel anpassen? --> "TSQLQuery Puffer-Problem" oder so ähnlich[/QUOTE]

Kein Problem, Du gehst auf Bearbeiten(Deines ersten Beitrags) und unter Erweitert gibt's Die Möglichkeit den Titel zu ändern.

An Deiner Abfrage gibt's nichts auszusetzen, die sollte eigentlich überall laufen.
Also hast Du TSQLQuery richtig eingerichtet (Connection) usw.

Versuch es doch einmal spasseshalber mit ADO(connection/query).
(die sind ja eigentlich immer kostenlos dabei)

Gruß
K-H

itashadow 25. Mär 2013 16:01

AW: TSQLQuery Puffer-Problem
 
das komische ist ja, dass 5 andere Abfragen funktionieren und haben eigentlich einen größeren speicherverbrauch. Die gleiche Fehlermeldung gibt es auch bei CLASTEXECUTION.

aber ich werd mich mal mit ADO beschäftigen und mich mal einlesen.

Hat vielleicht noch jemand einen Tipp?

Gruß

itashadow

p80286 25. Mär 2013 16:21

AW: TSQLQuery Puffer-Problem
 
entschuldigung, ich hatte die ursprüngliche Nachricht nicht richtig gelesen:
Zitat:

ORA-01062: unable to allocate memory for define buffer Cause: Exceeded the maximum buffer size for current plaform
Action: Use piecewise fetch with a smaller buffer size
Da würde ich zunächst einmal einen Blick auf die Connection werfen, und den Admin interviewen.
Nur "die Abfrage hat schon funktioniert" hat überhaupt keinen Wert. (leider)

Gruß
K-H

jobo 25. Mär 2013 20:53

AW: TSQLQuery Puffer-Problem
 
Das könnte ein Oracle Bug sein, die Version, die Du nicht angegeben hast, scheint mir da schon spannend.
Ich kenne aus 10.2xy Bugs bei bestimmten Konstellationen von NLS Settings und der Abfrage von timestamp Feldern aus den Oracle-eigenen task scheduler dictionary views.
Deine weiterführende Abfrage sieht auch so ein wenig grob aus. Substring auf Timestamp muss nicht immmer wie gewünscht funktionieren.

Bernhard Geyer 25. Mär 2013 21:50

AW: TSQLQuery Puffer-Problem
 
Oracle und Bug? Kann niemals sein. :-)

Gibt doch mal an was genau verwendet wird? Evtl. liegt hier auch ein Bug vor den ich auch vor kurzen hatte. Die Zugriffskompos(Oder war der NET-Client) hat für jeden BLOB/TEXT-Feld mehrere MB an Speicher reservier obwohl nur ein paar Bytes benötigt wurde. Dann war schon nach wenigen (100) Ergebnisdatensätzen Schluss mit lustig.

jobo 26. Mär 2013 07:15

AW: TSQLQuery Puffer-Problem
 
In der Feldliste ist aber kein BLOB Feld oder?

itashadow 26. Mär 2013 07:25

AW: TSQLQuery Puffer-Problem
 
Danke schoneinmal für die Rückmeldungen :D

Die Oracle Version konnte ich nun auch ermitteln:

NLSRTL 11.2.0.3.0Production
Oracle Database 11g Enterprise Edition 11.2.0.3.064bit Production
PL/SQL 11.2.0.3.0Production
TNS for Linux: 11.2.0.3.0Production

Als Compiler verwende ich Lazarus und habe folgende Komponenten verwendet:

TSQLConnector
TSQLQuery
TSQLTransaction
TDatasource
TDBGrid

mit dem Admin würde ich zur Zeit ungern sprechen. Das Programm entsteht im hitnergrund. --> Es würde uns zur Zeit enorm entlasten aber bisher war es so, wenn wir 10% last weniger hatten, kamen 20% mehr arbeit hinzu.

Abgefragt wird ein VARCHAR2(64 Byte) wobei es insgesamt nur 75 einträge in der Datenbank gibt. Wenn ich per Whereklausel das ganze so einschränke, dass nur ein Wert ausgegeben werden soll, dann bekomme ich den gleichen Fehler. --> Es handelt sich um einen zusammenhängenden text mit Buchstaben, Zahlen, doppelpunkten und unterstrichen. der längste ist 65 Zeichen lang. Durchschnitt dürfte bei 30 Zeichen liegen.

mit "die Abfrage hat schon funktioniert" wollte ich nur ausdrücken, dass die Connection prinzipiell funktioniert und es wahrscheinlich etwas mit den Feldern zu tun hat. --> Wenn ich das gleiche SQL-Statement im PLSQL-Developer ausführe bekomme ich das richtige ergebnis.

Kann mir vielleicht jemand sagen, wie ich mir bei dem TSQLQuery die MaxBufferSize ausgeben lassen kann? Die varianten die ich im Netz gefunden habe, haben alle nicht funktioniert :(

jobo 26. Mär 2013 07:53

AW: TSQLQuery Puffer-Problem
 
Die Fehlermeldung ist von Oracle, es geht um Oracle Buffer.
Vielleicht solltest Du das mit Deinem Admin klären, miteinander klappt das sicher besser als heimlich.

Welche Oracle Client Componenten/ Version verwendest Du?
(SDAC geht über OLEDB, oder?) Das war quatsch, hab ich mit anderem Thread verwechselt.

PL/SQLDeveloper geht nativ an OCI.

itashadow 2. Mai 2013 09:28

AW: TSQLQuery Puffer-Problem
 
ein umstellen von TSQLConnector auf TOracleConnection hat geholfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 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