Module 106
Interroger, traiter et assurer la maintenance des bases de données
Jour 7 - Sauvegardes des bases de données et modification des bases de données
# Objectifs du jour
Objectifs du jour
-
Modification du Mindmap
-
Correction de l'exercice des index (Exercice 4.2)
-
Présentations des sauvegardes de base de données
-
Exercice sur les sauvegardes
-
Modification et migration d'un schéma
-
Exercice relatif à la modification d'un schéma
# Mindmap
Modification du Mindmap
- Mise à jour du Mindmap

Exercice 4.2
Adaptation du MPD pour optimiser les performances avec les index

Correction de l'exercice sur les index
# Commandes SQL

# Sauvegardes des bases de données
Sauvegardes des bases de données
Pourquoi faire des sauvegardes ?
- Éviter les pertes de données : erreurs, crash, suppression involontaire
- Restaurer rapidement une base cohérente
- Sécurité métier : éviter l’interruption d’un service critique
- Gérer des environnements de test ou de développement à partir de données réelles
- Préparer des migrations ou des montées de version
Vous aussi ça vous donne envie de jouer ?
# Sauvegardes des bases de données
Tester les sauvegardes
Une sauvegarde non testée = une sauvegarde inutile
- Vérifier que le fichier de dump est lisible et complet
- S'assurer que la restauration fonctionne
- Tester régulièrement la restauration
# Sauvegardes des bases de données
Bonnes pratiques
- Tester les sauvegardes (régulièrement)
- Identifier les erreurs potentielles (droits, chemins, noms de répertoire) ; Surveiller les logs pour détecter erreurs ou avertissements
- Réaliser des tests de restauration partielle ou complète
- Mesurer le temps de récupération
- Documenter la procédure de récupération (et la tester avec une autre personne !)
- Protéger les fichiers de dump (droits Unix/Windows, chiffrement si nécessaire)
- Être prêt en cas d'incident réel
# Sauvegardes des bases de données
Eléments à sauvegarder en BDD
Les données (DATA)
- Le contenu des tables (lignes)
La structure de la BDD (METADATA)
- Tables, vues, séquences, index
- Contraintes, clés primaires/étrangères
- Procédures stockées, triggers, packages
Autres
- Les utilisateurs, rôles, etc.
- Les droits des utilisateurs, des rôles, etc.
# Sauvegardes des bases de données
Types de sauvegarde
Locale : sauvegarde sur le serveur ou un disque externe, clé USB > rapide et facile mais à risque
Complète : toute la base, tout le schéma
Partielle : un ou plusieurs schémas, tables
Incrémentale (avec RMAN) : uniquement les blocs modifiés
Sauvegarde locale vs distante
Distante : sur un serveur ou cloud, plus sûr
# Sauvegardes des bases de données
La règle du 3-2-1
3 copies des données
2 supports de stockage différents
1 copie originale (celle en production, utilisée tous les jours)
2 copies de sauvegarde (dump Oracle, copie système, etc.)
- Réduit le risque de perte totale (par accident, bug, attaque…)
- Si l’original est corrompu, il y a encore deux chances de
récupération
Exemples : Disque local + NAS / Clé USB + cloud / SSD interne + disque dur externe
Si un support tombe en panne, il reste une autre technologie indépendante
# Sauvegardes des bases de données
La règle du 3-2-1
1 copie hors site
Emplacement différent physiquement du système principal
Exemple :
- Sur le cloud (Proton Drive, Google Drive, etc.)
- Sur un autre serveur distant
- Même un disque dur stocké ailleurs, sur un autre site, à la banque, chez soi, etc.
Pourquoi ?
- Protection contre les sinistres majeurs : incendie, inondation, vol, etc.
- Garantit qu’au moins une copie ne sera pas affectée par le même incident
# Sauvegardes des bases de données
La règle du 3-2-1
1 copie hors site
Attention notamment au ransomware :
Automatiser sans synchroniser, gérer les versions ou en lecture seule pour ne pas que les sauvegardes soit également affectés
Les bonnes pratiques restent valables : Tester les sauvegardes (régulièrement), avoir une procédure, etc.
# Sauvegardes des bases de données
Les outils (expdp/impdb et RMAN)
Aspect | expdp / impdp | RMAN (Recovery Manager) |
---|---|---|
🔍 Type de sauvegarde | Logique (objets, données, métadonnées SQL) | Physique (blocs disque de la base Oracle) |
🧠 Ce qui est sauvegardé | Tables, vues, schémas, procédures, données | Fichiers de données (.dbf), control file, redo logs |
🎯 Usage principal | Migration, duplication, tests, export partiel | Restauration intégrale après crash (niveau bas) |
💾 Format | Fichier .dmp (lisible uniquement par Oracle) | Fichiers binaires internes Oracle |
🔄 Restauration partielle | ✅ Oui (table, schéma, données spécifiques) | ❌ Non (base complète ou tablespace uniquement) |
🛡️ Protection contre crash | ❌ Non, pas suffisant seul | ✅ Oui, complet + gestion des journaux |
🔧 Facilité d’utilisation | Simple pour dev/test, scriptable | Plus complexe, réservé à la prod ou aux DBA |
# Sauvegardes des bases de données
Les outils (expdp/impdb et RMAN)
Quand expdp/impdp
suffit :
- Applications simples ou non critiques
- Besoin uniquement de la structure et des données
- Pas besoin de rejouer des transactions / garder les journaux des erreurs, logs, etc.
- Exemple : petite application interne, site vitrine, maquettes, projets de tests, etc.
Quand RMAN est nécessaire :
- Données critiques ou volumineuses
- Base utilisée 24/7 (avec journalisation active)
- Besoin de continuité de service / reprise après sinistre
- Exemple : ERP, base d’un hôpital, d’une banque, etc.
# Sauvegardes des bases de données
Commandes expdp / impdb
Commande pour export :
Exporter un schéma
Commande pour import :
expdp system/manager@xepdb1 SCHEMAS=magasin DIRECTORY=EXPORT_DIR DUMPFILE=magasin.dmp LOGFILE=export_magasin.log
impdp system/manager@xepdb1 SCHEMAS=magasin DIRECTORY=EXPORT_DIR DUMPFILE=magasin.dmp LOGFILE=magasin_import.log
Base entière (avec users, droits, etc)
Commande pour export :
Commande pour import :
expdp system/manager@xepdb1 FULL=Y DIRECTORY=EXPORT_DIR DUMPFILE=full_db.dmp LOGFILE=full.log
impdp system/manager@xepdb1 FULL=Y DIRECTORY=EXPORT_DIR DUMPFILE=full.dmp LOGFILE=magasin_import.log
# Sauvegardes des bases de données
Commandes expdp / impdb
Restaurer certaines tables uniquements
Commande pour import :
impdp magasin/magasin@xepdb1 TABLES=magasin.produits,magasin.commandes DIRECTORY=EXPORT_DIR DUMPFILE=magasin.dmp LOGFILE=import_tables.log
Uniquement les données ou la structure
Commande pour import de la structure uniquement :
impdp magasin/magasin@xepdb1 TABLES=produits DIRECTORY=EXPORT_DIR DUMPFILE=magasin.dmp LOGFILE=import_ddl_only.log CONTENT=METADATA_ONLY
Commande pour import des données uniquement :
impdp magasin/magasin@xepdb1 TABLES=produits DIRECTORY=EXPORT_DIR DUMPFILE=magasin.dmp LOGFILE=import_ddl_only.log CONTENT=DATA_ONLY
# Sauvegardes des bases de données
Planifier des sauvegardes automatiques
Généralement, les sauvegardes sont automatisées.
Voici le processus pour le faire automatiquement avec expdp :
#!/bin/bash
# === Config personnalisable ===
ORACLE_USER="system"
ORACLE_PASS="manager"
ORACLE_SVC="xepdb1"
EXPORT_DIR="EXPORT_DIR"
DUMP_PATH="/opt/exports"
RETENTION_DAYS=7
# === Générer timestamp ===
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
DUMPFILE="full_export_${TIMESTAMP}.dmp"
LOGFILE="full_export_${TIMESTAMP}.log"
# === Lancer l'export FULL ===
expdp ${ORACLE_USER}/${ORACLE_PASS}@${ORACLE_SVC} \
FULL=Y \
DIRECTORY=${EXPORT_DIR} \
DUMPFILE=${DUMPFILE} \
LOGFILE=${LOGFILE}
# === Nettoyage des vieux dumps ===
find "${DUMP_PATH}" -type f -name "full_export_*.dmp" -mtime +${RETENTION_DAYS} -exec rm -f {} \;
find "${DUMP_PATH}" -type f -name "full_export_*.log" -mtime +${RETENTION_DAYS} -exec rm -f {} \;
Création d'un script qui utilise la commande expdb :
Exécuter le script automatiquement via cron ou planificateur Windows
crontab -e 0 2 * * * /opt/scripts/oracle_full_export.sh
# Sauvegardes des bases de données

