Sauvegarde et restauration d'une base db2

Mise à jour: 20 mai 2007
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2007 Jean-Louis BICQUELET-SALAÜN

Sauvegarde et restauration d’une base DB2

création de la database et des tables

Se connecter avec l’utilisateur db2inst1.

Celui-ci va devoir créer une base. On peut soit passer par le mode interractif en tapant db2 (quit pour sortir) soit lancer les commandes à partir du shell.



On va utiliser le mode interractif :



db2 => create database toto

DB20000I La commande CREATE DATABASE a abouti.

db2 =>

db2 => connect to toto



Informations de connexion à la base de données



Serveur de base de données = DB2/LINUX 8.2.0

ID utilisateur SQL = DB2INST1

Alias local de la base de données = TOTO



Il faut se connecter à la base :

db2 => connect to toto



Informations de connexion à la base de données



Serveur de base de données = DB2/LINUX 8.2.0

ID utilisateur SQL = DB2INST1

Alias local de la base de données = TOTO

Créons une table de test et remplissons la :

db2 => create table telephone (id int, nom char(24), tel char(12) )

DB20000I La commande SQL a abouti.



db2 => insert into telephone values(1,'wbic','66567')

DB20000I La commande SQL a abouti.

db2 => insert into telephone values(2,'wdeg','66619')

DB20000I La commande SQL a abouti.

vérification des tables

On peut vérifier la structure et le contenu de la table

db2 => list tables



Table/Vue Schéma Type Création - Horodatage

------------------------------- --------------- ----- --------------------------

TELEPHONE DB2INST1 T 2006-09-27-11.00.51.461097



1 enregistrement(s) sélectionné(s).



db2 => describe table telephone



Nom de Schéma Nom

colonne du type du type Longueur Ech. Null

------------------------------ --------- ------------------ -------- ----- ------

ID SYSIBM INTEGER 4 0 Oui

NOM SYSIBM CHARACTER 24 0 Oui

TEL SYSIBM CHARACTER 12 0 Oui



3 enregistrement(s) sélectionné(s).



db2 => select * from telephone

ID NOM TEL

----------- ------------------------ ------------

1 wbic 66567

2 wdeg 66619

2 enregistrement(s) sélectionné(s).



sauvegarde de la database et des tables

L’utilitaire qui permet de sauvegarder (et de restaurer) une base s’appelle db2move.

# db2move toto export



***** DB2MOVE *****



Action: EXPORT



Start time: Wed Sep 27 11:05:12 2006





Connecting to database TOTO ... successful! Server: DB2 Common Server V8.2.0



Binding package automatically ...

Bind file: /home/db2inst1/sqllib/bnd/db2move.bnd



Bind was successful!



EXPORT: 2 rows from table "DB2INST1"."TELEPHONE"



Disconnecting from database ... successful!



On retrouve les fichiers suivants:

  • db2move.lst

  • EXPORT.out

  • tab1.ixf

  • tab1.msg

Ce sont ces fichiers qui peuvent permettre une restauration de la base.



$ls -l



End time: Wed Sep 27 11:05:12 2006



-rw-r--r-- 1 db2inst1 db2grp1 43 sep 27 11:05 db2move.lst

drwx------ 3 db2inst1 db2grp1 1024 sep 26 16:00 Desktop/

-rw-r--r-- 1 db2inst1 db2grp1 316 sep 27 11:05 EXPORT.out

drwxrwsr-t 16 db2inst1 db2grp1 1024 sep 26 16:00 sqllib/

-rw-r----- 1 db2inst1 db2grp1 4455 sep 27 11:05 tab1.ixf

-rw-r----- 1 db2inst1 db2grp1 165 sep 27 11:05 tab1.msg



Pour obtenir extraire la structure des tables de la base toto, il faut utiliser db2look, qui génère un fichier sql permettant de reconstruire la structure de la base.



$ db2look -d toto -e -a -o db2look.sql

-- Générez des statistiques pour tous les créateurs

-- Création de DDL pour une (des) table(s)

-- Résultat envoyé vers le fichier: db2look.sql

-- Liaison automatique de progiciels ...

-- Liaison effectuée

-- Liaison automatique de progiciels ...

-- Liaison effectuée



Le fichier obtenu db2look.sql ,contient ceci:



-- Ce fichier CLP file a été créé avec la version DB2LOOK 8.2
-- Unité de temps: mer 27 sep 2006 11:06:44 CEST
-- Nom de base de données: TOTO
-- Version de gestionnaire de base de données: DB2/LINUX Version 8.2.0
-- Pages de codes de base de données: 923
-- L'ordre de classement de la base de données est le suivant: UNIQUE

CONNECT TO TOTO;

------------------------------------------------
-- Instructions DDL pour table "DB2INST1"."TELEPHONE"
------------------------------------------------

CREATE TABLE "DB2INST1"."TELEPHONE" (
"ID" INTEGER ,
"NOM" CHAR(24) ,
"TEL" CHAR(12) )

IN "USERSPACE1" ;

COMMIT WORK;

CONNECT RESET;

TERMINATE;



suppression des tables

db2 => drop table telephone

DB20000I La commande SQL a abouti.



recréation de la structure de la table

On exécute le script sql généré par db2look par exemple à partir de la ligne de commande.



$ db2 -tvf db2look.sql

CONNECT TO TOTO

Informations de connexion à la base de données



Serveur de base de données = DB2/LINUX 8.2.0

ID utilisateur SQL = DB2INST1

Alias local de la base de données = TOTO



CREATE TABLE "DB2INST1"."TELEPHONE" ( "ID" INTEGER , "NOM" CHAR(24) , "TEL" CHAR(12) ) IN "USERSPACE1"

DB20000I La commande SQL a abouti.



COMMIT WORK

DB20000I La commande SQL a abouti.



CONNECT RESET

DB20000I La commande SQL a abouti.



TERMINATE

DB20000I La commande TERMINATE a abouti.











chargement des données dans les tables

db2move va permettre le chargement des données dans la base :



$ db2move toto load



***** DB2MOVE *****



Action: LOAD



Start time: Wed Sep 27 14:16:26 2006



Connecting to database TOTO ... successful! Server: DB2 Common Server V8.2.0



* LOAD: table "DB2INST1"."TELEPHONE"

-Rows read: 2

-Loaded: 2

-Rejected: 0

-Deleted: 0

-Committed: 2

Disconnecting from database ... successful!



End time: Wed Sep 27 14:16:27 2006



Il ne reste plus qu’à vérifier :



$ db2 list tables



Table/Vue Schéma Type Création - Horodatage

------------------------------- --------------- ----- --------------------------

TELEPHONE DB2INST1 T 2006-09-27-11.20.18.913099



1 enregistrement(s) sélectionné(s).



$ db2 describe table telephone



Nom de Schéma Nom

colonne du type du type Longueur Ech. Null

------------------------------ --------- ------------------ -------- ----- ------

ID SYSIBM INTEGER 4 0 Oui

NOM SYSIBM CHARACTER 24 0 Oui

TEL SYSIBM CHARACTER 12 0 Oui



3 enregistrement(s) sélectionné(s).



$db2 select *from telephone



ID NOM TEL

----------- ------------------------ ------------

1 wbic 66567

2 wdeg 66619



2 enregistrement(s) sélectionné(s).



Il faut noter l’utilisation de guillemets quand on passe un select avec un joker à partir de la ligne de commande.