Cours complet sur Oracle DBA et Linux
Table des matières
1. Fondamentaux d'Oracle DBA
2. Architecture d'Oracle Database
3. Installation et configuration
4. Gestion des bases de données
5. Sauvegarde et restauration
6. Performance et optimisation
7. Sécurité des bases de données
8. Fondamentaux de Linux
9. Administration système Linux
10. Shell scripting
11. Questions fréquentes en entretien
12. Ressources complémentaires
Fondamentaux d'Oracle DBA
Rôle du DBA Oracle
Responsabilités principales : Installation, configuration, mise à jour, sauvegarde, restauration,
sécurisation et optimisation des bases de données Oracle
Objectifs : Garantir la disponibilité, les performances et la sécurité des bases de données
Types de DBA :
DBA système (installation, configuration)
DBA application (développement, optimisation)
DBA production (surveillance, maintenance)
Versions d'Oracle Database
Versions principales : 11g, 12c, 18c, 19c, 21c
Éditions :
Enterprise Edition (EE) - fonctionnalités complètes
Standard Edition (SE2) - fonctionnalités limitées
Express Edition (XE) - gratuite, capacités réduites
Concepts clés
Instance : Processus et mémoire alloués pour accéder à une base de données
Base de données : Ensemble de fichiers physiques stockant les données
Schéma : Collection d'objets appartenant à un utilisateur
Tablespace : Unité logique de stockage dans une base de données Oracle
Architecture d'Oracle Database
Structure de mémoire
System Global Area (SGA) :
Mémoire partagée entre tous les processus
Composants principaux : Buffer Cache, Shared Pool, Large Pool, Java Pool, Streams Pool
Buffer Cache : stocke les blocs de données lus depuis les fichiers de données
Shared Pool : stocke le SQL partagé et le dictionnaire de données
Program Global Area (PGA) :
Mémoire privée allouée à chaque processus serveur
Contient les données de tri et les variables de session
Processus d'arrière-plan
PMON (Process Monitor) : Nettoie les processus serveur défaillants
SMON (System Monitor) : Récupération d'instance, nettoyage des segments temporaires
DBWR (Database Writer) : Écrit les blocs modifiés du buffer cache vers les fichiers de données
LGWR (Log Writer) : Écrit les entrées de journal redo du buffer redo log vers les fichiers redo log
CKPT (Checkpoint) : Met à jour l'en-tête des fichiers de données lors des points de contrôle
ARCn (Archiver) : Archive les fichiers redo log remplis
Structure de stockage
Fichiers de contrôle : Enregistrent la structure physique de la base de données
Fichiers de données : Stockent les données utilisateur
Fichiers redo log : Enregistrent toutes les modifications apportées à la base de données
Fichiers d'archive log : Copies des fichiers redo log remplis
Fichiers de paramètres : Paramètres d'initialisation pour l'instance (pfile/spfile)
Installation et configuration
Prérequis pour l'installation
Matériel : CPU, RAM, espace disque selon les besoins
Système d'exploitation : Versions compatibles de Linux (Oracle Linux, RHEL, etc.)
Paquets système : libaio, libnsl, etc.
Configuration du système : Paramètres kernel, limites de ressources
Méthodes d'installation
Oracle Universal Installer (OUI) : Installation graphique
Installation silencieuse : Utilisation de fichiers de réponse
Oracle RAC : Installation en cluster pour haute disponibilité
Configuration post-installation
Oracle Net Configuration Assistant : Configuration du réseau
Database Configuration Assistant (DBCA) : Création de bases de données
Configuration des listeners : listener.ora, tnsnames.ora
Configuration des paramètres d'initialisation : Modification du spfile
Gestion des bases de données
Création d'une base de données
Méthodes :
Utilisation de DBCA (Database Configuration Assistant)
Scripts SQL manuels (CREATE DATABASE)
Commandes SQL*Plus
Étapes clés :
Planification (taille, structure, paramètres)
Création de fichiers de paramètres
Allocation d'espace de stockage
Création de tablespaces et utilisateurs
Démarrage et arrêt
États d'une instance :
SHUTDOWN : Arrêtée
NOMOUNT : Instance démarrée, base non montée
MOUNT : Base montée, non ouverte
OPEN : Base ouverte et accessible
Commandes de démarrage :
STARTUP : Démarrage complet
STARTUP NOMOUNT : Démarre l'instance sans monter la base
STARTUP MOUNT : Démarre l'instance et monte la base
STARTUP FORCE : Force le démarrage après un arrêt anormal
Commandes d'arrêt :
SHUTDOWN NORMAL : Attend que les sessions se terminent
SHUTDOWN IMMEDIATE : Termine les transactions en cours
SHUTDOWN TRANSACTIONAL : Attend la fin des transactions
SHUTDOWN ABORT : Arrêt immédiat sans nettoyage
Gestion des objets de la base de données
Tablespaces :
Création : CREATE TABLESPACE
Modification : ALTER TABLESPACE
Suppression : DROP TABLESPACE
Types : permanent, temporaire, undo
Tables, index et contraintes :
Création, modification, suppression
Gestion des clés primaires et étrangères
Partitionnement des tables
Utilisateurs et privilèges :
Création d'utilisateurs : CREATE USER
Attribution de privilèges : GRANT
Révocation de privilèges : REVOKE
Rôles et profils de sécurité
Sauvegarde et restauration
Types de sauvegardes
Sauvegarde physique :
Cold backup (base arrêtée)
Hot backup (base en fonctionnement)
RMAN (Recovery Manager)
Copie d'image du système de fichiers
Sauvegarde logique :
Export/Import (expdp/impdp - Data Pump)
SQL*Loader
Recovery Manager (RMAN)
Avantages : Gestion des blocs corrompus, déduplication, compression
Configuration : Catalogue de récupération, canaux, politiques de rétention
Commandes principales :
BACKUP DATABASE : Sauvegarde complète
BACKUP INCREMENTAL : Sauvegarde incrémentielle
BACKUP ARCHIVELOG : Sauvegarde des journaux d'archives
RESTORE DATABASE : Restauration
RECOVER DATABASE : Récupération
Stratégies de sauvegarde
Sauvegarde complète : Toute la base de données
Sauvegarde incrémentielle : Uniquement les blocs modifiés
Sauvegarde différentielle : Changements depuis la dernière sauvegarde complète
Sauvegarde cumulative : Changements depuis la dernière sauvegarde incrémentielle
Récupération de la base de données
Types de récupération :
Complete recovery (récupération complète)
Incomplete recovery (récupération incomplète)
Point-in-time recovery (PITR)
Flashback Database
Scénarios de récupération :
Perte de fichiers de données
Perte de fichiers de contrôle
Perte de fichiers redo log
Corruption de blocs de données
Performance et optimisation
Outils de surveillance
Enterprise Manager : Interface graphique de gestion
Automatic Workload Repository (AWR) : Collecte de statistiques
Automatic Database Diagnostic Monitor (ADDM) : Analyse des performances
Active Session History (ASH) : Historique des sessions actives
SQL Tuning Advisor : Recommandations d'optimisation SQL
Optimisation des requêtes SQL
Plan d'exécution : EXPLAIN PLAN, AUTOTRACE
Indices : Types, création, maintenance
Statistiques : GATHER_STATS, AUTO_STATS_GATHERING
Hints SQL : Directives pour l'optimiseur
Gestion des ressources
Database Resource Manager : Allocation des ressources
Mécanismes de mise en cache : Buffer cache, result cache
Partitionnement : Amélioration des performances pour les grandes tables
Parallélisme : Exécution parallèle des requêtes
Résolution des problèmes courants
Verrouillage et blocage : Détection et résolution
Sessions longues : Identification et gestion
Requêtes lentes : Analyse et optimisation
Problèmes de mémoire : ORA-04031 (mémoire insuffisante)
Sécurité des bases de données
Authentification et autorisation
Méthodes d'authentification : Mot de passe, OS, PKI, Kerberos
Gestion des utilisateurs : Création, modification, suppression
Privilèges système et objets : Administration vs accès aux données
Rôles : Regroupement de privilèges
Contrôle d'accès
Virtual Private Database (VPD) : Sécurité au niveau des lignes
Oracle Label Security : Classification des données
Transparent Data Encryption (TDE) : Chiffrement des données
Data Redaction : Masquage dynamique des données sensibles
Audit et conformité
Audit standard : Suivi des actions utilisateur
Audit unifié : Audit consolidé
Audit de valeur fine : Détection des modifications de données
Journaux d'audit : Stockage et gestion
Meilleures pratiques de sécurité
Principe du moindre privilège
Rotation des mots de passe
Patchs de sécurité réguliers
Chiffrement des sauvegardes
Fondamentaux de Linux
Architecture Linux
Noyau (Kernel) : Cœur du système d'exploitation
Shell : Interface de commande (Bash, Ksh, Zsh)
Système de fichiers : Hiérarchie, types (ext4, xfs)
Processus et services : Gestion, surveillance
Administration de base
Gestion des utilisateurs :
Création : useradd , adduser
Modification : usermod
Suppression : userdel
Changement de mot de passe : passwd
Gestion des groupes :
Création : groupadd
Modification : groupmod
Suppression : groupdel
Gestion des fichiers :
Navigation : cd , ls , pwd
Manipulation : cp , mv , rm , mkdir
Permissions : chmod , chown , chgrp
Commandes essentielles pour DBA Oracle
Gestion système :
top , htop : Surveillance des processus
free : Affichage de la mémoire disponible
df , du : Utilisation de l'espace disque
ps , pgrep : Informations sur les processus
Gestion réseau :
ifconfig , ip : Configuration réseau
netstat , ss : Connexions réseau
ping , traceroute : Diagnostic réseau
nslookup , dig : Requêtes DNS
Gestion des journaux :
tail , head : Affichage des parties de fichiers
grep , find : Recherche dans les fichiers
less , more : Affichage paginé
journalctl : Visualisation des journaux système
Administration système Linux
Gestion des services
systemd : Système d'initialisation moderne
systemctl start/stop/restart/status
systemctl enable/disable
Création d'unités systemd
Processus d'amorçage :
Séquence de démarrage
Niveaux d'exécution / targets
Gestion de GRUB
Gestion des ressources
Configuration matérielle :
CPU : lscpu , paramètres kernel
Mémoire : limites, swap, huge pages
Disques : partitionnement, LVM, RAID
Limites système :
/etc/security/limits.conf : Limites utilisateur
Configuration des paramètres noyau : sysctl
Réglage des paramètres pour Oracle
Stockage et systèmes de fichiers
Gestion des disques :
Partitionnement : fdisk , parted
LVM : pvcreate , vgcreate , lvcreate
Formatage : mkfs
Montage et démontage :
mount , umount
Configuration dans /etc/fstab
Options de montage pour les fichiers Oracle
Types de systèmes de fichiers :
ext4 : Standard pour Linux
xfs : Haute performance
ASM : Système de fichiers Oracle spécialisé
Mise en réseau
Configuration réseau :
Configuration IP statique/dynamique
Tables de routage
Pare-feu : iptables , firewalld
Résolution de noms :
Configuration DNS : /etc/resolv.conf
Fichiers hosts : /etc/hosts
Configuration pour Oracle TNS
Shell scripting
Bases du scripting Bash
Structure d'un script :
Shebang ( #!/bin/bash )
Variables et environnement
Commentaires et documentation
Variables et paramètres :
Définition et utilisation
Variables d'environnement
Paramètres positionnels ($1, $2...)
Opérateurs et expressions :
Arithmétiques : + , - , * , /
Comparaison : -eq , -ne , -gt , -lt
Logiques : && , || , !
Structures de contrôle
Conditionnelles :
bash
if [ condition ]; then
commandes
elif [ condition ]; then
commandes
else
commandes
fi
Boucles :
bash
# Boucle for
for var in liste; do
commandes
done
# Boucle while
while [ condition ]; do
commandes
done
Case :
bash
case $var in
motif1)
commandes
;;
motif2)
commandes
;;
*)
commandes par défaut
;;
esac
Scripts pour l'administration Oracle
Surveillance des bases de données :
Vérification de l'espace disque
Surveillance des processus Oracle
Alerte sur les erreurs dans les journaux
Automatisation des sauvegardes :
Scripts RMAN
Validation des sauvegardes
Rotation des fichiers de sauvegarde
Exemples de scripts utiles :
bash
#!/bin/bash
# Script de vérification d'espace tablespace
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=ORCL
$ORACLE_HOME/bin/sqlplus -s / as sysdba << EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT tablespace_name || ' est à ' ||
ROUND((used_space*100)/tablespace_size,2) || '% plein.'
FROM dba_tablespace_usage_metrics
WHERE ROUND((used_space*100)/tablespace_size,2) > 80;
EXIT;
EOF
Questions fréquentes en entretien
Questions techniques Oracle DBA
1. Comment démarrer une base de données en mode restreint ?
sql
STARTUP RESTRICT;
-- ou
ALTER SYSTEM ENABLE RESTRICTED SESSION;
2. Quelles sont les étapes pour migrer une base de données vers une nouvelle version ?
Évaluation de compatibilité
Sauvegarde complète
Installation du nouveau logiciel
Exécution de Pre-Upgrade Information Tool
Mise à niveau (DBUA ou manuelle)
Post-installation et tests
3. Comment résoudre un problème d'espace dans un tablespace ?
Identifier le tablespace avec DBA_TABLESPACE_USAGE_METRICS
Ajouter un datafile : ALTER TABLESPACE ts_name ADD DATAFILE...
Redimensionner un datafile existant : ALTER DATABASE DATAFILE... RESIZE...
Activer l'autoextend : ALTER DATABASE DATAFILE... AUTOEXTEND ON...
4. Expliquez la différence entre une sauvegarde à chaud et à froid
Sauvegarde à froid : Base arrêtée, cohérente, simple mais indisponibilité
Sauvegarde à chaud : Base en fonctionnement, mode ARCHIVELOG nécessaire, pas d'interruption
de service
Questions techniques Linux
1. Comment vérifier l'utilisation CPU et mémoire en ligne de commande ?
bash
# CPU et mémoire en temps réel
top
# Utilisation mémoire détaillée
free -h
# Statistiques CPU
mpstat
2. Comment configurer les paramètres kernel pour Oracle ?
Éditer /etc/sysctl.conf pour les paramètres comme :
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
Appliquer avec sysctl -p
3. Comment diagnostiquer un problème de connectivité réseau ?
bash
# Vérifier la résolution DNS
nslookup hostname
# Tester la connectivité
ping hostname
# Vérifier l'ouverture des ports
netstat -an | grep 1521
# Tester la connexion au listener Oracle
tnsping service_name
4. Comment automatiser une tâche récurrente sous Linux ?
Utilisation de cron :
bash
# Éditer le crontab
crontab -e
# Format : minute heure jour mois jour_semaine commande
# Exemple : tous les jours à 2h du matin
0 2 * * * /path/to/backup_script.sh
Questions sur la résolution de problèmes
1. Comment diagnostiquer une base de données lente ?
Vérifier les wait events avec V$SYSTEM_EVENT
Analyser les rapports AWR/ADDM
Identifier les sessions consommatrices avec V$SESSION
Examiner les plans d'exécution des requêtes lentes
2. Comment récupérer une base de données après une panne de serveur ?
Vérifier l'état du matériel
Restaurer le système d'exploitation si nécessaire
Restaurer les fichiers Oracle (contrôle, données, redo logs)
Utiliser RMAN pour la restauration et la récupération
Valider l'intégrité de la base
3. Comment gérer un problème de verrouillage de table ?
sql
-- Identifier les verrous et sessions
SELECT l.session_id, s.serial#, s.username, s.machine, s.program,
l.lock_type, l.mode_held, l.mode_requested, o.object_name
FROM v$lock l, v$session s, dba_objects o
WHERE l.session_id = s.sid
AND l.lock_id1 = o.object_id;
-- Terminer une session bloquante
ALTER SYSTEM KILL SESSION 'sid,serial#';
Ressources complémentaires
Documentation officielle
Oracle Database Documentation
Oracle Linux Documentation
Oracle Support
Livres recommandés
"Oracle Database 19c Administration Workshop" - Oracle
"Expert Oracle Database Architecture" - Thomas Kyte
"RMAN Recipes for Oracle Database" - Darl Kuhn
"Linux Administration: A Beginner's Guide" - Wale Soyinka
Certification Oracle
Oracle Database Administration (OCA, OCP, OCM)
Parcours de certification et préparation
Examens pratiques et ressources d'étude
Communautés et forums
Oracle Community
Stack Overflow
DBA Stack Exchange
Oracle-L Mailing List