Difference between revisions of "De:Defekten Stammbaum wiederherstellen"

From Gramps
Jump to: navigation, search
(33 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{languages/de|Recover corrupted family tree}}
+
{{languages/de|Recover corrupted family tree|Defekten Stammbaum wiederherstellen}}
Explanation of '''family tree''' and '''GRDB corruption''', how to recover from it, and how to avoid it in the future.
+
{{man warn|Obsolete Information|This troubleshooting documentation is oriented around a superseded dependency in Gramps. Reliance on the BSDDB database engine was removed in the 5.1 release.}}
 +
Erklärung von '''Stammbaum''' und '''[[Recover_corrupted_family_tree#Version_2.2.x:_GRDB_corruption |GRDB]] Beschädigung''', wie man sie behebt und wie man sie in Zukunft vermeidet.
  
== Family Tree corruption ==  
+
== Stammbaum Beschädigung ==  
=== What causes this corruption? ===
+
=== Was verursacht diese Beschädigungen? ===
Not really known. Database corruption with family trees is however far less likely than with the previous format of storing your family tree Gramps version 2.2.x uses
+
Das ist nicht wirklich bekannt.  
  
=== How do you know about it? ===
+
Wie auch immer, [[Template:Releases/2.2.10|Gramps Version 2.2.x]] macht die Beschädigung von Datenbanken mit Stammbäumen erheblich seltener als mit dem früheren Speicherformat.
 +
* Siehe {{bug|8875}} Database corruption bugs
  
Gramps might give you on startup that recovery is needed via a dialog box:
+
=== Wie erfährst du davon? ===
  
GRAMPS has detected a problem in the underlying Berkeley database.
+
Es kann sein das Gramps dir beim Starten über eine Dialogbox mitteilt, dass eine Datenwiederherstellung erforderlich ist:
This can be repaired by from the Family Tree Manager.
 
Select the database and click on the Repair button
 
  
But it might happen no Repair button is present, or you obtain the error (visible in terminal)
+
Gramps hat ein Problem in der darunter liegenden Berkeley Datenbank
 +
festgestellt. Dies kann mit dem Stammbaumverwaltung repariert werden. Die
 +
Datenbank wählen und auf die Reparatur-Schaltfläche klicken
  
