Je suis intéressé par une chose, si j'ai bien compris. DB2 est en mode archives (les sauvegardes en ligne sont faites et les journaux d'archives continuent à venir qui est OK).
Si je faisais une sauvegarde complète hors ligne aujourd'hui et que je sais que je n'aurai pas besoin de retourner aux jours précédents, etc. Puis-je être libre de supprimer toutes les journaux d'archives? En cas de restauration de la sauvegarde d'aujourd'hui, je suppose que je n'obtiendrai pas une erreur "S000013.Log manquait" ou quelque chose comme ça?
À mon avis, ça devrait être d'accord mais je veux vérifier cela avec des experts?
Il y a deux façons de déterminer les journaux à conserver. Un que vous vous écrivez. Vous auriez besoin d'émettre un db2 list history backup all for <db name>
. Cela vous montrera le fichier d'historique et localisera la dernière sauvegarde et le dernier nécessaire Journal d'archive. Quoi que ce soit avant cela puisse être supprimé.
Maintenant, vous pouvez ajouter en automatisation.
Ensemble de première étape db2 update db cfg using AUTO_DEL_REC_OBJ ON
Pour la base de données que vous êtes connecté. Cela vous permettra maintenant d'utiliser le fichier d'historique pour élaborer des sauvegardes et des journaux d'archives inutiles. Vous devrez toujours utiliser des scripts de fantaisie et une analyse de texte, mais vous pouvez le faire. (Vous pouvez probablement localiser également une table dans DB2 pour obtenir les données. Cela peut être plus facile à saisir les données.) Mais vous pouvez alors émettre db2 Prune history <timestamp> [with force option] and delete
Pour supprimer des sauvegardes inutiles. Et db2 Prune logfile prior to <log file name>
Pour supprimer des grumes archivées inutiles.
C'est génial, mais pourquoi ne pas laisser DB2 le gérer pour vous tout le chemin? Régler db2 update db cfg using AUTO_DEL_REC_OBJ ON
Pour la base de données en question. Ensuite, vous pouvez définir db2 update db cfg using NUM_DB_BACKUPS <number>
. Cela définit le nombre maximum de sauvegardes que vous souhaitez conserver pour la période de REC_HIS_RETENTN
journées. Maintenant défini db2 update db cfg REC_HIS_RETENTN <number>
au nombre de jours. Si vous définissez NUM_DB_BACKUPS
à 3
et REC_HIS_RETENTN
à 2
, il conservera 3 sauvegardes pendant 2 jours. En d'autres termes, une sauvegarde doit avoir au moins deux jours avant d'être considéré comme pour le retrait. Une fois qu'une sauvegarde est plus âgée de 2 jours, cela vérifiera s'il y a plus de 3 sauvegardes. Si cela est vrai, il enlèvera les sauvegardes plus anciennes.
Maintenant pour les journaux ..... tant que vous définissez LOGARCHMETH1
à DISK
plutôt que LOGRETAIN
, DB2 nettoyera également les journaux d'archives qui ne sont plus nécessaires. Il conservera des grumes d'archives entre chacune des sauvegardes sauvegardées, mais supprimera tout le reste. Exemple de paramètre: db2 update db cfg using LOGARCHMETH1 'DISK:/archive/logs'
. Si vous avez défini sur LOGRETAIN
, DB2 ne nettoie pas automatiquement les journaux et vous êtes laissé pour le faire vous-même.
Lorsque vous restaurez une sauvegarde hors ligne, vous n'êtes pas Obligatoire Pour rouler en avant (bien que la base de données se trouve dans l'état en attente de roulement à la fin de la sauvegarde, vous pouvez éviter à l'aide de la WITHOUT ROLLING FORWARD
Option pour RESTORE DATABASE
).
Cela signifie que vous CAN Supprimer les fichiers journaux archivés.
Toutefois, gardez à l'esprit que vous voudrez peut-être faire attention qui archiver les fichiers journaux que vous supprimez - Si vous ne faites pas attention, vous pouvez supprimer accidentellement les fichiers plus récents que la sauvegarde pouvant être nécessaire.