Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Größe einen Interbase DAtei (https://www.delphipraxis.net/168107-groesse-einen-interbase-datei.html)

Dumpfbacke 5. Mai 2012 09:10

Datenbank: Interbase • Version: 6 • Zugriff über: IBX

Größe einen Interbase DAtei
 
Hallo Delphianer,
gibt es eine Größe die man dür die Datenbank bei Interbase 6 nicht überschreiten darf ? Ich bin zur Zeit bei 4.194.304 kb. Meine Software trägt hier über das Wochenende immer die neuen Daten ein bzw. updatet die alten Daten. Leider habe ich nun das Problem das ich eine Fehlermeldung erhalte da das Programm nicht auf die GDB Datei zugreifen kann. Programm und Interbase laufen beide auf einen 2003 Server.
Ich habe ein Backup und Restore gemach und es geht kurzfristig und dann kommt der Fehler erneut.

Kann mir jemand hier helfen Danke Tanja

haentschman 5. Mai 2012 09:25

AW: Größe einen Interbase DAtei
 
Guten Morgen...
das http://www.ibphoenix.com/resources/d...general/doc_69 habe ich auf die Schnelle gefunden.
Wenn es denn die Ursache ist, wäre ein Umstieg auf FB2.5 angebracht. Dies sollte ohne Probleme machbar sein.

:hi:

himitsu 5. Mai 2012 09:34

AW: Größe einen Interbase DAtei
 
Zitat:

All Firebird/IB versions prior to FB v1.0 (including IB v6.0) used both 32-bit API/OS calls and 32-bit (integer) file pointer structures. The engine's capability was thus designed to handle files with a maximum file size of 4Gb. In the Unix code the file pointer structures were defined as signed integers, thus limiting Unix and Linux implementations to file sizes of 2Gb.
Klingt schonmal sehr danach.

Und um was für ein Dateisystem handelt es sich?
Einige Dateisysteme (z.B. FAT32) machen auch bei 4 GB Schluß.

Zitat:

und es geht kurzfristig und dann kommt der Fehler erneut.
4.194.304 sind ja ganz genau 4 GB
Und inklusive 'ner Defragmentierung der Daten (innerhalb de Datei), könnte es ein bissl dauern, bis es knallt, da sich mittendrin eventuell noch etwas freier Platz versteckt.

mkinzler 5. Mai 2012 10:21

AW: Größe einen Interbase DAtei
 
Eine Interbase/Firebird-Datenbank kann aber auch aus mehreren Dateien bestehen. Es sind also auch bei älteren Versionen größere Datenbanken möglich.

Dumpfbacke 5. Mai 2012 10:29

AW: Größe einen Interbase DAtei
 
So etwas habe ich schon vermutet. Ich wollte sein seit Jahren von Iterbase weg, jeodch habe ich es immer aufgeschoben weil dort ca. 40 Programme daraufg zugreifen und ich dann bei allen die Joins eventuell anpassen muss. Nun ja als erstes werde ich mal einige alten Daten auslagern um Zeit zu gewinnen.
Der Firebird 2.5 läuft schon auf dem Sever auf einen anderen Port um einige Progamme zu bediehnen.
Kann ich hier einfach ein Backup bei Interbase 6 machen und ein Restore in eine Datenbank von FB 2.5 wennich dann mal die Joins geändert habe ?

Danke Tanja

mkinzler 5. Mai 2012 10:40

AW: Größe einen Interbase DAtei
 
Firebird ab Version 2 ist nicht mehr so tolerant gegenüber nicht gant korrekten Abfragen. Ich würde zuerst versuchen, die Datnbank in mehrere Dateien aufzuteilen, um so die Kapazität zu erweitern.
http://www.ibexpert.net/ibe_de/index...erdateimanager

Neumann 5. Mai 2012 11:08

AW: Größe einen Interbase DAtei
 
Alte Daten auslagern hilft nur, wenn man anschließend Backup und Restore macht. Löschen von Werten allein macht die Datenbankdatei nicht kleiner.

Ob es dann geht mit Firebird einen Restore zu machen, kann man eigentlich nur versuchen. Würde zuerst erstmal Gfix anwenden dann Backup; Restore ev. mit verschiedenen Optionen probieren wenn Gbak Fehler melden sollte.

haentschman 5. Mai 2012 11:15

AW: Größe einen Interbase DAtei
 
Zitat:

Kann ich hier einfach ein Backup bei Interbase 6 machen und ein Restore in eine Datenbank von FB 2.5 wennich dann mal die Joins geändert habe ?
einen Versuch ohne Änderungen wäre es wert. Natürlich nicht im Produktivbetrieb :zwinker: Wenn die Joins in IB6 gingen sollte das auch in FB2.5 gehen. Wo denkst du denn daß es nicht funktioniert ? Zeige mal ein einfaches Beispiel.

Dumpfbacke 5. Mai 2012 11:28

AW: Größe einen Interbase DAtei
 
Zitat:

einen Versuch ohne Änderungen wäre es wert. Natürlich nicht im Produktivbetrieb :zwinker: Wenn die Joins in IB6 gingen sollte das auch in FB2.5 gehen. Wo denkst du denn daß es nicht funktioniert ? Zeige mal ein einfaches Beispiel.
Ich habe hierzu einmal Infos erhalten

Dieses sollte bei beiden Versionen gehen
Delphi-Quellcode:
Select A.Feld1,B.Feld2
From Tabelle1 A
Left Outer Join Tabelle2 B on A.Wert1 = B.Wert1
Wenn man ein wenig "schlampig" losgelegt hat es bei IB 6 funktioniert nut FB 2.5 nicht. Wenn mal für Tabelle2 ein B eingetrage hat so ist dieses unbedingt zu benutzen.

Diese hier wird bei FB nicht mehr funktionieren. (Beim Select furde nur das Feld eingetragen bzw wenn man dort Tabelle2.Fled2 benutzt geht es auch nicht)

Delphi-Quellcode:
Select A.Feld1,Feld2
From Tabelle1 A
Left Outer Join Tabelle2 B on A.Wert1 = B.Wert1
Ich glaube dieses war einer der Unterschiede welche beachtet werden müssen. :idea:

Ich kann es eventuell auch mal am aktiven System versuchen. Dann wird am Montag eventuell freude aufkommen und das Telefon nicht mehr still stehen ;-))