(-30975, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: Invalid argument').
+
Aber es kann passieren, das keine {{man button|Reparieren}} Schaltfläche verfügbar ist oder du erhältst den Fehler (sichtbar in der Konsole)
  
=== What to do now? ===
+
(-30975, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: Invalid argument').
  
It is advisable not to click the repair button right away. It should work, but GRAMPS might believe an error is present while this is in reality not true. Repairing your tree then will lead to loss of the last typed changes.
+
=== Was ist jetzt zu tun? ===
 +
[[File:FamilyTreesManager-Dialog-ShowingRedErrorStatusIcon-Sample-50.png|450px|right|thumb|Stammbäume (Manager) - Dialogfeld - Zeigt das rote Fehlerstatussymbol für den Stammbaum "Beispiel" an]]
  
Instead, take a backup of the family tree that is given problems. In a terminal do:
+
'''Es ist ratsam, nicht sofort auf die [[Database_Formats#Repairing_a_Corrupt_DatabaseReparaturschaltfläche]] zu klicken.''' Es sollte funktionieren, aber Gramps könnte denken, das ein Fehler vorhanden ist obwohl dies nicht der Fall ist. Das reparieren deiner Bäume würde in diesem Fall zum Verlust der zuletzt eingegebenen Änderungen führen.
 +
 
 +
Stattdessen erstelle eine Sicherung des Stammbaums, der Probleme bereitet. Gib im Terminal ein:
  
 
  gramps -l  
 
  gramps -l  
  
This will give you a list with all family trees and the directory where they are stored, normally somewhere in the directory  ~/.gramps/grampsdb. Copy the directory of the tree with problems so as to have a backup:
+
Dies gibt dir eine Liste mit allen Stammbäumen und den Verzeichnissen, in denen sie gespeichert sind, normalerweise irgendwo unter dem Verzeichnis ~/.gramps/grampsdb. Schaue in dein [[De:Gramps 5.1 Wiki Handbuch - Anwenderverzeichnis|Anwenderverzeichnis]]. Kopiere das Verzeichnis des Stammbaums mit den Problemen, damit du eine Sicherung besitzt:
 
   
 
   
  cp -a <target directory> <backup directory>
+
  cp -a <Zielverzeichnis> <Sicherungsverzeichnis>
 +
 
 +
Wenn die Reparaturschaltfläche für den Gramps Stammbaum verfügbar war, klicke sie. Alles sollte wieder funktionieren. Wenn du merkst, das du Informationen verloren hast oder die Reparaturschaltfläche funktioniert nicht, tue folgendes.
 +
Wenn die Wiederherstellung funktioniert hat, du mit dem Ergebnis aber nicht zufrieden bist, sichere diese Daten und packe deine Sicherung, die du oben erstellt hast wieder zurück an ihren Ursprungsort. Nun hast du wieder den mangelhaften Stammbaum um damit zu arbeiten. Als nächstes besorge dir die bsddb Wiederherstellungswerkzeuge, schau auf deiner Distributionspaketsuchseite. Das Programm heißt db4.8_recover, wobei die Versionsnummer 4.8 eine ältere oder neuere sein kann. Überprüfe deine BSDDB Version im {{man menu|Hilfe -> Über}} Dialog oder mit dem <code> gramps -v</code> Kommando.
 +
 
 +
Starte diese Werkzeug wie folgt:
 +
 
 +
cd /home/<Benutzer>/.gramps/grampsdb/<Zielverzeichnis>
 +
db4.8_recover -c
 +
 
 +
So müsste es gehen, und Gramps ermöglichen, den Stammbaum zu laden. Wenn nicht, öffne ein Ticket im Gramps Fehlerverfolgungswerkzeug.
 +
 
 +
====Windows OS====
 +
 
 +
# lade die ORACLE Werkzeuge unter: http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html
 +
# ...TO_COMPLETE...
 +
 
 +
=== Ich habe gesicherte gbkp Dateien ===
 +
Wenn du eine Sicherung besitzt, kannst du versuchen die gesicherten <code>.gbkp</code> Dateien wiederherzustellen. Führe folgende Schritte durch:
 +
Die Prozedur um deine Daten aus <code>.gbkp</code> Dateien wiederherzustellen ist:
 +
# Make note of the "Family Tree" name you are trying to recover, from the "Family Tree Manager".
 +
# Close the Gramps program.
 +
# Locate your [[Gramps_5.1_Wiki_Manual_-_User_Directory|User Directory]] dependent on your operating systems.
 +
# Locate the <code>grampsdb</code> folder under your User Directory (''Also known as folders on some operating systems.[http://superuser.com/a/247396]'')
 +
# Under the <code>grampsdb</code> folder are stored all your "Family Tree" databases each in separate directories (eg:If you have 10 Family Trees you will have 10 folders each with an automatically created system generated folder name), locate the database you are trying to recover by opening <code>name.txt</code> file in a text editor and seeing if the name matches the Family Tree you are trying to recover. If it does match, make note of the directory name.
 +
# {{man menu|If that folder contains <code>.gbkp</code> files, you can continue your attempt to recover the Family Tree.}}
 +
# Copy all the <code>.gbkp</code> files to a new directory that you must create in your database <code>grampsdb</code> directory, eg. give the directory a unique name ''<code>a1111</code>''
 +
# From the original Family tree directory copy the <code>name.txt</code> file to the new directory you created.
 +
# In the new directory open <code>name.txt</code> in a text editor and change the content to a unique name. eg: '''Family Tree 1''' to '''Family Tree 1 recovery attempt'''
 +
# In the new directory create a file with name '''<code>need_recover</code>''' . {{man menu|Mind the underscore and the lack of an extension}}. The content of that file is unimportant. (Are you using Microsoft Windows and having difficulty creating this file then see {{bug|8665#c44245}} for a possible work around)
 +
# Start the Gramps program.
 +
# Select the family tree with the name you adjusted in step 9 eg. '''Family Tree 1 recovery attempt''' {{man label|(Do not double click on the family tree name)}}. There should be a red stop sign next to that family tree name.
 +
# Select the {{man button|Repair}} button and the {{man label|Repair Family Tree?}} dialog will show, at this point select the {{man button|Proceed, I have taken a backup}} button or you can select {{man button|Stop}} to exit the repair attempt.
 +
# The Gramps program will attempt to repair and recover the family tree and if successful the red stop sign should disappear.
 +
# From the Family Tree manager select the repaired family tree and you should be able to {{man button|Load Database}} the family tree.
 +
# From the menu select {{man menu|Family Trees > Make Backup..}} and create a backup as insurance
 +
 
 +
=== Mehr Sicherheit einführen ===
 +
Deine Genealogiedaten enthalten jede menge Arbeit und Arbeitsstunden. So '''erarbeite ein Sicherungsschema'''
 +
 
 +
Wenn du regelmäßig mit Gramps arbeitest: sichere das Verzeichnis, das die Stammbaumdatenbank enthält. Dies sind jedoch sehr große Dateien.
  
If the recover button was present on the GRAMPS family tree, click it. All should work again. If you notice you lost information, or the repair button does not work, then do the following.
+
Wenn du weißt, das du Gramps nur ab und zu verwendest oder wenig Platz für regelmäßige Sicherungen deiner Bäume hast, dann erstelle [[De:Wie_erstelle_ich_eine_Sicherung|Sicherungen]] im XML Format (das .gramps Format). Vergiss nicht die Vertraulichkeitsfilter zu deaktivieren...
If recovery worked, but you do not like the result, backup this data and place your backup taken above back in its original position. You now have again the bad family tree to work on. Next, obtain the bsddb recovery tools, see your distributions package search page. The program is called db4.6_recover, where 4.6 might be an older or newer version number.  
+
Das XML Format lässt sich auch nach vielen Jahren ohne Probleme auf einem anderen Computer mit einem anderen Betriebssystem öffnen. Dies ist wahrscheinlich für Datenbanken, in denen der Stammbaum gespeichert ist, '''nicht''' der Fall. XML ist von Maschinen und Menschen lesbar. Es ist komplett unabhängig. Es ist auch klein. Das folgende ist eine bewährte Verfahrensweise für Sicherungen:
  
Run this tool as follows:
+
  1. Export nach XML von Zeit zu Zeit speziell nach großen Änderungen.
 +
  2. Export nach XML vor großen Änderungen wie der Import neuer Daten in eine bestehende Datenbank aus z.B.
 +
      GEDCOM, Zusammenfassung von Datensätzen, ausführen von Werkzeugen die die Daten massiv ändern können, usw.
 +
  3. Export nach XML vor der Aktualisierung von Gramps auf eine neuere Version. Offensichtlich exportiere nach
 +
      XML mit der alten Version bevor du die neue Version installierst!
 +
  4. Export nach XML vor der Aktualisierung des Betriebssystems.
  
cd /home/<user>/.gramps/grampsdb/<target directory>
+
Verwende XML Format außerdem für jede Datenumstellung. Wechsel auf einen anderen Rechner, senden der Daten zu Oma, kopieren der Daten zu einem anderen Anwender auf dem selben Rechner -- all diese Fälle sollten XML verwenden da dort keine binär spezifischen Daten enthalten sind.  
db4.6_recover -c
 
  
That should do the trick, and allow GRAMPS to load the family tree. If not, then start a ticket on the gramps bug tracker.
+
Beachte, das XML deine Mediendateien nicht enthält. Die gpkg Ausgabe enthält XML und deine Mediendateien mit dem Nachteil, das sie sehr groß ist. Wenn du bereits ein Sicherungsschema für deine Mediendateien besitzt, besteht keine Notwendigkeit gpkg Dateien ebenfalls zu sichern.
  
=== I have backup gpkg files ===
+
=== ACI nicht ACID, Upgrade, downgrade ===
If you have a backup, you can try to recover the backup gpkg files. Do the following steps:
+
Gramps schützt deine Daten durch Verwendung einer ACI Datenbank. Dies bedeutet, das bei einem Fehler die letzte Übergabe verloren gehen kann, aber nicht mehr. Du solltest trotzdem vor einer Aktualisierung sicherstellen, das Gramps deinen Stammbaum korrekt geschlossen hat.
The procedure to recover your data from gbkp files is:
 
# Copy the gbkp files to a new directory in your database directory, eg directory ''a1111''
 
# Copy name.txt, open it in the new directory and set the content to a unique name.
 
# Create a file with name '''need_recover'''. Mind the underscore and the lack of an extension. The content of that file is unimportant.
 
# Start Gramps, click on the family tree with the name you adjusted in step 2. There should be a red stop sign with that filename. Click on the Recover button. The red stop sign should disappear and you should be able to load that family tree.  
 
  
=== Implement more security ===
+
Es sollte kein Fehler beim Öffnen eines Stammbaums mit einer neueren Version auftreten. Siehe die langen Recherchen in {{bug|3975}}, welche zeigen, das Version 4.7.25 von Bsddb einen Fehler enthält, der eine seltsame Fehlermeldung erzeugen kann.
Your genealogy data contains a lot of work and man hours. So '''work out a backup scheme'''
 
  
If you work on GRAMPS regularly: backup the directory holding the family tree databases. These are very large files however.
+
Der Versuch einen Stammbaum nach einem downgrade zu öffnen, wird nicht unterstützt. Du erhältst einen Fehler, das die Datenbank mit einer neueren Version erstellt wurde.
  
If you know you work on GRAMPS sporadically only, or have no space to backup your trees regularly, then do backup in XML format (the .gramps format). Do not forget to disable privacy filters...
+
=== Oracle Berkeley DB Command Line Utilities ===
The XML format will open up just fine over 5 years on another computer with another OS. This will probably '''not''' be the case for the databases a family tree is stored in. XML is machine- and human-readable. It is completely self-sufficient. It is also small. The following are good practices of backups:
+
Use "<code>db_recover -cv</code>" for more verbose output.
  
  1. Export to XML from time to time, especially after large edits.
+
dbdump dumps database in text format and dbload use that:
  2. Export to XML before making big changes, such as importing new data into an existing database from e.g. GEDCOM, merging records, running tools that may heavily modify the data, etc.
 
  3. Export to XML before upgrading GRAMPS to a newer version. Apparently, export to XML with old version before you install the new one!
 
  4. Export to XML before upgrading your OS.
 
  
Also, use XML format for any data migration. Moving to another machine, sending data to grandma, copying to another user on the same machine -- all of these cases should use XML, as there is no binary specific data.  
+
<code>db_dump database.db > dump.txt</code>
  
Note that XML does not contain your media files. The gpkg output format contains XML and your media files, with the disadvantage of this being very large. If you already have a backup scheme for your media files, there is no need to also backup gpkg files.
+
<code>db_load database.db < dump.txt</code>
  
=== ACI not ACID, upgrade, downgrade ===
+
Deine Protokollsequenznummer ist nicht synchron, daher musst du sie zurücksetzen:
Gramps protects your data using an ACI database. This means the last commit can be lost on an error, but not more than that. You should before an upgrade make sure Gramps closed your family tree correctly however.
 
  
There should be no error in opening a family tree with a newer version. See the long research in {{bug|3975}}, which does indicate version 4.7.25 of Bsddb contains a bug that can give a strange error message.
+
<code>db_load -r lsn database.db < dump.txt</code>
  
Trying to open a family tree after a downgrade is not supported. You will obtain an error that the database is created with a newer version.
+
Siehe [https://gramps-project.org/bugs/view.php?id=9559#c48620][https://docs.oracle.com/cd/E17076_02/html/api_reference/C/utilities.html]
  
== Version 2.2.x: GRDB corruption ==
+
== Version 2.2.x: GRDB Beschädigung ==
===What causes this corruption?===
+
{{man note|Dieser Abschnitt bezieht sich auf Gramps Version 2.2.x.}}
The leading cause of grdb corruption is moving the grdb file from its original location. Whether you move the file to another directory, rename it, copy into another file, transfer to another machine, or another user account -- all of those will "corrupt" the file.
 
  
What happens is that the grdb file needs its database environment -- a directory with log files, lock files, temp files, etc. The 2.2.x gramps releases uses grdb files and stores the environment for each file, under a tree in a <code>~/.gramps/env</code> directory. If your grdb file is <code>/home/user/genealogy/MyData.grdb</code> then its environment is in the <code>/home/user/.gramps/env/home/user/genealogy/MyData.grdb</code> directory.
+
=== Was verursacht diese Beschädigung? ===
 +
Der Hauptgrund von Beschädigungen von grdb ist das wegbewegen der grdb Datei von ihrer ursprünglichen Position. Ob du die Datei in ein anderes Verzeichnis verschiebst, sie umbenennst, in eine andere Datei kopierst, auf einen anderen Rechner oder anderen Anwenderzugang legst -- all dies "beschädigt" die Datei.
  
So moving, copying, or renaming the file will copy the file's bytes, but not its environment. This is why the moved file appears corrupted.
+
Was passiert ist, die grdb Datei benötigt ihre Datenbankumgebung -- ein Verzeichnis mit Protokolldateien, Sperrdateien, temporären Dateien, usw. Die 2.2.x Gramps Versionen verwenden grdb Dateien und speichern die Umgebung für jede Datei in einem Baum in einem Verzeichnis unter <code>~/.gramps/env</code>. Wenn deine grdb Datei <code>/home/anwender/genealogie/MeineDaten.grdb</code> ist, dann liegt ihre Umgebung im Verzeichnis <code>/home/anwender/.gramps/env/home/anwender/genealogie/MeineDaten.grdb</code>.
  
Another cause can be an upgrade or downgrade of your operating system to a bsddb database backend that does not support fully the previous form of the database (eg, changed hash versions). This will also seem like a corruption in GRAMPS, but actually means the bsddb tools must be used to convert to data to a new version.
+
Also verschieben, kopieren oder umbenennen der Datei kopiert die Bytes der Datei aber nicht seine Umgebung. Dies ist der Grund warum die verschobenen Dateien defekt erscheinen.
  
Not being able to open a /tmp/... file in GRAMPS 3.0.x on opening grdb files indicates database corruption. This is because the grdb file you want to open is copied to the /tmp dir, and then opened. All failure results in the '/tmp/tmpxxxxx could not be opened'
+
Ein anderer Grund kann ein Upgrade oder Downgrade deines Betriebssystems zu einem bsddb Backend das nicht vollständig die vorherige Form der Datenbank unterstützt (z.B. geänderte Hash Versionen). Dies sieht auch wie eine Beschädigung in Gramps aus, bedeutet aber tatsächlich, das die bsdb Werkzeuge verwendet werden müssen, um Daten auf eine neue Version zu konvertieren.
  
===What do I do now?===
+
Das nicht öffnen können einer /tmp/... Datei in Gramps 3.0.x beim öffnen von grdb Dateien, deutet auf eine Datenbank Beschädigung. Dies ist so, weil die grdb Datei, die du öffnen willst, in das /tmp Verzeichnis kopiert wird und dann geöffnet wird. Alle Fehlschläge ergeben  'tmpxxxxx konnte nicht geöffnet werden'
The answer depends on whether or not you have the environment for that database. If you just copied one file into another then the environment may still work. If you modified the original database since then, the original environment has changed and there's no good environment for the new file. If you removed your <code>.gramps</code> directory (why oh why?) then all environments are lost. So act depending on the situation, as explained below.
 
  
====The environment still exists====
+
=== Was mache ich jetzt? ===
If you have environment directory for that file, copy it under the above gudelines.
+
Das hängt davon ab, ob du die Umgebung für die Datenbank noch besitzt oder nicht. Wenn du nur eine Datei in eine andere kopiert hast, kann es sein, das die Umgebung noch funktioniert. Wenn du die original Datenbank seitdem geändert hast, dann wurde die original Umgebung geändert und es existiert keine zuverlässige Umgebung für die neue Datei. Wenn du dein <code>.gramps</code> Verzeichnis gelöscht hast (warum nur warum?), dann sind alle Umgebungen verloren. Also handle nach der Situation wie unten beschrieben.
;Example: You copied <code>/home/user/genealogy/MyData.grdb</code> to <code>/home/user/genealogy/backup/BackupData.grdb</code> and the new file is not working.
 
;Solution: Copy <code>/home/user/.gramps/env/home/user/genealogy/MyData.grdb</code> directory into <code>/home/user/.gramps/env/home/user/genealogy/backup/BackupData.grdb</code> and this should fix the problem.
 
  
====The environment is lost====
+
==== Die Umgebung existiert noch ====
If you don't have the original environment for that file, you may try dumping and loading your data using Berkeley DB tools. Depending on your system, they may be called <code>db_dump</code> and <code>db_load</code>, <code>db41_dump</code> and <code>db41_load</code>, <code>db4.4_dump</code> and <code>db4.4_load</code>, ... In Ubuntu you find them in the package <code>db4.4-util</code>. You might need more recent versions depending on the version your distribution uses in its python package. So for eg Ubuntu Hardy created files, you will need <code>db4.6-util</code>. Whatever they are called, there should be a dump tool and a load tool, and they should be version 4 or later.
+
Wenn du das Umgebungsverzeichnis für diese Datei hast, kopiere es unter den obigen Vorgaben.
 +
;Beispiel: Du hast <code>/home/user/genealogy/MyData.grdb</code> nach <code>/home/user/genealogy/backup/BackupData.grdb</code> kopiert, und die neue Datei funktioniert nicht.
 +
;Lösung: Kopiere <code>/home/user/.gramps/env/home/user/genealogy/MyData.grdb</code> Verzeichnis in <code>/home/user/.gramps/env/home/user/genealogy/backup/BackupData.grdb</code> und dies sollte das Problem beheben.
  
Basically, you just dump the grdb into a text file, then create a new grdb from that text file:
+
==== Die Umgebung existiert nicht mehr ====
    $ db4.4_dump BackupData.grdb > somefile.txt
+
Wenn du die original Umgebung für diese Datei nicht mehr besitzt, kann es sein das du einen Auszug der Daten erstellst und sie mit Hilfe der Berkeley DB Werkzeuge laden kannst. Abhängig von deinem System können sie <code>db_dump</code> und <code>db_load</code>, <code>db41_dump</code> und <code>db41_load</code>, <code>db4.4_dump</code> und <code>db4.8_load</code>, ... genannt werden. In Ubuntu findest du sie in dem Paket <code>db4.8-util</code>. Es kann sein, das du abhängig von der Version, die deine Distribution in ihrem Python Paket verwendet, neuere Pakete benötigst. Zum Beispiel für mit Ubuntu Hardy erstellte Dateien benötigst du <code>db4.8-util</code>. Wie immer sie genannt werden, sie sollten ein Werkzeug für Auszüge (dump) und zum laden (load) enthalten und mindestens die Versionsnummer 4 besitzen.  Für Fedora 17 ist es 'db4-utils-4.8.30-10.fc17'. Für Fedora 18 ist es 'libdb4-utils-4.8.30-5.fc18' (beachte den neuen Paketnamen).
    $ db4.4_load newfile.grdb < somefile.txt
 
and then cross your heart and hope that <code>newfile.grdb</code> will open in GRAMPS.
 
  
If you obtain the error:  
+
Im Prinzip erstellst du einen Auszug (dump) in eine Textdatei und dann erstellst du eine neue grdb Datei aus dieser Textdatei:
 +
    $ db4.8_dump SicherungsDatei.grdb > irgeneinedatei.txt
 +
    $ db4.8_load neuedatei.grdb < irgeneinedatei.txt
 +
und dann Daumendrücken und hoffen, dass die neue Datei <code>neuedatei.grdb</code> sich in Gramps öffnen lässt.
 +
 
 +
Wenn du den Fehler erhältst:  
  
 
  db4.4_dump: eidtrans: unsupported hash version: 9
 
  db4.4_dump: eidtrans: unsupported hash version: 9
  
this is an indication you need a more recent version. So use db4.6 tools:  
+
dies ist ein Anzeichen, das du eine neuere Version benötigst. Also verwende db4.6 Werkzeuge:  
     $ db4.6_dump BackupData.grdb > somefile.txt
+
     $ db4.8_dump SicherungsDatei.grdb > irgeneinedatei.txt
     $ db4.6_load newfile.grdb < somefile.txt
+
     $ db4.8_load neuedatei.grdb < irgeneinedatei.txt
 +
 
 +
Beachte: Wenn du downgradest, kann es nötig sein, einen Auszug mit 4.6 Werkzeugen zu erstellen und ihn mit 4.4 oder 4.5 Werkzeugen zu laden.
  
Note: If you downgrade your distribution, it might be needed to do dump with 4.6 tools, and load with 4.4 or 4.5 tools.
+
=== Wie einer Beschädigung vorbeugen? ===
 +
Auch wenn das bewegen von Dateien der Hauptgrund für Beschädigungen ist, gibt es offensichtlich noch andere seltenere Gründe die wir nicht vollständig kennen. Das Verhindern von Beschädigungen ist nicht immer möglich.
  
===How to prevent corruption?===
+
Was jedoch möglich ist, die Daten regelmäßig zu [[De:Wie_erstelle_ich_eine_Sicherung|Sichern]]. Die [[De:Wie_erstelle_ich_eine_Sicherung|Sicherung]] sollte im XML Format (das <code>.gramps</code> Format) erfolgen. XML ist von Maschinen und Menschen lesbar. Es ist komplett unabhängig. Es ist auch klein. Das folgende ist eine bewährte Verfahrensweise für Sicherungen:
While moving the file is the leading cause of corruption, apparently there are other less frequent causes that we don't fully know. So preventing corruption is not always possible.
 
  
What is possible though is to backup the data regularly. The backups should be in XML format (the <code>.gramps</code> format). XML is machine- and human-readable. It is completely self-sufficient. It is also small. The following are good practices of backups:
+
  1. Export nach XML von Zeit zu Zeit speziell nach großen Änderungen.
# Export to XML from time to time, especially after large edits.
+
  2. Export nach XML vor großen Änderungen wie der Import neuer Daten in eine bestehende Datenbank aus z.B.  
# Export to XML before making big changes, such as importing new data into an existing database from e.g. GEDCOM, merging records, running tools that may heavily modify the data, etc.
+
      GEDCOM, Zusammenfassung von Datensätzen, ausführen von Werkzeugen die die Daten massiv ändern können, usw.
# Export to XML before upgrading GRAMPS to a newer version. Apparently, export to XML with old version before you install the new one!
+
  3. Export nach XML vor der Aktualisierung von Gramps auf eine neuere Version. Offensichtlich exportiere nach
# Export to XML before upgrading your OS.
+
      XML mit der alten Version bevor du die neue Version installierst!
 +
  4. Export nach XML vor der Aktualisierung des Betriebssystems.  
  
Also, use XML format for any data migration. Moving to another machine, sending data to grandma, copying to another user on the same machine -- all of these cases should use XML.
+
Verwende XML Format außerdem für jede Datenumstellung. Wechsel auf einen anderen Rechner, senden der Daten zu Oma, kopieren der Daten zu einem anderen Anwender auf dem selben Rechner -- all diese Fälle sollten XML verwenden da dort keine binär spezifischen Daten enthalten sind.  
  
 +
==Siehe auch==
 +
* [[De:Wie erstelle ich eine Sicherung|Wie erstelle ich eine Sicherung]]
  
[[Category:How do I...]]
+
[[Category:Troubleshooting]]

Revision as of 20:33, 29 June 2020

Gnome-important.png
Obsolete Information

This troubleshooting documentation is oriented around a superseded dependency in Gramps. Reliance on the BSDDB database engine was removed in the 5.1 release.

Erklärung von Stammbaum und GRDB Beschädigung, wie man sie behebt und wie man sie in Zukunft vermeidet.

Stammbaum Beschädigung

Was verursacht diese Beschädigungen?

Das ist nicht wirklich bekannt.

Wie auch immer, Gramps Version 2.2.x macht die Beschädigung von Datenbanken mit Stammbäumen erheblich seltener als mit dem früheren Speicherformat.

  • Siehe 8875 Database corruption bugs

Wie erfährst du davon?

Es kann sein das Gramps dir beim Starten über eine Dialogbox mitteilt, dass eine Datenwiederherstellung erforderlich ist:

Gramps hat ein Problem in der darunter liegenden Berkeley Datenbank 
festgestellt. Dies kann mit dem Stammbaumverwaltung repariert werden. Die 
Datenbank wählen und auf die Reparatur-Schaltfläche klicken

Aber es kann passieren, das keine Reparieren Schaltfläche verfügbar ist oder du erhältst den Fehler (sichtbar in der Konsole)

(-30975, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: Invalid argument').

Was ist jetzt zu tun?

Stammbäume (Manager) - Dialogfeld - Zeigt das rote Fehlerstatussymbol für den Stammbaum "Beispiel" an

Es ist ratsam, nicht sofort auf die Database_Formats#Repairing_a_Corrupt_DatabaseReparaturschaltfläche zu klicken. Es sollte funktionieren, aber Gramps könnte denken, das ein Fehler vorhanden ist obwohl dies nicht der Fall ist. Das reparieren deiner Bäume würde in diesem Fall zum Verlust der zuletzt eingegebenen Änderungen führen.

Stattdessen erstelle eine Sicherung des Stammbaums, der Probleme bereitet. Gib im Terminal ein:

gramps -l 

Dies gibt dir eine Liste mit allen Stammbäumen und den Verzeichnissen, in denen sie gespeichert sind, normalerweise irgendwo unter dem Verzeichnis ~/.gramps/grampsdb. Schaue in dein Anwenderverzeichnis. Kopiere das Verzeichnis des Stammbaums mit den Problemen, damit du eine Sicherung besitzt:

cp -a <Zielverzeichnis> <Sicherungsverzeichnis>

Wenn die Reparaturschaltfläche für den Gramps Stammbaum verfügbar war, klicke sie. Alles sollte wieder funktionieren. Wenn du merkst, das du Informationen verloren hast oder die Reparaturschaltfläche funktioniert nicht, tue folgendes. Wenn die Wiederherstellung funktioniert hat, du mit dem Ergebnis aber nicht zufrieden bist, sichere diese Daten und packe deine Sicherung, die du oben erstellt hast wieder zurück an ihren Ursprungsort. Nun hast du wieder den mangelhaften Stammbaum um damit zu arbeiten. Als nächstes besorge dir die bsddb Wiederherstellungswerkzeuge, schau auf deiner Distributionspaketsuchseite. Das Programm heißt db4.8_recover, wobei die Versionsnummer 4.8 eine ältere oder neuere sein kann. Überprüfe deine BSDDB Version im Hilfe -> Über Dialog oder mit dem gramps -v Kommando.

Starte diese Werkzeug wie folgt:

cd /home/<Benutzer>/.gramps/grampsdb/<Zielverzeichnis>
db4.8_recover -c

So müsste es gehen, und Gramps ermöglichen, den Stammbaum zu laden. Wenn nicht, öffne ein Ticket im Gramps Fehlerverfolgungswerkzeug.

Windows OS

  1. lade die ORACLE Werkzeuge unter: http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html
  2. ...TO_COMPLETE...

Ich habe gesicherte gbkp Dateien

Wenn du eine Sicherung besitzt, kannst du versuchen die gesicherten .gbkp Dateien wiederherzustellen. Führe folgende Schritte durch: Die Prozedur um deine Daten aus .gbkp Dateien wiederherzustellen ist:

  1. Make note of the "Family Tree" name you are trying to recover, from the "Family Tree Manager".
  2. Close the Gramps program.
  3. Locate your User Directory dependent on your operating systems.
  4. Locate the grampsdb folder under your User Directory (Also known as folders on some operating systems.[1])
  5. Under the grampsdb folder are stored all your "Family Tree" databases each in separate directories (eg:If you have 10 Family Trees you will have 10 folders each with an automatically created system generated folder name), locate the database you are trying to recover by opening name.txt file in a text editor and seeing if the name matches the Family Tree you are trying to recover. If it does match, make note of the directory name.
  6. If that folder contains .gbkp files, you can continue your attempt to recover the Family Tree.
  7. Copy all the .gbkp files to a new directory that you must create in your database grampsdb directory, eg. give the directory a unique name a1111
  8. From the original Family tree directory copy the name.txt file to the new directory you created.
  9. In the new directory open name.txt in a text editor and change the content to a unique name. eg: Family Tree 1 to Family Tree 1 recovery attempt
  10. In the new directory create a file with name need_recover . Mind the underscore and the lack of an extension. The content of that file is unimportant. (Are you using Microsoft Windows and having difficulty creating this file then see 8665#c44245 for a possible work around)
  11. Start the Gramps program.
  12. Select the family tree with the name you adjusted in step 9 eg. Family Tree 1 recovery attempt (Do not double click on the family tree name). There should be a red stop sign next to that family tree name.
  13. Select the Repair button and the Repair Family Tree? dialog will show, at this point select the Proceed, I have taken a backup button or you can select Stop to exit the repair attempt.
  14. The Gramps program will attempt to repair and recover the family tree and if successful the red stop sign should disappear.
  15. From the Family Tree manager select the repaired family tree and you should be able to Load Database the family tree.
  16. From the menu select Family Trees > Make Backup.. and create a backup as insurance

Mehr Sicherheit einführen

Deine Genealogiedaten enthalten jede menge Arbeit und Arbeitsstunden. So erarbeite ein Sicherungsschema

Wenn du regelmäßig mit Gramps arbeitest: sichere das Verzeichnis, das die Stammbaumdatenbank enthält. Dies sind jedoch sehr große Dateien.

Wenn du weißt, das du Gramps nur ab und zu verwendest oder wenig Platz für regelmäßige Sicherungen deiner Bäume hast, dann erstelle Sicherungen im XML Format (das .gramps Format). Vergiss nicht die Vertraulichkeitsfilter zu deaktivieren... Das XML Format lässt sich auch nach vielen Jahren ohne Probleme auf einem anderen Computer mit einem anderen Betriebssystem öffnen. Dies ist wahrscheinlich für Datenbanken, in denen der Stammbaum gespeichert ist, nicht der Fall. XML ist von Maschinen und Menschen lesbar. Es ist komplett unabhängig. Es ist auch klein. Das folgende ist eine bewährte Verfahrensweise für Sicherungen:

  1. Export nach XML von Zeit zu Zeit speziell nach großen Änderungen.
  2. Export nach XML vor großen Änderungen wie der Import neuer Daten in eine bestehende Datenbank aus z.B. 
     GEDCOM, Zusammenfassung von Datensätzen, ausführen von Werkzeugen die die Daten massiv ändern können, usw.
  3. Export nach XML vor der Aktualisierung von Gramps auf eine neuere Version. Offensichtlich exportiere nach
     XML mit der alten Version bevor du die neue Version installierst!
  4. Export nach XML vor der Aktualisierung des Betriebssystems. 

Verwende XML Format außerdem für jede Datenumstellung. Wechsel auf einen anderen Rechner, senden der Daten zu Oma, kopieren der Daten zu einem anderen Anwender auf dem selben Rechner -- all diese Fälle sollten XML verwenden da dort keine binär spezifischen Daten enthalten sind.

Beachte, das XML deine Mediendateien nicht enthält. Die gpkg Ausgabe enthält XML und deine Mediendateien mit dem Nachteil, das sie sehr groß ist. Wenn du bereits ein Sicherungsschema für deine Mediendateien besitzt, besteht keine Notwendigkeit gpkg Dateien ebenfalls zu sichern.

ACI nicht ACID, Upgrade, downgrade

Gramps schützt deine Daten durch Verwendung einer ACI Datenbank. Dies bedeutet, das bei einem Fehler die letzte Übergabe verloren gehen kann, aber nicht mehr. Du solltest trotzdem vor einer Aktualisierung sicherstellen, das Gramps deinen Stammbaum korrekt geschlossen hat.

Es sollte kein Fehler beim Öffnen eines Stammbaums mit einer neueren Version auftreten. Siehe die langen Recherchen in 3975, welche zeigen, das Version 4.7.25 von Bsddb einen Fehler enthält, der eine seltsame Fehlermeldung erzeugen kann.

Der Versuch einen Stammbaum nach einem downgrade zu öffnen, wird nicht unterstützt. Du erhältst einen Fehler, das die Datenbank mit einer neueren Version erstellt wurde.

Oracle Berkeley DB Command Line Utilities

Use "db_recover -cv" for more verbose output.

dbdump dumps database in text format and dbload use that:

db_dump database.db > dump.txt

db_load database.db < dump.txt

Deine Protokollsequenznummer ist nicht synchron, daher musst du sie zurücksetzen:

db_load -r lsn database.db < dump.txt

Siehe [2][3]

Version 2.2.x: GRDB Beschädigung

Gramps-notes.png
Dieser Abschnitt bezieht sich auf Gramps Version 2.2.x.

Was verursacht diese Beschädigung?

Der Hauptgrund von Beschädigungen von grdb ist das wegbewegen der grdb Datei von ihrer ursprünglichen Position. Ob du die Datei in ein anderes Verzeichnis verschiebst, sie umbenennst, in eine andere Datei kopierst, auf einen anderen Rechner oder anderen Anwenderzugang legst -- all dies "beschädigt" die Datei.

Was passiert ist, die grdb Datei benötigt ihre Datenbankumgebung -- ein Verzeichnis mit Protokolldateien, Sperrdateien, temporären Dateien, usw. Die 2.2.x Gramps Versionen verwenden grdb Dateien und speichern die Umgebung für jede Datei in einem Baum in einem Verzeichnis unter ~/.gramps/env. Wenn deine grdb Datei /home/anwender/genealogie/MeineDaten.grdb ist, dann liegt ihre Umgebung im Verzeichnis /home/anwender/.gramps/env/home/anwender/genealogie/MeineDaten.grdb.

Also verschieben, kopieren oder umbenennen der Datei kopiert die Bytes der Datei aber nicht seine Umgebung. Dies ist der Grund warum die verschobenen Dateien defekt erscheinen.

Ein anderer Grund kann ein Upgrade oder Downgrade deines Betriebssystems zu einem bsddb Backend das nicht vollständig die vorherige Form der Datenbank unterstützt (z.B. geänderte Hash Versionen). Dies sieht auch wie eine Beschädigung in Gramps aus, bedeutet aber tatsächlich, das die bsdb Werkzeuge verwendet werden müssen, um Daten auf eine neue Version zu konvertieren.

Das nicht öffnen können einer /tmp/... Datei in Gramps 3.0.x beim öffnen von grdb Dateien, deutet auf eine Datenbank Beschädigung. Dies ist so, weil die grdb Datei, die du öffnen willst, in das /tmp Verzeichnis kopiert wird und dann geöffnet wird. Alle Fehlschläge ergeben 'tmpxxxxx konnte nicht geöffnet werden'

Was mache ich jetzt?

Das hängt davon ab, ob du die Umgebung für die Datenbank noch besitzt oder nicht. Wenn du nur eine Datei in eine andere kopiert hast, kann es sein, das die Umgebung noch funktioniert. Wenn du die original Datenbank seitdem geändert hast, dann wurde die original Umgebung geändert und es existiert keine zuverlässige Umgebung für die neue Datei. Wenn du dein .gramps Verzeichnis gelöscht hast (warum nur warum?), dann sind alle Umgebungen verloren. Also handle nach der Situation wie unten beschrieben.

Die Umgebung existiert noch

Wenn du das Umgebungsverzeichnis für diese Datei hast, kopiere es unter den obigen Vorgaben.

Beispiel
Du hast /home/user/genealogy/MyData.grdb nach /home/user/genealogy/backup/BackupData.grdb kopiert, und die neue Datei funktioniert nicht.
Lösung
Kopiere /home/user/.gramps/env/home/user/genealogy/MyData.grdb Verzeichnis in /home/user/.gramps/env/home/user/genealogy/backup/BackupData.grdb und dies sollte das Problem beheben.

Die Umgebung existiert nicht mehr

Wenn du die original Umgebung für diese Datei nicht mehr besitzt, kann es sein das du einen Auszug der Daten erstellst und sie mit Hilfe der Berkeley DB Werkzeuge laden kannst. Abhängig von deinem System können sie db_dump und db_load, db41_dump und db41_load, db4.4_dump und db4.8_load, ... genannt werden. In Ubuntu findest du sie in dem Paket db4.8-util. Es kann sein, das du abhängig von der Version, die deine Distribution in ihrem Python Paket verwendet, neuere Pakete benötigst. Zum Beispiel für mit Ubuntu Hardy erstellte Dateien benötigst du db4.8-util. Wie immer sie genannt werden, sie sollten ein Werkzeug für Auszüge (dump) und zum laden (load) enthalten und mindestens die Versionsnummer 4 besitzen. Für Fedora 17 ist es 'db4-utils-4.8.30-10.fc17'. Für Fedora 18 ist es 'libdb4-utils-4.8.30-5.fc18' (beachte den neuen Paketnamen).

Im Prinzip erstellst du einen Auszug (dump) in eine Textdatei und dann erstellst du eine neue grdb Datei aus dieser Textdatei:

   $ db4.8_dump SicherungsDatei.grdb > irgeneinedatei.txt
   $ db4.8_load neuedatei.grdb < irgeneinedatei.txt

und dann Daumendrücken und hoffen, dass die neue Datei neuedatei.grdb sich in Gramps öffnen lässt.

Wenn du den Fehler erhältst:

db4.4_dump: eidtrans: unsupported hash version: 9

dies ist ein Anzeichen, das du eine neuere Version benötigst. Also verwende db4.6 Werkzeuge:

   $ db4.8_dump SicherungsDatei.grdb > irgeneinedatei.txt
   $ db4.8_load neuedatei.grdb < irgeneinedatei.txt

Beachte: Wenn du downgradest, kann es nötig sein, einen Auszug mit 4.6 Werkzeugen zu erstellen und ihn mit 4.4 oder 4.5 Werkzeugen zu laden.

Wie einer Beschädigung vorbeugen?

Auch wenn das bewegen von Dateien der Hauptgrund für Beschädigungen ist, gibt es offensichtlich noch andere seltenere Gründe die wir nicht vollständig kennen. Das Verhindern von Beschädigungen ist nicht immer möglich.

Was jedoch möglich ist, die Daten regelmäßig zu Sichern. Die Sicherung sollte im XML Format (das .gramps Format) erfolgen. XML ist von Maschinen und Menschen lesbar. Es ist komplett unabhängig. Es ist auch klein. Das folgende ist eine bewährte Verfahrensweise für Sicherungen:

  1. Export nach XML von Zeit zu Zeit speziell nach großen Änderungen.
  2. Export nach XML vor großen Änderungen wie der Import neuer Daten in eine bestehende Datenbank aus z.B. 
     GEDCOM, Zusammenfassung von Datensätzen, ausführen von Werkzeugen die die Daten massiv ändern können, usw.
  3. Export nach XML vor der Aktualisierung von Gramps auf eine neuere Version. Offensichtlich exportiere nach
     XML mit der alten Version bevor du die neue Version installierst!
  4. Export nach XML vor der Aktualisierung des Betriebssystems. 

Verwende XML Format außerdem für jede Datenumstellung. Wechsel auf einen anderen Rechner, senden der Daten zu Oma, kopieren der Daten zu einem anderen Anwender auf dem selben Rechner -- all diese Fälle sollten XML verwenden da dort keine binär spezifischen Daten enthalten sind.

Siehe auch