DB Üernahme von Windows auf Linux FB 2.5

Einsatz von AvERP mit Linux als Server- und/oder Anwendungs-OS

Moderator: SYNERPY

Antworten
michael
Beiträge: 8
Registriert: Do Apr 29, 2010 3:43 pm

DB Üernahme von Windows auf Linux FB 2.5

Beitrag von michael »

Hallo Zusammen,

Ich habe eine Installation unter Windows begonnen und moechte nun die DB nun aber unter linux laufen lassen.
Die Basis-Installation von FB2.5 hat soweit geklappt
Ich hab die DB auf linux uebernommen.

Code: Alles auswählen

07:54 root@server01:/opt/firebird/UDF # lsb_release -d
Description:    Debian GNU/Linux 5.0.3 (lenny)
07:55 root@server01:/opt/firebird/UDF # ll
insgesamt 552K
-rwxr-xr-x 1 firebird firebird  17K 21. Nov 15:59 fbudf.so
-rw-r--r-- 1 firebird firebird 7,0K 21. Nov 15:59 fbudf.sql
-rwxr--r-- 1 firebird firebird 184K 10. Dez 12:18 FreeAdhocUDF_FB2x64.so
-rwxr--r-- 1 firebird firebird 136K 10. Dez 12:18 FreeAdhocUDF_FB2x_glibc23.so
-rwxr--r-- 1 firebird firebird 139K 10. Dez 12:18 FreeAdhocUDF_FB2x.so
-rw-r--r-- 1 firebird firebird  19K 21. Nov 15:59 ib_udf2.sql
-rwxr-xr-x 1 firebird firebird  11K 21. Nov 15:59 ib_udf.so
-rw-r--r-- 1 firebird firebird  19K 21. Nov 15:59 ib_udf.sql
Das System ist ein 32bit OS

wenn nun der client gestartet wird erscheinen aber folgende Fehlermeldungen die ich nicht loesen kann. Es sieht fuer mich so aus als wuerden Stored Procedures fehlen.

Meldung 1:

Code: Alles auswählen

ISC ERROR CODE:335544343
ISC ERROR MESSAGE:
invalid request BLR at offest 159
function F_LRTRIM is not defined
module name or etrypoint could not be found
Error while parsing procedure P_A_FELDER_MANDATFELD's BLR
Error while parsing procedu(...)
Meldung 2:

Code: Alles auswählen

ISC ERROR CODE:335544343
ISC ERROR MESSAGE:
invalid request BLR at offest 159
function F_LRTRIM is not defined
module name or etrypoint could not be found
Error while parsing procedure P_USER_EINTELLUNGEN's BLR
Gruss
Michael
AloisMaier

Beitrag von AloisMaier »

Hallo,

dieser Fehler entsteht durch die fehlende UDFs.

ich kann leider keine Lösung anbieten, aber soweit ich mich erinnere, gibt es hier im Forum eine Anleitung wie man die UDFs unter linux einbinden kann
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Es wird zur Lösung ausreichen, sich für EINE der FreeAdHOC UDF's zu entscheiden (nämlich die zum System passende) und bei der im Dateinamen alles hinter UDF wegzumachen. Das .so muß bleiben. Danach Firebird mit sudo /etc/init.d/firebird restart neustarten und es sollte auf Anhieb laufen.

Und als grundlegendern Tip: bei Fragen IMMER die DB-Version und bei Linux zumindest mal die Distribution mit angeben. Das macht es leichter zu antworten.

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Okay, die Distribution steht versteckt im ersten CODE-Block ... Asche auf mein Haupt. Aber für ein Debian mit installiertem Superserver sollte der Befehl zum restarten so funktionieren.

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
michael
Beiträge: 8
Registriert: Do Apr 29, 2010 3:43 pm

Beitrag von michael »

Hallo,

ok das mit der Distrie haette ich uebersichtlicher gestalten koennen. Sorry.

ich habe die FreeAdhocUDF umbenannt. Das UDF-Verzeichniss sieht nun so aus.

Code: Alles auswählen