Tanja

haentschman 5. Mai 2012 11:51

AW: Größe einen Interbase DAtei
 
Zitat:

Wenn man ein wenig "schlampig" losgelegt hat
... wieviele "Problemstellen" erwartest du denn ?

jsheyer 5. Mai 2012 13:40

AW: Größe einen Interbase DAtei
 
Hallo,

Ich würde auch erst einmal die Datenbank um einer weitere Datei erweitern! Das geht im laufenden Betrieb.
Ich selber habe damals auch Datenbanken mit über 10 GB benutzt.
Mittlerweile benutze ich auch Firebird 2.03 und dort ist die größte DB rund 50 GB groß.

Gruß
Jörg

hoika 6. Mai 2012 08:06

AW: Größe einen Interbase DAtei
 
Hallo,

schlampig programmiert.
Wie weiter oben schon gesagt wurde.

Tab1: TabId1,Name
Tab2: TabId2,Tab1Id,Name

Select Name From Tab1
Join Tab2 On Tab2.Tab1Id=Tab1.Tab1Id

Unter Interbase klappt das ohne Probleme.
FB meldet einen Fehler: unbigius (so ähnlich ;) ) join

Das Name welcher Tabelle ?


2.er Punkt ist das Verwenden von Table-Aliases.
Unter IB konnte man schreiben

Select Tab1.Name, T1.Tab1Id From Tab1 T1

Unter FB muss bei Verwendung eines Table-Alias dieser immer verwendet werden

Select T1.Name, T1.Tab1Id From Tab1 T


Lösung ist schon vorgeschlagen:
1. IB-DB auf mehrere Tabellen erweitern
2. Backup/Restore auf FB
Achtung:
zurück geht es nach dem Restore nicht mehr !
ein Backup mit FB2 lasst sich unter IB NICHT mehr zurückspielen
3. Alle Queries testen unter FB
4. Umstellen
5. Beten


Heiko

