Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Bases de données > DB2

DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2

Réponse
 
Outils de la discussion
Vieux 03/11/2008, 11h48   #1 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut [DB2 8 | WIN Server 2003] Backup/Restore de base sur 2 serveurs distincts

Bonjour,

mon problème est fort simple : quelqu'un a fait un backup de base DB2 sur un serveur A, et je dois les charger sur un serveur B.
Je ne sais pas exactement comment a été fait le backup, mais j'ai, en entrée de la restauration (ie, en provenance du serveur A), une arborescence type :
DEVAPPL3.0\APP\NODE0000\CATN0000\20081022
avec un seul fichier :
104412.001

En faisant un test sur mon propre serveur B de cycle de backup/restore, j'obtiens le même genre d'arborescence, et la restauration me propose bien d'utiliser le fichier que je viens de générer... mais je n'ai aucun moyen d'indiquer le fichier que j'ai récupéré de l'autre serveur A pour réaliser la restauration :-/
Dans l'assistant de restauration, dans l'étape 2 (Select the database backup image to use), si je choisis la deuxième option (Select the backup image from the list provided), je ne vois que le backup que j'ai fait pour tester sur le serveur B. Si je prends l'autre option, il m'annonce à la fin qu'il n'a pas trouvé le fichier de backup, bien que je lui ai spécifié la bonne date/heure en me basant sur le nom du dossier et du fichier récupéré du serveur A (ici, le 22/10/2008 à 10:44:12).

En parcourant les quelques sujets ici et là, j'ai l'impression qu'il me manquerait des logs ? Quelqu'un pourrait-il m'indiquer où et comment je trouve ces fameux logs ?

Merci d'avance.

Cordialement,

Alexis

ps.: pour info, la version de DB2 utilisée :

Code :
============================================================
About DB2 Administration Tools Environment
============================================================
DB2 administration tools level:
Product identifier           SQL08029
Level identifier             030A0106
Level                        DB2 v8.1.17.644
Build level                  s080813
PTF                          WR21416
============================================================
Java development kit (JDK):
Level                        IBM Corporation 1.4.1
============================================================
 
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/11/2008, 10h06   #2 (permalink)
Membre du Club
 
Date d'inscription: juillet 2006
Âge: 31
Messages: 80
Par défaut

Bonjour Alek-C

Je ne comprends pas bien, pour moi la situation est clair il ne trouve réellement pas ton fichier.

Si tu as ramener le fichier de la sauvegarde de ton serveur A sur ton serveur B, c'est déjà un bon point mais si le nom des bases sont différents ce n'est pas le fichier qu'il faut ramener mais toutes l'arborescence.

Par Ex :

Serveur A : DEVAPPL3.0\APP\NODE0000\CATN0000\20081022

Serveur B : APPL3.0\APP\NODE0000\CATN0000\20081022

Si tu n'as pas l'arborescence au complet cela ne marchera pas.

Tu veut restaurer en one shot ou tu veut le faire régulièrement dans l'avenir ?

Explique nous un peu plus... et envoie ton message d'erreur pour que l'on sache exactement de quoi il s'agit parce comme tu parle de log il s'agit peut être d'autre chose. (Ex : un rollforward qui ne se ferait pas car tu n'as pas pris les logs dans ta sauvegarde...)

Envoie le nom de la base Source, le nom de la base Cible + le script sql généré par l'assistant de sauv/restaure ce sera plus simple.

A bientôt
fweiner est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/11/2008, 10h58   #3 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut

Alors, déjà, merci pour ton message.

En fait, j'ai réussi une première restauration hier.

