PDA

View Full Version : *SQLPKG werden nicht automatisch erstellt?



angelone
16-03-05, 15:22
Hallo zusammen,
ich hab da ein Problemchen mit meinem ODBC Zugriff.

Ich mache aus PHP einen ODBC Zugriff auf die as400.
Das ganze läuft per linuxodbc mit dem aktellen ibm odbc treiber.

Eigentlich ist das eine super Sache und läuft super.
Nur auf einer Maschine nicht.
Da ist der Zugriff grottenlahm (bei gleicher Datei und gleicher Anzahl Sätze wie auf den anderen).

Nach ein bischen rumsuchen hab ich jetzt entdeckt, dass auf allen Maschinen ein *SQLPKG in QGPL erstellt wird beim Zugriff, nur auf der einen nicht.
Das Package heisst HTTPDVBA, ist ja stdmässig immer der Name der zugreifenden Applikation mit drin.
Auf allen Maschinen kann ich das Package löschen und beim nächsten Zugriff wirds neu erstellt.

Nur auf der einen gibts das nicht.

Jetzt hab ich mir schon überlegt, dass es an den Lizenzprogrammen liegt, aber alle zum Thema relevanten sind auf allen Maschinen drauf.

Jetzt frag ich mich, wiso das nicht funzt bei der einen.
Kann man das irgendwo einstellen?
afaik nicht.

Der ODBC Zugriff ist auch der selbe.
Hab einfach den Maschinennamen geändert.

Ich will das *SQLPKG haben :)
Weil ich stark die Vermutung habe, dass es damit schhneller geht.

Hat wer ne idee wiso das nicht geht?

mfg
Martin

Fuerchau
16-03-05, 15:29
Ggf. ein Berechtigungsproblem ?
Hier gabs schon mal so einen Hinweis, dass ein QZDA-Paket gelöscht werden sollte, was nur geht, wenn der DB-Server unten ist.
Welche OS-Version betrifft es denn ?

angelone
16-03-05, 15:51
ne, ein berechtigungsproblem isses nicht denke ich.

und an dem profil oder den qgpl berechtigungen haben wir nix geändert.
die sind auch auf sämtlichen systemen gleich.
dieser user hat auch zugriff aufs qgpl
auch mit usern die *allobj haben gehts nicht

release ist 510

qzda paket löschen könnte ich versuchen.
dann wird das auch nit neu erstellt
und die 20-30 odbcuser auf der maschine reissen mir den kopf ab :)

habe jetzt grade mal versucht von windows aus mit einem programm zuzugreifen dass noch kein sqlpkg hat.
funktioniert auch nicht.

nur windows ist da etwas hohl.
wenn da das package fehlt, geht gar nix mehr.
unter linux scheint der sich dann in dem fall das qzda package zu nehmen.
die verbindung und arbeiten klappen da nämlich auch ohne package.

Fuerchau
16-03-05, 16:13
Das QZDA-Package enthält nur die Anweisungen für Zugriffe auf Systemtabellen (siehe PRTSQLINF).
Wenn keine Pakete erstellt werden, kann es auch an der ODBC-Einstellung liegen. Hier muss die "Erweiterte Unterstützung" angehakt sein (Windows).
Mit den SQLPKG's ist die Verarbeitung aber nur minimal schneller. Das sollte also nicht der Grund der Langsamkeit sein.

Wen das QZDA-Paket nicht neu erstellt wird, hast du eh ein Grundsatzproblem.

TARASIK
17-03-05, 06:28
Hallo,
ich würde generell alle SQL Packages in der QGPL löschen.
Diese Packages werden bei dem ersten Benutzen wieder
neu erstellt. Du kannst Dir ja einmal die Eigenschaften dieser
Packages anschauen, diese sind bestimmt von "1800 ungerade". Auf den Pc sollten zudem das "neueste"
Servicepack Client Access installiert sein.

http://www-1.ibm.com/servers/eserver/iseries/access/casp.htm

ftp://ftp.software.ibm.com/as400/products/clientaccess/win32/v5r1m0/servicepack/si11806/

Desweiteren sollte das aktuelle Datenbankgruppenptf
sf99501 installiert sein.
DSPDTAARA QSYS/SF99501

http://www-1.ibm.com/support/docview.wss?uid=nas12974fafa50d0fcec86256a5e007a0d 4f&rs=110

angelone
17-03-05, 07:46
Wenn keine Pakete erstellt werden, kann es auch an der ODBC-Einstellung liegen.
Hier muss die "Erweiterte Unterstützung" angehakt sein (Windows).
hab ich an.
beim linuxtreiber ist das die "ExtendedDynamic" Option.
die ist aber stdmässig eh immer an.



Mit den SQLPKG's ist die Verarbeitung aber nur minimal schneller. Das sollte also nicht der Grund der Langsamkeit sein.

meinst?
wofür gibts die dann? wenn nich zum schneller machen :)
mir solls ja egal sein
aber die windows programmierfuzzies hier haben da ein problem.
der odbc treider scheint nicht zu funzen wenn keine pakete angelegt werden können.



Wenn das QZDA-Paket nicht neu erstellt wird, hast du eh ein Grundsatzproblem.
da rede ich ja von :)
an meinem odbc programm liegts nicht
es liegt nur an der as400
und die legt halt keine pakete an.
hab SF99501-09 auf der maschine.
aktuell is 13... mal ordern
evtl gehts ja dann

ich werd auch mal die ibm anhauen.

Fuerchau
17-03-05, 08:11
Pakete bringen eh nur dann etwas, wenn man mit Parametermarkern bzw. unveränderten SQL's arbeitet.
Werden, wie häufig, die SQL's incl. der Abfragewerte im Programm zusammengebaut, muss ja jedesmal ein Syntaxcheck durchgeführt werden.
Ab V5R2 schaut der Optimizer, ob die Parameterwerte ggf. durch Marker ersetzt werden können und prüft dann, ob der SQL bereits im Paket vorliegt.
Ist das der Fall, kann jetzt nachgeschaut werden, ob die Datei/en bereits geöffnet sind (ODP).
Vor V5R2 wird der SQL im Paket abgelegt und kann eigentlich selten wiederverwendet werden (die Parameter veränderen sich ja ständig).

Werden nun Marker "?" verwendet, erfolgt der Syntaxcheck incl. Paket-Prüfung /-Ablage nur 1 Mal, ein Cursor wird geöffnet und jeder nachfolgende Aufruf verwendet diesen Cursor. Das Paket ist dann gar nicht mehr im Spiel.

Auch das Transfervolumen zur AS/400 veringert sich.

Beispiel:

Select f1, f2, ... from ... where F1='bla' and f2=12 and ...

Dies ist die schlechteste Lösung, da ja erst der Syntaxcheck erfolgen muss.
Auch der ODBC-Treiber, ADO/DAO-Komponenten können nicht auf Prepared-Statements zurückgreifen !
Schon im PC müssen alle Objekte verworfen und neu erstellt werden.

Besser:
Select f1, f2, ... from ... where F1=? and f2=? and ...

CmdObj(0) = Wert1
CmdObj(1) = Wert2
:
execute

Das Gleiche gilt für Updates/Inserts/Deletes/Procedures, also alles was irgendwie parametrierbar ist.

angelone
17-03-05, 13:44
grummel
es gibt n APAR zu unserem problem

"SQL7973 SQL Create Package Failed"

aber is nur für systempartner.
kann das wer lesen hier?
und mir kurz ne zusammenfassung geben? :)

TARASIK
17-03-05, 13:49
Hallo, wenn Du mir private Nachrichten Deine Emailadresse
mitteilst schicke ich Dir den Apar.

angelone
17-03-05, 14:16
Sauber.
Danke

kurze info für andere leute die dieses Problem haben könnten:
in qsys müssen diese beiden *SQLPKG liegen.
diese braucht der datenbankserver um sql packages erstellen zu können:

QSQLPKG2 und QSQXDPKG

bei mir fehlt das QSQXDPKG aus irgend einem grund...