Dumpfbacke 6. Mai 2012 14:18

AW: Größe einen Interbase DAtei
 
Zitat:

Zitat von haentschman (Beitrag 1164994)
Zitat:

Wenn man ein wenig "schlampig" losgelegt hat
... wieviele "Problemstellen" erwartest du denn ?

An den Programmen für diese Datenbank arbeite ich schon 11 Jahre und dort sind einige Selects vorhanden. Source aller Programme meheren 100 MB. Es rächt sich immer wenn mal schampig war. :oops: Leider :pale:

Dumpfbacke 6. Mai 2012 14:27

AW: Größe einen Interbase DAtei
 
Zitat:

Zitat von mkinzler (Beitrag 1164986)
Firebird ab Version 2 ist nicht mehr so tolerant gegenüber nicht gant korrekten Abfragen. Ich würde zuerst versuchen, die Datnbank in mehrere Dateien aufzuteilen, um so die Kapazität zu erweitern.
http://www.ibexpert.net/ibe_de/index...erdateimanager

Kannst du mir sagen welche Risiken ich habe wenn ich einen zweite Datei anlege ? Muss ich beim Backup / Restore etwas anders machen ?
Kann ich es Rückgängig machen ?

Tanja

haentschman 6. Mai 2012 17:04

AW: Größe einen Interbase DAtei
 
Zitat:

welche Risiken ich habe wenn ich einen zweite Datei anlege ? Muss ich beim Backup / Restore etwas anders machen
...durch das Backup bleibt ja die Originaldatenbank unangetastet. Wenn du dann in eine Neue ein Restore machst kannst du mit der Neuen testen ohne daß die Produktivdatenbank beeinträchtigt ist. Blöd ist natürlich der Zeitdruck den du hast.

tsteinmaurer 7. Mai 2012 09:33

AW: Größe einen Interbase DAtei
 
Was du bei Multi-File-DBs beachten muss ist, dass die dann auf der Platte nicht mehr einfach verschiebbar sind, weil der physische Pfad zum nächsten File im DB-File abgelegt ist. Es gibt zwar ein Tool, mit dem man das ändern kann, aber darauf würde ich mich nicht verlassen. Ich glaube, es ist nun Zeit von der 12 Jahre alten InterBase 6 Version auf etwas Aktuelleres umzusteigen. :-D

mkinzler 7. Mai 2012 14:06

AW: Größe einen Interbase DAtei
 
Im 2. Schritt auf jeden Fall. Als 1. Schritt erscheint mir das aber risikoärmer.

hoika 7. Mai 2012 14:47

AW: Größe einen Interbase DAtei
 
Hallo,

> Kannst du mir sagen welche Risiken ich habe wenn ich einen zweite Datei anlege ? <
Die legst du nicht selber an, dass macht IB für dich.
Risiko: Ausser dem festen Dateipfad nichts.

> Muss ich beim Backup / Restore etwas anders machen ? >
nichts, ist für gbak völlig transparent

> Kann ich es Rückgängig machen ? <
nein, es sei denn beim Restore ist die Datei kleiner als deine festgelegte Grenze


Heiko

Dumpfbacke 27. Dez 2012 16:13

AW: Größe einen Interbase Datei
 
Hallo Leute,
bis jetzt ging alles gut bei mir. Die Database besteht nun aus zwei Files. Nun wollte ich ein Backup und Restore machen damit alles schneller geht. Das Backup geht ja ohne Probleme das habe ich ja schon öfters gemacht. Bei dem Restore habe ich nun jedoch Probleme. Das zweite File wurde einfach gelöscht. Nun hat das erste File die maximale Größe erreicht und das zweite File wird nicht automatisch angelegt. Die IBConsolte stehe nun seit ca. 1 Stunde bei creating indexes und geht nicht weitere. Kann ich dem Teil irgendwie mitteilen das es das zweite File nicht löschen soll oder zumindest das es automatisch angelegt wird ?

Danke Tanja

hoika 27. Dez 2012 20:02

AW: Größe einen Interbase DAtei
 
Hallo,

wie hast du das denn restored?
Du musst alle Source Files angeben.
Das Anlegen weitere Dateien erfolgt automatisch.

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz