Ceci est pour DB2 9.7 Enterprise Server Edition sur AIX.
J'ai eu une sauvegarde complète et hors ligne prise de plusieurs bases de données dans notre instance dans un environnement de performance.
Je voulais restaurer ces bases de données à notre environnement d'intégration.
J'ai couru la commande
db2 restore database database_name from
/bkp/instance_name/OfflineBackups/RestorePoint/my_restore_point
taken at 20120321103846 into database_name without prompting;
pour chacune de mes bases de données (modifier le nom de la base de données et l'horodatage de manière appropriée bien sûr).
Chaque base de données restaurée avec succès selon DB2. Cependant, maintenant, lorsque je souhaite vérifier si la base de données a réellement restauré ce que je pensais, j'essaie de vous connecter à une base de données et d'obtenir l'erreur
SQL1117N A connection to or activation of database "database_name" cannot be made
because of ROLL-FORWARD PENDING. SQLSTATE=57019
Je n'avais aucune transaction dans la base de données précédente car toutes les connexions ont été forcées et la base de données était en panne pour une sauvegarde hors ligne. Que fais-je?
Trouvé la réponse ici .
Je devais exécuter la commande
db2 rollforward db database_name to end of backup and complete;
Cela engage tout aux journaux et place la base de données dans un état en attente de plus, permettant ainsi la connexion. Je devais faire cela pour chaque base de données restaurée.
Edit: a trouvé cette nugget Nifty tout en participant à une db2nightshow épisode. Avec 9,7 FP2, ils ont introduit une variable de registre appelée DB2_RESTORE_GRANT_ADMIN_AUTHORITORITY. Ceci est pratique si vous restaurez une sauvegarde d'une instance à une autre, car elle accorde automatiquement le propriétaire de l'instance Secadm, DBADM, DataAccess et AccessCtrl sur les bases de données restaurées. Avec 9,7 FP5, le paramètre est dynamique et ne nécessite pas de rebondir de l'instance. Je me rends compte que ma question initiale n'avait rien à voir avec la sécurité, mais on peut rencontrer et pensait que ce serait une charcuterie pratique placée ici.
Edit n ° 2: J'ai récemment découvert que si la sauvegarde est une sauvegarde hors ligne basée sur une base de données enregistrée archivistique, j'aurais pu inclure la clause
WITHOUT ROLLING FORWARD
Dans ma commandeRESTORE
. Cela aurait pris la base de données d'un État en attente en attente immédiatement après une restauration réussie, ce qui signifierait que je n'aurais pas eu à émettre ensuite leROLLFORWARD DB
commande.