Oracle – Administration d’une infrastructure de base de données
Gestion des authentifications et des autorisations des utilisateurs
Authentification des connexions à Oracle
L’authentification consiste à vérifier l’identité d’un utilisateur Oracle.
Oracle propose plusieurs méthodes :
Authentification interne (IDENTIFIED BY password)
L’utilisateur est authentifié par Oracle à l’aide d’un mot de passe.
CREATE USER kara IDENTIFIED BY StrongPass#2025;
Authentification externe (OS Authentication)
L’utilisateur est authentifié par le système d’exploitation :
CREATE USER kara IDENTIFIED EXTERNALLY;
Authentification via un répertoire (LDAP / Active Directory)
Utilise Oracle Internet Directory ou Oracle Unified Directory.
CREATE USER kara IDENTIFIED GLOBALLY AS
'uid=kara,cn=users,dc=example,dc=com';
Authentification par proxy (Application Proxy)
Une application se connecte en tant qu’utilisateur, sans connaître son mot de passe.
ALTER USER app CONNECT THROUGH kara;
Autorisation des comptes de connexion pour accéder aux bases de données
Une fois authentifié, l’utilisateur doit être autorisé à accéder aux ressources.
Attribution de quota sur un tablespace
ALTER USER kara QUOTA 50M ON USERS;
Rôle par défaut
GRANT CONNECT, RESOURCE TO kara;
Définir le profil (mot de passe, ressources, verrouillage)
ALTER USER kara PROFILE secure_profile;
Autorisation entre serveurs (Database Links)
Permet à un utilisateur de se connecter à une autre base Oracle distante.
Création d’un database link
CREATE DATABASE LINK link_remote
CONNECT TO remote_user IDENTIFIED BY pass123
USING 'remote_db';
Utilisation
SELECT * FROM employes@link_remote;
Bases de données partiellement contenues (Pluggable Databases – PDB)
Oracle Multitenant introduit les CDB (Container Database) et PDB (Pluggable Database).
Utilisateurs CDB vs PDB
Type d’utilisateur Emplacement Accès
Common User (C##user) CDB et toutes les PDB Global
Local User Une seule PDB Local
Création d’un utilisateur local dans une PDB
ENTREZ LE NOM UTILISATEUR : /AS SYSDBA
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
//AFFICHER LA VUE
SQL> DESC DBA_PDBS
SQL> SELECT PDB_ID, PDB_NAME FROM DBA_PDBS;
//MODIFIER LA SESSION POUR ORACLEPDB CAR CDB$ROOT NE MARCHE PAS
SQL> ALTER SESSION SET CONTAINER=ORACLEPDB;
SQL> SHOW CON_NAME
CON_NAME
------------------------------
ORACLEPDB
SQL> CREATE USER KARA IDENTIFIED BY ORACLE;
CREATE USER KARA IDENTIFIED BY ORACLE
*
ERREUR Ó LA LIGNE 1 :
ORA-01109: BASE DE DONNÚES NON OUVERTE
//DEMARRER LA BD PLUGGABLE
SQL> STARTUP
BASE DE DONNÚES PLUGGABLE OUVERTE.
SQL> CREATE USER KARA IDENTIFIED BY ORACLE;
UTILISATEUR CRÚÚ.
ALTER SESSION SET CONTAINER = PDB1;
CREATE USER kara IDENTIFIED BY pass;
GRANT CONNECT TO kara;
Affectation de rôles serveur et de base de données
Création d’un rôle
CREATE ROLE role_dev;
Attribution de privilèges à un rôle
GRANT CREATE TABLE, CREATE VIEW TO role_dev;
Attribution du rôle à un utilisateur
GRANT role_dev TO kara;
Rôle par défaut
ALTER USER kara DEFAULT ROLE role_dev;
Autoriser les utilisateurs à accéder aux objets
Oracle distingue privilèges système et privilèges d’objet.
Privilèges sur objets (tables, vues, procédures, séquences)
Exemples :
GRANT SELECT ON [Link] TO kara;
GRANT INSERT, UPDATE ON [Link] TO kara;
GRANT EXECUTE ON hr.pkg_gestion TO kara;
Avec clause WITH GRANT OPTION
Permet à l’utilisateur de redonner ce privilège.
GRANT SELECT ON [Link] TO kara WITH GRANT OPTION;
Autoriser les utilisateurs à exécuter du code
Les objets de type PL/SQL (procédures, fonctions, packages) nécessitent le privilège
EXECUTE :
GRANT EXECUTE ON [Link] TO kara;
Pour du code dynamique :
GRANT CREATE PROCEDURE TO kara;
Résumé pédagogique
Thème Élément clé
Authentification interne, OS, LDAP, proxy
Autorisation rôles, privilèges système/objet
Multitenant CDB/PDB, common/local users
Objets SELECT, INSERT, EXECUTE
Serveurs Database links
Sécurité profils, quotas, auditing
Configuration des permissions au niveau schéma
Dans Oracle, le schéma correspond à un utilisateur.
On peut accorder des privilèges précis sur les objets contenus dans ce schéma.
Donner des droits sur un schéma entier (méthode recommandée : via un rôle)
Création d’un rôle :
CREATE ROLE role_app;
Attribution des privilèges sur tous les objets d’un schéma :
BEGIN
FOR t IN (
SELECT table_name FROM dba_tables WHERE owner='HR'
) LOOP
EXECUTE IMMEDIATE 'GRANT SELECT, INSERT, UPDATE, DELETE ON
HR.'||t.table_name||' TO role_app';
END LOOP;
END;
/
Assigner le rôle à un utilisateur :
GRANT role_app TO utilisateur1;
Droits sur les objets individuels
GRANT SELECT, INSERT ON [Link] TO utilisateur1;
GRANT EXECUTE ON HR.PKG_GESTION TO utilisateur1;
Autorisations d’accès aux ressources
Les ressources Oracle comprennent tablespaces, CPU, sessions, etc.
Quota sur un tablespace
ALTER USER utilisateur1 QUOTA 300M ON USERS;
Profils de ressources (limites CPU, session, tentatives de connexion)
CREATE PROFILE profil_strict LIMIT
SESSIONS_PER_USER 2
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 60;
Assigner le profil :
ALTER USER utilisateur1 PROFILE profil_strict;
Autoriser les utilisateurs à accéder aux objets
Tables
GRANT SELECT, INSERT, UPDATE, DELETE ON [Link] TO user;
Vues
GRANT SELECT ON schema.vue_employes TO user;
Séquences
GRANT SELECT ON schema.seq_emp TO user;
Index
Aucun privilège direct : dépend des droits sur la table.
Autoriser les utilisateurs à exécuter du code (PL/SQL)
Pour procédures, fonctions, packages :
GRANT EXECUTE ON [Link] TO user;
Pour la création de code :
GRANT CREATE PROCEDURE TO user;
Protection des données par cryptage et audit
Oracle propose :
Transparent Data Encryption (TDE) : Chiffre automatiquement les données dans
les tablespaces ou colonnes.
Auditing : Trace les actions des utilisateurs.
Options d’audit de l’accès aux données dans Oracle
Deux types principaux :
Unified Auditing (recommandé Oracle 12c+)
Centralise tous les audits dans une seule politique.
Types d’actions auditables :
Connexions / déconnexions
Sélections, insertions, mises à jour, suppressions
Accès aux objets sensibles
Appels de procédures PL/SQL
Erreurs de connexion
Actions administratives (GRANT, CREATE USER)
Traditional Auditing
Encore utilisé sur anciennes versions :
AUDIT SELECT TABLE, INSERT TABLE, UPDATE TABLE BY user BY ACCESS;
Implémentation de l’audit Oracle (Unified Auditing)
Créer une politique d’audit
CREATE AUDIT POLICY audit_employes
ACTIONS SELECT, INSERT, UPDATE, DELETE ON [Link];
Activer la politique
AUDIT POLICY audit_employes;
Auditer les connexions
AUDIT POLICY ora_logon_failures;
Auditor PL/SQL
CREATE AUDIT POLICY audit_code ACTIONS EXECUTE PROCEDURE;
AUDIT POLICY audit_code;
Gestion de l’audit Oracle
Consulter les journaux
Pour Unified Auditing :
SELECT * FROM UNIFIED_AUDIT_TRAIL;
Désactiver une politique
NOAUDIT POLICY audit_employes;
Supprimer une politique
DROP AUDIT POLICY audit_employes;
Purger les logs
BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
USE_LAST_ARCH_TS => TRUE
);
END;
/
Protection des données par cryptage
Transparent Data Encryption (TDE) – Chiffrement des colonnes
ALTER TABLE clients MODIFY (num_carte_credit ENCRYPT);
Chiffrement tablespace (TDE Tablespace Encryption)
ALTER TABLESPACE users ENCRYPTION ONLINE ENCRYPT;
Requiert :
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY
password;
Modèles de récupération (Recovery Models)
Oracle utilise Archivage :
Paramètre Description
NOARCHIVELOG Pas d’historique, pas de restauration point-in-time
ARCHIVELOG Historique complet, restauration avancée
Voir le mode :
ARCHIVE LOG LIST;
Stratégies de sauvegarde (RMAN)
Sauvegarde complète
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
Sauvegarde incrémentielle
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
Sauvegarde du controlfile
RMAN> BACKUP CURRENT CONTROLFILE;
Stratégies recommandées
Full weekly + incremental daily
Archive logs chaque heure
Sauvegarde des fichiers de configuration
Comprendre le fonctionnement du journal de transaction Oracle (Redo Log)
Le Redo Log enregistre toutes les modifications effectuées en base.
Types
Online Redo Logs
Archived Redo Logs
LGWR (Log Writer) écrit dans les Redo
DBWR (DB Writer) écrit dans les datafiles
Fonctionnement
1. L’utilisateur exécute une modification.
2. LGWR écrit l’entrée redo dans les redo logs.
3. DBWR écrit ensuite en mémoire → datafiles.
4. Les redo logs servent à rejouer les transactions en cas de crash.
Avantages
Récupération après crash
Restauration point-in-time (ARCHIVELOG obligatoire)
Planification d’une stratégie de sauvegarde dans Oracle
La stratégie dépend de :
Les exigences de l’entreprise
RTO (Recovery Time Objective)
RPO (Recovery Point Objective)
Durée maximale d’indisponibilité tolérée
Quantité acceptable de perte de données
Le mode de la base
NOARCHIVELOG : sauvegarde hors ligne uniquement, pas de récupération point-
in-time.
ARCHIVELOG : sauvegardes en ligne, restauration avancée.
Les composants à sauvegarder
Datafiles
Controlfile
SPFILE
Redo logs archivés
Paramètres RMAN
Types de sauvegardes
Sauvegarde complète
Incrémentielle (Level 0 / Level 1)
Sauvegarde des archives
Sauvegarde image copy
Snapshots (ASM / appliance)
Sauvegarde des bases de données dans Oracle
L’outil recommandé est RMAN (Recovery Manager).
Sauvegarde complète RMAN
RMAN> BACKUP DATABASE;
Sauvegarde avec les archives
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
. Sauvegarde incrémentielle
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
Sauvegarde du controlfile et SPFILE
RMAN> BACKUP CURRENT CONTROLFILE;
RMAN> BACKUP SPFILE;
Sauvegarde des journaux de transaction
En mode ARCHIVELOG :
RMAN> BACKUP ARCHIVELOG ALL;
On peut supprimer les archives automatiquement :
RMAN> DELETE ARCHIVELOG ALL BACKED UP 1 TIMES;
Gestion des sauvegardes de bases de données
Catalogage des sauvegardes
RMAN> CATALOG START WITH '/backups/';
Vérification
RMAN> VALIDATE DATABASE;
RMAN> VALIDATE BACKUPSET ALL;
Rapport des sauvegardes
RMAN> REPORT OBSOLETE;
RMAN> LIST BACKUP;
Suppression des sauvegardes anciennes
RMAN> DELETE OBSOLETE;
Travailler avec les options de sauvegarde
Sauvegarde compressée
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;
Sauvegarde encryptée
RMAN> SET ENCRYPTION ON IDENTIFIED BY 'MotDePasse';
RMAN> BACKUP DATABASE;
Sauvegardes incrémentielles cumulatives / différentielles
Cumulative : tout depuis le Level 0
Differential : seulement depuis la précédente Level 1
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Image Copy (facilement restaurable)
RMAN> BACKUP AS COPY DATABASE;
Restauration de bases de données
La restauration se fait en deux étapes :
1. RESTORE → copie les fichiers depuis la sauvegarde
2. RECOVER → applique les archives & redo logs
Exemple :
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
Comprendre le processus de restauration
RESTORE
Récupère les fichiers de la sauvegarde
Replace les datafiles manquants ou corrompus
RECOVER
Oracle applique les redo logs (archives + redo online)
Rejoue les transactions non écrites
OPEN RESETLOGS
Après une restauration point-in-time :
RMAN> ALTER DATABASE OPEN RESETLOGS;
Scénarios de restauration avancés
Restauration fichier datafile unique
RMAN> RESTORE DATAFILE 5;
RMAN> RECOVER DATAFILE 5;
Restauration tablespace
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
Perte du controlfile
RMAN :
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
Perte des redo logs
Restauration point-in-time obligatoire → RESETLOGS
Travailler avec un point de récupération temporel connu
Très utilisé en production (erreur utilisateur, suppression de table…).
Restauration jusqu’à une heure précise
RUN {
SET UNTIL TIME "TO_DATE('2025-01-27 14:05','YYYY-MM-DD HH24:MI')";
RESTORE DATABASE;
RECOVER DATABASE;
}
Restauration jusqu’à un SCN
RUN {
SET UNTIL SCN 345678901;
RESTORE DATABASE;
RECOVER DATABASE;
}
Restauration jusqu’à un sequence de log
RUN {
SET UNTIL SEQUENCE 1234;
RESTORE DATABASE;
RECOVER DATABASE;
}
Restaurations des bases de données systèmes et de fichiers individuels
Restaurer SYSTEM, SYSAUX
RMAN> RESTORE TABLESPACE SYSTEM;
RMAN> RECOVER TABLESPACE SYSTEM;
Restaurer UNDO
RMAN> RESTORE TABLESPACE undotbs1;
RMAN> RECOVER TABLESPACE undotbs1;
Restaurer un fichier SPFILE
RMAN> RESTORE SPFILE;
Restaurer PDB en architecture multitenant
RMAN> RESTORE PLUGGABLE DATABASE PDB1;
RMAN> RECOVER PLUGGABLE DATABASE PDB1;
Automatisation de la gestion Oracle
L’automatisation peut se faire via :
✔️ RMAN SCRIPTS
Scripts stockés :
RMAN> CREATE SCRIPT backup_full {
BACKUP DATABASE PLUS ARCHIVELOG;
}
✔️ CRON / Scheduler OS
Exemple Linux :
0 2 * * * rman target / @backup_full.rman
✔️ Oracle Scheduler
Planification interne Oracle :
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'backup_nightly',
job_type => 'EXECUTABLE',
job_action => '/bin/sh /u01/backup/[Link]',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY;BYHOUR=02;BYMINUTE=00',
enabled => TRUE
);
END;
/
✔️ Automatisation des purges
RMAN> DELETE OBSOLETE;