Exercice 5.1
Exercice de sauvegarde et restauration
Exercice sauvegarde
# Modification d'un schéma de BDD
Modification d'un schéma de BDD
Objectifs
- Modifier la structure d’une base existante
- LDD
- Migrer des données vers une nouvelle table ou nouveau schéma
- Garantir l’intégrité et l’exhaustivité des données
# Modification d'un schéma de BDD
Modification d'un schéma
LDD - Langage de Définition de Données : permet de créer, modifier ou supprimer la structure d’une base
Commandes utiles
- ALTER TABLE
- ADD COLUMN
- DROP COLUMN
- MODIFY COLUMN
- RENAME COLUMN
- ADD CONSTRAINT
# Modification d'un schéma de BDD
ALTER TABLE produits ADD nbr_stock_pro INT;
Commande ADD COLUMN
Exemple de add column pour ajouter le nombre de produits en stock :
ALTER TABLE produits DROP COLUMN description_pro;
Commande DROP COLUMN
Exemple pour supprimer la colonne description :
ALTER TABLE produits MODIFY nom_pro VARCHAR(255);
Commande MODIFY COLUMN
Modifier la colonne nom pour augmenter la longueur à 255 caractères
Commande ALTER TABLE
ALTER TABLE produits
{...}
Suivi des modifications souhaitées (voir points ci-dessous)
# Modification d'un schéma de BDD
ALTER TABLE produits RENAME COLUMN nom_pro TO appelation_pro;
Commande RENAME COLUMN
Renommer nom_pro en appelation_pro :
ALTER TABLE clients ADD CONSTRAINT ct_nn_email_cli CHECK (email_cli IS NOT NULL);
Commande ADD CONSTRAINT
Ajouter une contrainte non null sur l'email dans la table clients :
Autres commandes utiles
Copier une table et ses données :
Copier les données d'une table dans une autre :
CREATE TABLE produits_test AS SELECT * FROM produits;
INSERT INTO produits_test SELECT * FROM produits;
-- OU seulement certains champs
INSERT INTO produits_test (id_produit, nom, prix, id_categorie)
SELECT id_produit, nom, prix, id_categorie FROM produits;
# Modification d'un schéma de BDD
Attention aux modifications
-
Faire une sauvegarde : Avant toute opération de type
ALTER TABLE
, exporter la table ou la base -
Vérifier les contraintes (notamment de clés étrangères) : Modifier ou supprimer une colonne liée à contrainte peut causer une erreur SQL ou casser une relation
-
Impact sur les applications connectées : Un champ renommé ou supprimé peut casser une application qui l’utilise
-
Communication avec les développeurs ou tests de validation indispensables
-
# Modification d'un schéma de BDD
Attention aux modifications
-
Modifications destructrices (avec pertes de données)
-
Diminuer la taille d’un champ : Tronque le champ ou provoque une erreur (c'est le cas en oracle)
-
Changement de type : Oracle peut lever une erreur de conversion si le contenu ne correspond pas
-
Suppression de colonne : Suppression immédiate et irréversible dans Oracle
-
# Modification d'un schéma de BDD
Comment procéder ?
- On veut éviter de modifier brutalement une table en production.
- Faire une sauvegarde de la base de données
- Monter la base de données en test
- Faire les modifications sur la base de données en test
- Dupliquer ou modifier la table et insérer les données
-
Tester l'intégrité : Même nombre de lignes, aucune erreur, etc.
-
Documenter les changements
-
Tester les applications, communiquer avec les développeurs
# Sauvegardes des bases de données

Exercice 6.1
Modification de la base de données
Exercice de modification de la BDD
Merci de votre attention 😊
Bonne fin de journée !



M106 - Jour 7
By paranor
M106 - Jour 7
- 20