Le problème était bien celui que tu citais: j'avais correctement récupéré l'arborescence complète, mais dans l'assistant DB2, je n'avais pas percuté que je pouvais saisir manuellement le nom de la base source : DEVAPPL3.0 dans ton exemple.
En effet, je pensais bêtement que je ne pouvais pas rentrer de truc à la main dans la case "Database being restore" et qu'il fallait obligatoirement cliquer sur les "..." pour ouvrir la fenêtre de sélection de base. Mais du coup, je saisissais systématiquement une base existante... donc je ne comprenais pas l'intérêt et forcément, ça ne marchait pas (ça paraît con comme ça, mais je trouve que c'est pas très bien foutu bref...)

Finallement, j'ai pris la commande SQL, et je l'ai modifiée à la main pour mettre le bon nom de base et s'est passé sur mon premier backup : la restauration s'est bien effectuée...

Par contre, en voulant faire exactement la même manipulation sur une seconde base, j'obtiens une autre erreur
l'arborescence :
D:\incoming\DEVAPPL3.0\FCR\NODE0000\CATN0000\20081021

Code :
RESTORE DATABASE DEVAPPL3 FROM "D:\incoming" TAKEN AT 20081021180000 TO "D:" INTO DEV_APP WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;
Code :
SQL0298N  Bad container path.
 
Explanation: 
 
The container path violates one of the following requirements: 
 
o   Container paths must be valid fully-qualified absolute paths  
    OR valid relative paths.  The latter are interpreted relative 
    TO the DATABASE directory.  
 
o   FOR EXTEND, REDUCE, RESIZE AND DROP operations, the specified 
    container path must exist.  
 
o   The path must be READ/WRITE accessible TO the instance id     
    (CHECK file permissions ON UNIX-based systems).  
 
o   Containers must be of the type specified IN the command       
    (directory, file OR device).  
 
o   Containers (directories) IN system managed TABLE spaces must  
    be empty when designated AS containers AND must NOT be nested 
    underneath other containers.  
 
o   The containers FOR one DATABASE must NOT be located           
    underneath the directory of another DATABASE, AND they may    
    NOT be underneath any directory that appears TO be FOR        
    another DATABASE.  This rules out any directory of the form   
    SQLnnnnn, WHERE 'n' IS any digit.  
 
o   The container must be within the file size LIMIT FOR the     
    operating system.  
 
o   Containers (files) FOR dropped DATABASE managed TABLE spaces  
    can only be reused AS containers (directories) FOR system     
    managed TABLE spaces after ALL agents terminate AND vice   
    versa.  
 
o   During a redirected restore, an SMS container was specified   
    FOR a DMS TABLE space OR a DMS container was specified FOR an 
    SMS TABLE space.  
 
o   The specified type of the container FOR an EXTEND, REDUCE,    
    RESIZE, OR DROP operation does NOT match the type of the      
    container (FILE OR DEVICE) that was specified when the       
    container was created.  
 
 
 
 This message will also be returned IF any other unexpected error 
occurred which prevents DB2 FROM accessing the container.  
 
User Response: 
 
Specify another container location OR CHANGE the container TO 
make it acceptable TO DB2 (such AS changing file permissions) AND 
try again.  
 
 sqlcode :   -298 
 
 sqlstate :  428B2
Mais je suis en train de regarder : en toute franchise, je n'ai pas encore fait de recherches dessus donc je vais peut-être trouver... je reviendrais mettre un message ici si je suis bloqué encore demain :p

Merci en tout cas !
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/11/2008, 11h22   #4 (permalink)
Membre du Club
 
Date d'inscription: juillet 2006
Âge: 31
Messages: 80
Par défaut

Alek-C

Question peut être bête mais j'assume...

Est ce que au moment ou tu passe cette commande de restaure ta base DEV_APP existe déjà ?

Car si c'est le cas il faut faire un Drop database avant ton test.

J'ai vu un sujet ce matin ici qui ressemblait a ton problème.
fweiner est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/11/2008, 11h35   #5 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut

Bon, à priori, c'est juste que l'un des TS ciblait un conteneur vers un disque qui n'existe plus

Je crois que je commence à comprendre comment ça marche :p Merci pour tout !

edit: je n'avais pas vu ta réponse, désolé... Non, la base n'existe plus (et si une question devait être bête, c'était plutôt la mienne ) mais apparemment, dans le backup, il y avait un chemin d'accès qui devait être défini en "dur" d'une manière ou d'une autre sur un disque qui n'existe pas sur le nouveau serveur.
Pour faire simple, j'ai fait la manipulation de restauration par l'assistant, j'ai récupéré la commande SQL complète (avec l'option n°3 : "Enable table space containers to be redirected during the restore operation") et comme ça, j'ai la liste des TS et tout et je fais ma commande proprement à la mimine...
une fois qu'on a pigé les options, c'est assez simple en fait. C'est juste le début où j'ai eu du mal avec l'assistant -_- mais d'écrire sur les forums, ça m'aide à réfléchir ^^

Si tout fonctionne, je passerais en résolu dans la foulée : merci encore !
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/11/2008, 17h24   #6 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut

Bon, la restauration fonctionne sans problème maintenant que j'ai compris...

Seconde étape, je voudrais dupliquer les bases restaurées mais SANS les données (juste la structure quoi =)...

Je n'ai pas trouvé de moyen dans le backup ou la restauration pour cela, et je n'ai pas encore réussi en passant par une génération de DDL de la base à dupliquer que je modifierais à la main pour créer ma seconde base...

Mais je persévère

N'empêche, je préfère limite DB2 sous MVS que sous Windows
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/11/2008, 11h12   #7 (permalink)
Membre du Club
 
Date d'inscription: juillet 2006
Âge: 31
Messages: 80
Par défaut

Regarde du coté du script.

exemple de commande : db2look

tient nous au courant
fweiner est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/11/2008, 16h54   #8 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut

pfiou...

bon, finalement, j'ai réussi en générant les DDL et en bidouillant un peu à la main derrière... c'est pas évident au début, mais au final, c'est assez logique.

Je vais jeter un oeil à db2look que je ne connais pas :o) mais je vais fermer ici puisque j'ai fini par avoir à peu près ce que je voulais même si ça n'est pas forcément la meilleure méthode d'y arriver

Merci encore pour le soutien :p
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
NEWS DB2F.A.Q DB2TUTORIELS DB2TUTORIELS SQLLIVRES DB2

Réponse

Précédent   Forum des développeurs > Bases de données > DB2



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide