maximale Anzahl Datensätze bei DBF/NTX?

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von mini990 »

Hallo,
wo liegt die Beschränkung bei DBF/NTX
Habe hier bei einem Kunden eine Datei mit Memofeldern.
Aktuell 1.678.595 Datensätze
Belegter Platz
DBF: 372 MB (381.646 KB)
DBT: 2.0 GB (2.097.154 KB)

Denke ich stoße mit der DBT an eine Grenze.....

Gruß Stefan
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von Jan »

Hallo Stefan,

lt. Doku der 2.0 gibt es folgende Angaben bei der DBFDBE:
Größe dbf: max. 1 GB
Feldzahl: Not limited
Anzahl Sätze: (Offset for record locks - Header() - 1) / RecSize()
Größe Memo-Datei: Limited only by system resources

Bei der FOXDBE sieht das anders aus:
Größe dbf: max. 2 GB
Feldzahl: 2038 (bis 1.90 nur 255 Felder)
Anzahl Sätze: (2^31 - Header() - 1) / RecSize()
Größe Memo-Datei: Theoretical limit is 16 Terabyte or 2^31 blocks. Default block size of 64 bytes leads to a maximum memo file size of 128GB

Wobei ich im ADS inzwsichen eine DBF als FOXCDX habe, die größer als 2 GB ist. Nach diversen Aussagen kann die da bis zu 4 GB groß sein, oder bis 16 TB. Aber der ADS verwaltet die Dateien ja auch anders.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von brandelh »

Auch eine DBF kann etwas über 2 GB groß werden, man muss dann nur den LOCK-Offset erhöhen:
Hilfe zu 1.90 SL1 hat geschrieben: DBFDBE_LOCKOFFSET

Mit dieser Konstante läßt sich der Offset für Satzsperren abfragen oder ändern. Der Offset bestimmt die maximale Größe der DBF-Tabelle. Der voreingestellte Wert für den Offset für Satzsperren ist 1.000.000.000 oder ca. 1GB. Dies entspricht der maximalen Größe einer Clipper-kompatiblen DBF-Tabelle.
Mit Hilfe der Konstante DBFDBE_LOCKOFFSET kann die maximale Größe einer DBF-Dateien vergrößert werden. Um den Maximalwert von derzeit ca. 2,4GB einzustellen, muß ein Wert von 0x80000000 für DBFDBE_LOCKOFFSET gewählt werden. Wird die Einstellung DBFDBE_LOCKOFFSET auf einen Wert größer als den von Clipper unterstützten Maximalwert geändert, können die DBF-Dateien nicht mehr im konkurrierenden Betrieb mit Clipper verwendet werden. Da sich die verwendeten Offset für Satzsperren unterscheiden, ist ein wechselseitiger Ausschluß in diesem Fall nicht mehr gewährleistet.
Die Größe der DBT hängt von der Version ab und vom Dateisystem !
Früher war die auf 2 GB begrenzt, angeblich wurde das seit 1.90.355 aufgehoben.
DBFDBE (DATA-Komponente)
...
Spezifikation für DBF-Dateien
...
Element Spezifikation
...
Größe einer Memo-Datei: Limitiert auf Systemresourcen
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von Manfred »

also bei der DBT kann ich aus Erfahrung sagen, über 2 GB knallt es. 1.90 SL1
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von brandelh »

auf welchem Dateisystem denn ?

Ich persönlich meide DBTs seit da mal unter Clipper was schief ging, aber mit NTFS sollten größere kein Problem sein, solange die 10 Stellen für Zeiger ausreichen ;-)

Ich könnte es ja mal probieren ... ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von brandelh »

Ich muss Manfred zustimmen, bei meinem Versuch mit der aktuellen 2.00 und der DBFDBE gibt es einen Laufzeitfehler wenn die 2 GB Grenze erreicht wird (trotz exclusivem Zugriff)
Gruß
Hubert
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von mini990 »

Mein Problem ist folgendes...
die DBT hat exakt 2.0GB, also Maximum denke ich.
ich versuche nun die Datei in eine neue zu kopieren ---> irgendwann Lesefehler
Die Sätze einzeln in eine neue Datenbank kopieren ---> bricht irgendwann ab Lesefehler

