web-dev-qa-db-fra.com

Impossible de se connecter à la base de données DB2 après la restauration d'une sauvegarde hors ligne

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?

6
Chris Aldrich

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 commande RESTORE. 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 le ROLLFORWARD DB commande.

5
Chris Aldrich