07:57 root@server01:/opt/firebird # ll -lha UDF
insgesamt 236K
drwxr-xr-x  3 firebird firebird 4,0K 15. Dez 17:09 .
drwxr-xr-x 13 firebird firebird 4,0K 16. Dez 07:57 ..
drwxr-xr-x  2 firebird firebird 4,0K 21. Nov 16:38 .debug
-rwxr-xr-x  1 firebird firebird  17K 21. Nov 15:59 fbudf.so
-rw-r--r--  1 firebird firebird 7,0K 21. Nov 15:59 fbudf.sql
-rwxr--r--  1 firebird firebird 139K 10. Dez 12:18 FreeAdhocUDF.so
-rw-r--r--  1 firebird firebird  19K 21. Nov 15:59 ib_udf2.sql
-rwxr-xr-x  1 firebird firebird  11K 21. Nov 15:59 ib_udf.so
-rw-r--r--  1 firebird firebird  19K 21. Nov 15:59 ib_udf.sql
habe auch geprueft ob irgendwelche libs fehlen sieht aber gut aus.

Code: Alles auswählen

08:00 root@server01:/opt/firebird # ldd UDF/FreeAdhocUDF.so 
	linux-gate.so.1 =>  (0xb7f8e000)
	libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7f3d000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7de2000)
	libib_util.so => /usr/lib/libib_util.so (0xb7ddf000)
	libfbclient.so.2 => /usr/lib/libfbclient.so.2 (0xb7d17000)
	/lib/ld-linux.so.2 (0xb7f8f000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7c29000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7c1c000)
	libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7c03000)
	libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7bfe000)
	libncurses.so.5 => /lib/libncurses.so.5 (0xb7bcc000)
Aus der Samba-Freigabe hab ich diese eine dll-datei dann nach /usr/local/bin kopiert und ausfuehrbar gemacht.

Code: Alles auswählen

08:17 root@server01:/opt/firebird # ls /var/samba/averp/
AVERP.CNT  AVERPCONNECT.CFG  AvERPCube.dll  AVERP.elf  AVERP.EXE  AVERP.HLP  fbclient.dll  gds32.dll  JARLIBS  ML
08:18 root@server01:/opt/firebird # md5sum /var/samba/averp/gds32.dll /usr/local/bin/fbclient.dll 
90fbf786fa2bd1eeffebccb09ffcaa45  /var/samba/averp/gds32.dll
90fbf786fa2bd1eeffebccb09ffcaa45  /usr/local/bin/fbclient.dll
Die genau Firebird version ist Firebird-2.5.0.26074-0

Der Fehler ist noch der gleiche.

Ich habe nun im Forum etwas gestoebert und gelesen das man die DB unter Windows mit gbak unmwandeln muss und unter Linux dann wieder mit gbak zurueckwandeln soll. Ist das zwingend notwendig oder genuegt es die DB unter Windows und Linux zu stoppen, die DB-Datei von Windows nach Linux per scp zu kopieren und dann unter Linux die DB wieder zu starten?

Noch weitere Tipps?

Gruss
Michael
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Die gbak-Prozedur ist zwingend bei einem Wechsel des Serverbetriebssystems. Ist aber kein Problem ...

Code: Alles auswählen

gbak -b -l -k -user XXX -password YYY quelle.fdb ziel.fbk
auf dem Windowssystem, die fbk auf den Linuxrechner schleppen und danach

Code: Alles auswählen

gbak -r -k -l -user XXX -password YYY quelle.fbk ziel.fdb
auf dem Linuxrechner

Das sollte es dann gewesen sein. Auf dem Linuxrechner ist wahrscheinlich ein sudo für's gbak notwendig.

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
michael
Beiträge: 8
Registriert: Do Apr 29, 2010 3:43 pm

Beitrag von michael »

Hallo,

vielen herzlichen Dank Michael, es ist *fast* fehlerfrei durchgelaufen.

Code: Alles auswählen

firebird@server01:~$ whoami
firebird
firebird@server01:~$ bin/gbak -r -k -l -user sysdba -password *****  /tmp/ziel.fbk /opt/firebird_data/taverp05.fdb 
can't format message 12:255 -- message system code -4function F_KALENDERWOCHE is not defined
can't format message 12:255 -- message system code -4    module name or entrypoint could not be found
Irgendwie kommen mir die Meldungen seltsam vor. ich werde den Firebird nochmal neu aus den Sourcen bauen, und mich anschliessend melden wenn diese Fehlermeldungen wieder auftauchen, bzw. es dann Fehlerfrei durchlaufen sollte.