Gibt es eine Möglichkeit die Datei noch irgendwie zu lesen?

Gruß Stefan
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von HaPe »

Hallo Stefan !
Mein Problem ist folgendes...
die DBT hat exakt 2.0GB, also Maximum denke ich.
- Mehrfache Sicherung anlegen
- hat deine DBF 1.000.000 Datensätze, dann in einer der Dateien mit DELETE NEXT 500.000 die erste Häfte löschen und dann mit PACK packen, gegebenenfalls auch mit PACK MEMO probieren.
- in der zweiten Datei dann mit GOTO 500.000 und DELETE REST die zweiten Hälfte löschen und dann mit PACK packen, gegebenenfalls auch mit PACK MEMO probieren.

Jetzt hast du zwei Tabellen mit deinen Daten ...
Zuletzt geändert von HaPe am Mi, 11. Jan 2017 16:09, insgesamt 1-mal geändert.
--
Hans-Peter
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von nightcrawler »

mini990 hat geschrieben:Gibt es eine Möglichkeit die Datei noch irgendwie zu lesen?
Versuchs mal im Advantage Data Architect. Dann kannst Du auch Teile per SQL in eine andere Tabelle verschieben.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von mini990 »

PACK MEMO ?
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von HaPe »

Hallo Stefan !
PACK MEMO ?
Ich bin erst mit Xbase 2.0 zur Gemeinde hinzugestoßen und hatte kurz in der Hilfe geschaut (ist dort aufgelistet)

In VFP kann man damit explizit die Memo-Datei packen (vermutlich) durch löschen nicht mehr vorhanderer Einträge im MEMO-Feld.
Wie es aussieht unterstützt das die Xbase-Engine (gar) nicht weil diese Option ignoriert oder automatisch mit einem PACK der Tabelle ausgeführt wird.
--
Hans-Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von AUGE_OHR »

mini990 hat geschrieben:Mein Problem ist folgendes...
die DBT hat exakt 2.0GB, also Maximum denke ich.
ich versuche nun die Datei in eine neue zu kopieren ---> irgendwann Lesefehler
Die Sätze einzeln in eine neue Datenbank kopieren ---> bricht irgendwann ab Lesefehler

Gibt es eine Möglichkeit die Datei noch irgendwie zu lesen?
ich würde mal behaupten das deine DBT "Kaputt" ist ...

Frage : was/wie viel ist den in der neue DBF ?

versuche es mal so

Code: Alles auswählen

// Dummy Code um eine DBT zu retten
LOCAL nRec := 1   
LOCAL aLeer := {}
   ...
   SELECT 1
   USE AAA EXCLUSIVE   // ohne Index
   SELECT 2
   USE BBB1 EXCLUSIVE  // leer
   SELECT 1
   DO WHILE !EOF()
      aLeer()      // leeres Array anlegen 
      BEGIN SEQUENCE 
         GOTO (nRec) 
         Scatter() // in ein Array übertragen
      RECOVER
      END SEQUENCE         

      SELECT 2
      APPEND BLANK
      Gather()    // aus dem Array

      nRec++
      IF nRec > 500000 
          // splitten und neue BBBx verwenden
          EXIT
      ENDIF
      SELECT 1
   ENDDO
  
   SELECT 2
   CLOSE BBB1 
   USE BBB2 EXCLUSIVE  // leer
   SELECT 1
   DO WHILE !EOF()
      aLeer()      // leeres Array anlegen 
      BEGIN SEQUENCE 
         GOTO (nRec) 
         Scatter() // in ein Array übertragen
      RECOVER
      END SEQUENCE         

      SELECT 2
      APPEND BLANK
      Gather()    // aus dem Array

      nRec++
      SELECT 1
   ENDDO
das GOTO(nRec) hat gegenüber dem SKIP ggf. ein andere Fehlermeldung die du abfangen kannst
gruss by OHR
Jimmy
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitrag von mini990 »

@Jimmy: Danke. hat so funktioniert!

Gruß Stefan
Antworten