Gruss
Michael
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Wo hattest Du denn das Installationspaket für den FB2.5 her? Aus den Repositories deiner Distribution oder von der Firebird-Webseite? Ich habe bisher IMMER das tar-Ball von der Firebird-Website benutzt anstelle des Rep und hatte nie Probleme. Die Fehlermeldung besagt, daß es in der UDF-Bibliothek die entsprechende Funktion nicht gibt, was aber definitiv falsch ist. Die ist in ALLEN Versionen enthalten.

Ist das denn die einzige Fehlermeldung die da kommt? Und von welcher Datenbankversion reden wir denn?

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
michael
Beiträge: 8
Registriert: Do Apr 29, 2010 3:43 pm

Beitrag von michael »

Hallo,

sorry hat etwas gedauert mit meiner Antwort.
FB2.5 ist nicht im Repo vom Debian, deshalb habe ich es aus den Sourcen gebaut.
Ich hatte aber mit dem Build etwas Probleme (genauer den configure Paramtern)
Das gehoert aber nicht hier in /dieses/ Forum.

Nach dem ich den FB neu kompliert habe, bleibt zumindest die Meldung

Code: Alles auswählen

can't format message 12:255 -- message system code -4
weg. Diese Meldung kam aber nicht von Anfang an. Irgendwas muss im nachhinein passiert sein das auf einmal solche Meldungen aufgeschlagen sind. Die Function "F_KALENDERWOCHE" ist immer noch nicht definiert. Ich vermute fast das man diese mit isql erst erstellen muesste.

mit der UDF-Datein duerfte das m.E. /nicht/ zusammenhaengen. 'gbak' funktioniert ja nur auf File-basis (Firebird muss nicht gestartet sein damit ich die DB aus dem Backup restoren kann)

Code: Alles auswählen

root@server01:~ # su - firebird
firebird@server01:~$ bin/gbak -r -k -l -user sysdba -password riveto91 /tmp/ziel.fbk /opt/firebird_data/taverp05.fdb -REP
gbak: WARNING:function F_KALENDERWOCHE is not defined
gbak: WARNING:    module name or entrypoint could not be found
firebird@server01:~$ ls -lha UDF/FreeAdhocUDF.so 
-rwxr-x--- 1 firebird firebird 139K 17. Dez 19:34 UDF/FreeAdhocUDF.so
firebird@server01:~$ file !$
file UDF/FreeAdhocUDF.so
UDF/FreeAdhocUDF.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
firebird@server01:~$ ls -lah /opt/firebird_data/taverp05.fdb 
-rw-rw---- 1 firebird firebird 521M 23. Dez 08:53 /opt/firebird_data/taverp05.fdb
Gruss
Michael
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Bezüglich dem aktuellen Status von Firebird bei Verwendung von gbak liegst Du aber total falsch: natürlich muss der gestartet sein, denn gbak läuft über die ganz normale Transaktions-Engine des FB-Servers. Ohne gestarteten Firebird kommst Du mit gbak keinen Millimeter weit.

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
michael
Beiträge: 8
Registriert: Do Apr 29, 2010 3:43 pm

Beitrag von michael »

mag sein das ich falsch liege, aber ...

... ich uebergebe an gbak keinen Hostnamen (Server, Port)
... gbak gibt mir keine Fehlermeldung aus wenn der Server nicht gestartet ist ("could not connect database" oder irgendwas aehnliches )

von daher habe ich diese Aktionen bisher immer mit runtergefahrener DB ausgefuert.

----
Lesen von Doku (gbak -h) bzw. Firebird-Administrations-Handbuch, um meine Annahmen zu verifzieren.

----
Offensichtlich kann man auch von der laufenden DB einen Abzug machen (macht auch Sinn :-) ). Der direkte Dateizugriff ist aber wohl auch moeglich und kann ohne laufende DB stattfinden. (macht ebenfalls Sinn)

neue Erkenntnis, neuer Versuch
----

Code: Alles auswählen

firebird@server01:~$ gbak -b -k -l -v -user sysdba -password xxxxxxx "192.168.15.71:C:\Programme\AVERP\RP04_Demo.FDB" /tmp/old_DB.fbk > /tmp/old_DB.log
firebird@server01:~$ tail /tmp/old_DB.log 
gbak:writing constraint FK_BSMSVERSAND_BSPRA
gbak:writing referential constraints
gbak:writing check constraints
gbak:writing SQL roles
gbak:    writing SQL role: ADMINISTRATOR
gbak:    writing SQL role: XXXXXXXXXXXX
gbak:    writing SQL role: BDE
gbak:    writing SQL role: MITARBEITER
gbak:writing names mapping
gbak:closing file, committing, and finishing. 198713856 bytes written
firebird@server01:~$
ok Backup erzeugung lief Fehlerfrei.
Auszug aus der Backup-Log-Datei:

Code: Alles auswählen

[...]
gbak:    writing function F_INTTOSTR
gbak:    writing argument for function F_INTTOSTR
gbak:    writing argument for function F_INTTOSTR
gbak:    writing argument for function F_INTTOSTR
gbak:    writing function F_KALENDERWOCHE
gbak:    writing argument for function F_KALENDERWOCHE
gbak:    writing argument for function F_KALENDERWOCHE
gbak:    writing function F_KARFREITAG
gbak:    writing argument for function F_KARFREITAG
gbak:    writing argument for function F_KARFREITAG
[...]
nun der versuch das backup wieder zu restoren.

Code: Alles auswählen

firebird@server01:~$ ps -fu firebird
UID        PID  PPID  C STIME TTY          TIME CMD
firebird 26836     1  0 21:57 ?        00:00:00 /opt/firebird/bin/fbguard -pidfile /var/run/firebird/firebird.pid -daemon -forever
firebird 26839 26836  1 21:57 ?        00:00:00 /opt/firebird/bin/fb_smp_server
firebird 26847 10910  0 21:57 pts/6    00:00:00 su - firebird
firebird 26848 26847  0 21:57 pts/6    00:00:00 -su
firebird 26851 26848  0 21:58 pts/6    00:00:00 ps -fu firebird
firebird@server01:~$ netstat -plnt 2> /dev/null | grep 3050 
tcp        0      0 0.0.0.0:3050            0.0.0.0:*               LISTEN      26839/fb_smp_server
firebird@server01:~$ gbak -r -k -l -v -user sysdba -password yyyyyyyyy /tmp/old_DB.fbk localhost:taverp05 -REP > /tmp/new_DB.log
gbak: WARNING:function F_KALENDERWOCHE is not defined
gbak: WARNING:    module name or entrypoint could not be found
irebird@server01:~$ tail /tmp/new_DB.log
gbak:    activating and creating deferred index FK_BQSPVPODOKX_BSM
gbak:    activating and creating deferred index FK_BMANDKZ_BSM_QS
gbak:    activating and creating deferred index FK_BMANDKZ_BSM_QS_VERT
gbak:    activating and creating deferred index FK_BMAND_BMANDKZ
gbak:    activating and creating deferred index FK_BSMSVERSAND_BADR_EMPFAENGER
gbak:    activating and creating deferred index FK_BSMSVERSAND_BJOBDRUCK
gbak:    activating and creating deferred index FK_BSMSVERSAND_BSM_SENDER
gbak:    activating and creating deferred index FK_BSMSVERSAND_BSPRA
gbak:    committing metadata
gbak:finishing, closing, and going home
Das restore wird vollstaendig durchgefuehrt ABER mit einem 'warning'.
Hier der Auszug aus der Restore-Log-Datei betreffend des Warnings:

Code: Alles auswählen

gbak:restoring function F_INTTOSTR
gbak:    restoring argument for function F_INTTOSTR
gbak:    restoring argument for function F_INTTOSTR
gbak:    restoring argument for function F_INTTOSTR
gbak:restoring function F_KALENDERWOCHE
gbak:    restoring argument for function F_KALENDERWOCHE
gbak:    restoring argument for function F_KALENDERWOCHE
gbak:restoring function F_KARFREITAG
gbak:    restoring argument for function F_KARFREITAG
gbak:    restoring argument for function F_KARFREITAG
Gruss
Michael
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Dann bin ich jetzt auch mal "offiziell" ratlos. Aber nur nochmal folgender Hinweis: eine heruntergefahrene DATENBANK ist unter Firebird was anderes als ein angehaltener oder heruntergefahrener Server. Wenn man mit gfix -shut eine Datenbank herunterfährt, dann läuft trotzdem immer noch der Server. Auch Deine ps-Auszüge zeigen ja, daß der Firebird läuft.

Aber genau die Auszüge aus Deinen Befehlsabfolgen haben mir jetzt den Fehler gezeigt: Du mußt das Backup der Windowsdatenbank auch wirklich auf Windows machen! Will sagen: gbak direkt auf der Windowsmaschine ausführen.

Also: Anmelden am Rechner mit der IP 192.168.15.71. Dort müßte ja ebenfalls ein Firebird lauffähig installiert sein, sonst würde Dein Backup-Befehl nicht laufen. Auf dem Rechner gibt es dann bei einer Standardinstallation unter c:\programme\firebird\firebird_2_5\bin ebenfalls das Programm gbak. Und mit DEM mußt Du das Backup unter Windows lokal machen. Dabei ist es natürlich möglich, die fbk-Datei direkt in die Samba-Freigabe zu schreiben.

So wie Du derzeit den Backup-Befehl ausführst hast Du ein Linux-GBAK was versucht auf einem Windows-Firebird rumzumurksen. Eventull könnte daraus das Problem beim darauf folgenden Restore sein. Sicher bin ich mir nicht, aber das ist zumindest eine Idee ...

Zum Schluß mal noch ne ganz blöde Frage: kannst Du Dich denn nach dem Restore an der Linux-Datenbank ganz normal über Averp anmelden?

Viele Grüße
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
michael
Beiträge: 8
Registriert: Do Apr 29, 2010 3:43 pm

Beitrag von michael »

Danke fuer den Hinweis zum Unterschied DB / DB-Server.
Ich hatte bisher immer den kompletten DB-Server heruntergefahren also so das auch mit 'ps' auch keine Prozesse zu sehen waren und habe dann 'gbak' verwendet.
nur so als Anmerkung am Rande.

Die Anmeldung hat schon funktioniert aber es kamen dann die Fehlermeldungen die im initialen Post beschrieben hatte...

Meldung 1:

Code: Alles auswählen

ISC ERROR CODE:335544343
ISC ERROR MESSAGE:
invalid request BLR at offest 159
function F_LRTRIM is not defined
module name or etrypoint could not be found
Error while parsing procedure P_A_FELDER_MANDATFELD's BLR
Error while parsing procedu(...)
Meldung 2:

Code: Alles auswählen

ISC ERROR CODE:335544343
ISC ERROR MESSAGE:
invalid request BLR at offest 159
function F_LRTRIM is not defined
module name or etrypoint could not be found
Error while parsing procedure P_USER_EINTELLUNGEN's BLR
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Ich habe Dein letztes Posting nicht ganz verstanden ... insbesondere den zeitlichen Zusammenhang :) Aufgrund akuter Verwirrung habe ich es einfach mal wieder auf meinem eigenen Testrechner probiert. Auf dem Rechner läuft Firebird nur wenn er manuell gestartet wurde, damit niemand aus versehen sich mit der Testumgebung verbinden kann. Will sagen: kein aktiver Firebird und dann der Versuch gbak zu starten. Hier das Ergebnis:

Code: Alles auswählen

C:\Programme\Firebird\Firebird_2_5\bin>gbak -b -k -l -v -user SYSDBA -password xxxxxx c:\Datenbanken\averp.fdb c:\Datenbanken\averp.fbk
gbak: ERROR:unavailable database
gbak:Exiting before completion due to errors
Das ganze auf einem Windowsrechner. Was mich verwundert, ist daß Du Dir so sicher bist, daß Dein Firebird nicht läuft. Schau Dir mal das Ergebnis Deines ps Befehls an. Da findest Du die Prozesse fbguard und fb_smp_server. Die zwei zusammen sind der Firebird-Server, der läuft also :) Wichtiger Hinweis: je nachdem wie Du Deinen FB compiliert hast, reicht ein /etc/init.d/firebird stop nicht aus, um den Server anzuhalten. Das verhindert der Guardian. Erst ein /etc/init.d/firebird shutdown macht den Firebird zwangsweise dicht. Absolut nicht empfehlenswert in einem normalen Livesystem, weil der Befehl OHNE Zeitverzögerung und OHNE Rückfrage den Serverdaemon ausknippst.

Ich würde Dir empfehlen, einfach mal das tar-Ball von der Firebirdseite runterzuladen anstatt selbst den Code zu compilieren. Ich arbeite normalerweise mit Ubuntu als Server und hatte damit nie Probleme. Und soweit sind "echtes" Debian und der Ubuntu-Server nicht auseinander.

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Das klingt doch sehr danach, dass nicht die richtigen UDF-Dateien vorhanden sind. www.freeadhocudf.org.
Antworten