Vous êtes sur la page 1sur 176

Administration Oracle 12c

Vahatriniaina - 2020
Objectifs

 Architecture d’Oracle
 Installation en environnement Windows
 Configuration d’Oracle Net
 Arrêt et démarrage d’une instance Oracle
 Création d’une nouvelle base des données
 Gestion de la mémoire
 Gestion du stockage
 Gestion de la sécurité
 Sauvegardes et restaurations
Architecture d’Oracle 12c

 VERSION
 Enterprise Edition
 Standard Edition
 Personal Edition
 Architecture commune pour les 03 éditions
Architecture d’Oracle 12c

 STANDARD EDITION
 Toutes les fonctionnalités de base
 Limité à 04 processeurs
 Standard Edition One : 02 processeurs
 PERSONAL EDITION
 Utilisation Personnelle
 Mono licence
 Destinée au développeur
 Même fonctionnalité que l’Enterprise Edition
Architecture d’Oracle 12c

 ENTERPRISE EDITION
 Oracle Real application clusters (RAC)
 Oracle partitioning
 Oracle advanced security
 Oracle Diagnostics Pack , Oracle tuning Pack
 Oracle OLAP et Oracle Advanced Analytics
 Oracle Real Application testing
 Oracle Advanced Compression
 Oracle Multitenant
Architecture d’Oracle 12c

 INSTANCE
 Mémoire partagée
 Ensemble de processus
 ORACLE_SID
 BASE DES DONNÉES
 Ensemble des fichiers physiques
 Ouverte par une seule instance
Architecture d’Oracle 12c
Architecture d’Oracle 12c

 ORACLE BASE
 Répertoire d’installation des produits Oracle
 ORACLE_BASE
 ORACLE HOME
 Répertoire d’installation d’un produit Oracle
 Peut être plusieurs dans une même OS
 ORACLE_HOME
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Un ou plusieurs fichiers des données
 Au minimum 01 fichier de contrôle
 Au minimum 02 groupes de fichiers de journalisation
 A un nom (défini lors de la création)
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Fichier de contrôle
 Nom de la base des données
 Emplacement des autres fichiers de la base des données (fichiers des données et fichiers de journalisation)-
 Informations sur les points de reprise
…
 Mis à jour par Oracle
 Si introuvable, la base des données ne peut pas être ouverte (NOMOUNT)
 Il faut avoir des copies de sauvegarde
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Fichier de journalisation (redo log)
 Enregistrement toutes les modifications apportées à la base de données
 Ecrits en groupe de manière circulaire (périodiquement écrasés)
 Minimum 2 groupes, composé d’un ou plusieurs membres (minimum un)
 Créé lors de la création de la base de données
 Utilisés lors de la récupération
 Il faut activer le mécanisme d’archivage
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Fichier de données
 Contiennent les données de la base (tables, index)
 Regroupés (logiquement) en tablespaces
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Fichier de données
 Tablespace : unité logique de stockage
 SYSTEM et SYSAUX réservés pour ORACLE
 Découpés en blocs d’une taille données (4Ko, 8Ko,…)
 Segment :
 Appartient à un tablespace et constitué d’extensions (extent)
 Segment de table
 Segment d’index
 Segment d’annulation : permet d’annuler une transaction
 Segment temporaire : pour le tri
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Fichier de données
Architecture d’Oracle 12c

 BASE DES DONNÉES


 Schéma
 Ensemble des objets qui appartiennent à un utilisateur
 Table, vue, synonyme, index, sequence, pl/sql, …
Architecture d’Oracle 12c

 INSTANCE
 Zone de mémoire partagé System Global Area (SGA)
 Ensemble des processus d’arrière-plan (Background process)
 Ensemble des processus serveur (Server process)
Architecture d’Oracle 12c

 INSTANCE
 Zone de mémoire partagé System Global Area (SGA)
 Partagé par les différents processus de l’instance
 Allouée au démarrage et libérée lors de l’arrêt
 Dimensionnée par un ensemble de paramètres définis dans le fichier de paramètres
 Depuis la version 9, redimensionnable à chaud
 Depuis la version 10, certaines structures de la SGA peuvent être gérées automatiquement
 Plus la SGA et grande, meilleurs sont les performances
Architecture d’Oracle 12c

 INSTANCE
Architecture d’Oracle 12c

 SHARED POOL
 Library cache :
 Informations sur les odres SQL et PL/SQL
 Texte, plan d’exécution
 Dictionary cache
 Description des tables
 Droits des utilisateurs
…
 Result cache
 Seulement en Enterprise Edition
 Stocke le résultat de requêtes SQL ou PL/SQL
Architecture d’Oracle 12c

 SHARED POOL
 Dimensionné par le paramètre SHARED_POOL_SIZE
 Repartition entre LibraryCache, dictionaryCache et ResultCache assuré par Oracle
Architecture d’Oracle 12c

 DATABASE BUFFER CACHE


 Contient les blocs de données les plus utilisés recemment :
 Bloc de tables
 Bloc d’index
 Bloc d’annulation

 Les blocs sont lus en mémoire par les processus serveur et écrits dans les fichiers de données par le ou les processus
d’arrière-plan DBWn.
 Toute modification (INSERT, UPDATE, DELETE) d’un bloc s’effectue en mémoire et l’écriture sur disque est différée.
 Le Database Buffer Cache est un cache de données qui joue le même rôle que la Shared Pool mais pour les données.
 Les données de la base de données ne sont accessibles, en lecture ou en mise à jour, qu’après avoir été chargées dans
le Database Buffer Cache.
 Dans la pratique, le Database Buffer Cache ayant une taille finie, Oracle utilise un algorithme LRU pour gérer le
cache : en cas de manque de place, Oracle supprime du cache les données utilisées le moins récemment.
Architecture d’Oracle 12c

 REDO LOG BUFFER


 stocke les informations sur les modifications apportées à la base de données avant leur écriture dans un fichier de journalisation.
 Pour chaque modification, une entrée redo (redo entry) est écrite dans le buffer.
 L’ancienne valeur ainsi que le nouvelle valeur sont enregistrées
Architecture d’Oracle 12c

 PROCESS D’ARRIERE PLAN


 Lancé au démarrage de l’instance.
 Arrêté lors de l’arrêt de l’instance.
Architecture d’Oracle 12c

 DBWn
 Lancé au démarrage de l’instance.
 Arrêté lors de l’arrêt de l’instance.
 chargés d’écrire les blocs modifiés du Database Buffer Cache dans les fichiers de données
 écritures multiblocs, en différé par rapport aux modifications en mémoire.

 L’écriture est déclenchée par un des événements suivants :


 Un processus serveur ne trouve pas de place dans le cache.
 Périodiquement, pour faire avancer le point de reprise (position dans les fichiers de journalisation à partir de laquelle la récupération de l’instance
est susceptible de démarrer).
 A chaque 3s
 pas de synchronisation entre la modification d’un bloc en mémoire, même validée (COMMIT) et l’écriture sur disque des blocs en
question
Architecture d’Oracle 12c

 LGWR (Log Writter)


 Ecriture des redo log dans le fichier de journalisation courant.
 écrit séquentiellement dans les fichiers de journalisation

 L’écriture est déclenchée par un des événements suivants :


 Une transaction est validée (COMMIT).
 Le Redo Log Buffer est au tiers plein ou contient 1 Mo de données.
 Database Writer s’apprête à écrire des blocs modifiés de transactions non validées dans les fichiers de données.
 Un basculement de fichier de journalisation survient.
 Un délai est dépassé (3 secondes).
 Lors de validation d’une transaction => SCN
Architecture d’Oracle 12c

 CKPT
 A pour rôle d’enregistrer le point de reprise dans l’entête des fichiers de données et dans le fichier de contrôle
Architecture d’Oracle 12c

 SMON
 Récupération de l’instance après un arrêt anormal
 Roll forward pour appliquer aux fichiers de données les modifications non enregistrées des transactions validées
 Roll back pour enlever des fichiers de données les modifications enregistrées des transactions non validées
Architecture d’Oracle 12c

 PMON
 Chargé u nettoyage lors du plantage d’un processus utilisateur :
 Annulation de la transaction,
 Libération des verrous et ressources
Architecture d’Oracle 12c

 ARCn
 Archivage des fichiers de journalisations pleins
Architecture d’Oracle 12c

 Processus Serveur
 Chargés de traiter les requêtes des utilisateurs de charger les données nécessaires dans le « database buffer cache »
 Communique (localement ou à travers le réseau) avec un processus utilisateur
 Un processus serveur dédié pour chaque utilisateur
Architecture d’Oracle 12c

 PGA : Program Global Area


 Mémoire privée des différents processus
 Processus serveur :
 SQL Work Area,
 Informations sur la session
 Informations sur le traitement des requêtes en session
 Variables de session
 A partir 11, PGA peut être gérée automatiquement par l’instance
 PGA_AGGRAGATE_TARGET limite soft
 A partir 12 : PGA_AGGREGATE_LIMIT, limite hard
Architecture d’Oracle 12c

 Vue d’ensemble
Architecture d’Oracle 12c

 Gestion automatique de la mémoire partagée (ASMM)


 Si activée, les composants suivantes sont dimensionnées automatiquement par Oracle en fonction de besoins :
 Database buffer cache (DB_CACHE_SIZE)
 Shared pool (SHARED_POOL_SIZE)
 Large Pool (LARGE_POOL_SIZE)
 Java Pool (JAVA_POOL_SIZE)
 Streams Pool (STREAMS_POOL_SIZE)
 SGA fixe
 Les autres ont besoin de dimensionner à la main si besoin :
 Redo log buffer
 ….
Architecture d’Oracle 12c

 Gestion automatique de la mémoire partagée (ASMM)


 Pour activer :
 Définir le paramètre SGA_TARGET
 Taille totale allouée à la SGA, peut être modifiée à chaud (SGA_MAX_SIZE)
 Si activé
 DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE et STREAMS_POOL_SIZE ne sont
pas spécifiés  ils sont mis à zero par Oracle et la taille du composant correspondant est automatiquement et dynamiquement
ajusté par Oracle
 Si spécifié, les valeurs deviennent la taille minimum au composant
 Si SGA_TARGET = 0
 DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE et STREAMS_POOL_SIZE doivent
être spécifiés manuellement (sinon valeur par défaut)
 SGA Fixe + Redo log Buffer = 1 granule
 4Mo Si SGA < 1GB sinon 16Mo
Architecture d’Oracle 12c

 Gestion automatique de la mémoire partagée (ASMM)

 ASMM activé
 Database buffer cache 64mo pour les blocs de 16Ko
 Database buffer cache minimum 256Mo
 Taille SGA : 800mo
Architecture d’Oracle 12c

 Gestion automatique de la mémoire partagée (ASMM) exemple 2

 ASMM non activé


 Shared ppol à 64mo
 Database buffer cache 512Mo
 Java pool et large pool sont dimensionnés par défaut
Architecture d’Oracle 12c

 Gestion manuelle SGA/PGA


 OLTP :
 SGA : 80%
 PGA : 20%
 Datawarehouse
 SGA : 30-50%
 PGA : 50-70%
 Si RAM : 1Go :
 OS : 20%, 224Mo, Oracle 800Mo
 SGA 80% , SGA_MAX_SIZE=8640Mo et PGA_AGGREGATE_TARGET=160Mo
 Si ASMM Activé : SGA_TARGET=640Mo
Architecture d’Oracle 12c
 Fichier de paramètres
 Lu au démarrage
 Contient des paramètres d’initialisation :
 Mémoire souhaitée aux différentes structures de la SGA
 Nom et emplacement des fichiers de contrôle
 Sous former nom_parametre=valeur

 Depuis version 9, possibilité d’utiliser un fichier de paramètres binaire (SPFILE)


 SPFIL ne peut être consulté ou édité via un éditeur de texte
 Java pool et large pool sont dimensionnés par défaut
Architecture d’Oracle 12c

 Gestion automatique
 Depuis la version 10
 Processus arrière-plan chargés de collecter des statistiques
 A chaque 60mn, enregistrement dans AWR (Automatic Workload Repository) => tables et vues
 Recommandations disponibles sur l’optimisation des requêtes, l’indexation, gestion de la mémoire
Architecture d’Oracle 12c

 Administrateur de base de données


 Installation des produits
 Création/démarrage/arrêt des bases de données
 Gestion des structures de stockage
 Gestion des utilisateurs et leurs droits
 Sauvegarde et restauration
Architecture d’Oracle 12c

 Comptes Oracle d’administration


 SYS : propriétaire du dictionnaire de données
 SYSTEM :
 Gestion des sctructures de stockage
 Gestion des utilisateurs
 Gestion des schémas
 SYSDBA : opération « lourdes » d’administration :
 création d’une base de données,
 arrêt et démarrage,
 Création d’un fichier de paramètre serveur
 Récupérations
…
 SYSOPER tous sauf création d’une base de données
 SYSBACKUP : sauvegardes et récupérations
Architecture d’Oracle 12c

 Dictionnaire de données
 Ensemble de tables et de vues qui donnent des informations sur le contenu d’une base de données :
 Structures de stockage
 les utilisateurs et leurs droits
 Les objets (tables, bues, index, PL/SQL, …)
 Appartient à SYS
 Stocké dans le tablespace SYSTEM
 Mis à jour par Oracle (CREATE, ALTER, DROP)
 Chargé en mémoire (Dictionary Cache de Shared Pool)
Architecture d’Oracle 12c

 Dictionnaire de données
 Vues statiques
 USER_% : informations sur les objets qui appartiennent à l’utilisateur
 ALL_% : informations sur les objets auxquels l’utilisateur a accès
 DBA_% : informations sur tous les objets de la base des données
 DICTIONARY pour retrouver le nom des vues
 Vues dynamiques de performance (v$)
 SYSDBA
 V$INSTANCE
 V$DATABASE
 V$SGA et V$SGA INFOR
 V$PARAMETER
Oracle 12c

 INSTALLATION
 Pré-installation
 Installation
 Post-installation
Oracle 12c

 Oracle Universal Installer


 identique
 Type d’installation (edition)
 Création d’une base de données
Oracle 12c

 Après installation
 Base de données
 Oracle net
 Enterprise Manager Database Control
Oracle 12c

 Post installation
 patch
 Recompilation PL/SQL invalide
 Configuration modules (oracle net, …)
 Produits supplémentaires
 Configuration arrêt et démarrage automatique des composants Oracle
Oracle 12c

 Standard OFA (Optimal Flexible Architecture)


 Recommandations sur l’arborescence et le nommage des fichiers
 Facilitation de l’administration d’Oracle
 Séparer le produit, les fichiers d’administration et les fichiers de base de données
 Plusieurs produits et/ou base de données sur un même serveur
 Oracle Universal Installer
 Oracle Base
 Répertoire racine de l’arborescence Oracle

 Oracle Home
 Sous-répertoire d’Oracle Base
 contient le logiciel
 Possible plusieurs Oracle Home dans une même Oracle Base
 Identifié par un nom (ex OraDB12HomeN)
Oracle 12c

 Oracle Base : X:/app/compte


 Oracle Home : $oracle_base/product/v.v.v/type_n
 V.v.v : numéro de version du produit
 Type : dbhome, client, …
 N : numéro d’ordre
 Ex : C:\app\oracle\product\12.1.0\dbhome_2
Oracle 12c

 Oracle Base
 Admin : fichier d’administration
 Audit : fichier d’audit
 Cfgtoollogs : fichiers journaux des assistants de configuration
 Checkpoints utilisé pendant l’installation (vidé après)
 Diag : référentiel de diagnostic automatique
 Fast_recovery_area : zone de récupération rapide
 Oradata : fichier de base de données
Oracle 12c

 Processus de Démarrage
 Instance démarrée (NOMOUNT) :
 Fichier de paramètre est lu
 SGA allouée et processus d’arrière-plan démarrés
 Il n’y a pas de base de données associée
 Vues disponibles : V$INSTANCE, V$SGA, V$OPTION, V$PARAMETER, V$VERSION, etc.
 Principalement utilisé lors de la création d’une nouvelle base de données
Oracle 12c

 Processus de Démarrage
 Base montée (MOUNT)
 Ouvrir les fichiers de contrôles à partir de l’information dans le fichier de paramètre
 Nom des fichiers de données et redo log (pas les ouvrir, né vérifie pas leurs présence)
 La base de données est associée à l’instance (V$DATABASE disponible)
 N’est pas ouverte pour une utilisation normale (SYSDBA, SYSOPER, SYSBACKUP)
 Renommer ou déplacer un fichier des données ou redo log, activer (ou désactiver) archivelog, effectuer une récupération de la
base de données
Oracle 12c

 Processus de Démarrage
 Base ouverte (OPEN)
 L’instance ouvre les fichiers de données et les redo log
 Vérifie la cohérence des données
 Si fichiers introuvable, base de données non ouverte
 Si dernier arrêt n’est pas propre => lancement de SMON
 Processus d’arrêt
Oracle 12c

 Désinstallation d’un produit Oracle


 Oracle Universal Installer
 Manuellement
 Suppression des variables d’environnement (Oracle_Home dans Path)
 Suppression des valeurs dans la base de registres
 HKEY_LOCAL_MACHINE –> SOFTWARE –> ORACLE
 HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → SERVICES

 Suppression du répertoire d’Oracle Home


 Suppression du répertoire dans « program files »
 Suppression des entrées dans le menu « Démarrer » (C:\ProgramData\Microsoft\Windows\Start Menu\Programs)
 Suppression dossier temporaire (%temp% ) et corbeille
 Suppression de l’utilisateur d’oracle
Oracle 12c

 Création manuelle d’une base de données


 Installation instance seulement à l’aide de OUI
 Création d’un fichier de paramètre texte
 Création d’un Service windows associé à l’instance
 Création fichier de paramètre serveur à partir d’un fichier de paramètre texte
 Démarrage de l’instance en mode NOMOUNT
Oracle 12c

 Création manuelle d’une base de données


 Installation instance uniquement
 Création des répertoires :
 D’administration : %ORACLE_BASE%\admin
 %ORACLE_BASE%\admin\adump : audit
 %ORACLE_BASE%\admin\ create : rép de script
 %ORACLE_BASE%\admin\ dpdump : fichier d’export
 %ORACLE_BASE%\admin\pfile : fichier de paramètre texte

 De données : %ORACLE_BASE%\oradata
Oracle 12c

 Création manuelle d’une base de données


 Fichier de paramètre (texte)
 Spfile créé à partir d’un fichier texte
 Plus de 200 paramètres
Oracle 12c

 Création manuelle d’une base de données


 Fichier de paramètre (texte)
 Db_name : nom de la base de données (128 caractères)
 DB_BLOCK_SIZE : taille de bloc standard
 Transactionnel : petites requêtes de lecture et de mise à jour => 5Ko ou 8ko
 Decisionnel : grosses requêtes de lecture => 16Ko ou 32ko
 Système mixte : par défaut 8Ko

 MEMORY_MAX_TARGET :
 taille maximum de la mémoire utilisable par l’instance
 Si pas spécifié, égal à la valeur de MEMORY_TARGET

 MEMORY_TARGET :
 taille de la mémoire allouée à l’instance
Oracle 12c

 Création manuelle d’une base de données


 Fichier de paramètre (texte)
 SGA_MAX_SIZE : taille maximal de la SGA
 SGA_TARGET : taille souhaitée pour la SGA
 170Mo minimum
 Si AMM activé (MEMORY_TARGET > 0) : taille minimale pour la SGA
 Si AMM désactivé (MEMORY_TARGET=0) :
 Si SGA_TARGET > 0 alors gestion automatique de mémoire partagée activé

 OPEN_CURSORS :
 nombre maximum de curseurs qui peuvent être ouverts simultanément par une session.
 Valeur par défaut : 50
 ORA-01000: nombre maximum de curseurs ouverts dépassé => augmenter sa valeur

 PROCESSES
 Nombre maximum de processus qui peuvent se connecter simultanément à l’instance
 un pour chaque session utilisateur simultanée
Oracle 12c

 Création manuelle d’une base de données


 Fichier de paramètre (texte)
 CONTROL_FILES:
 minimum 2, situé sur 2 disques différents
 Règle de nommage (OFA) : controlN.ctl

 REMOTE_LOGIN_PASSWORDFILE
 NONE : pas de mot de passe, seul l’authentification par le système d’exploitation est disponible
 EXCLUSIVE : utilisation d’un fichier de mots de passe dédié à la base de données.
 SHARED : utilisation d’un fichier de mots de passe partagé entre plusieurs bases de données.
Oracle 12c

 Création manuelle d’une base de données


 Fichier de paramètre (Exemple)
Oracle 12c

 Création manuelle d’une base de données


 Service associé à l’instance
 oradim
Oracle 12c

 Création manuelle d’une base de données


 Service associé à l’instance
 Oradim
 -SID sid : nom de l’instance
 -SYSPWD mot_de_passe_sys : Mot de passe de SYS pour le privilège SYSDBA
 -STARTMODE auto | manual :
 auto : l’instance est démarrée lorsque le service démarre
 manual (par défaut) : l’instance n’est pas démarrée lorsque le service démarre
 -SRVCSTART system | demand : mode de démarrage souhaité pour le service :
 system : le service est en redémarrage automatique.
 demand (par défaut) : le service est en redémarrage manuel.
 -SPFILE
Oracle 12c

 Création manuelle d’une base de données


 Service associé à l’instance
 oradim -new -sid DBTEST -startmode a -srvcstart s –spfile -runas oracle/oracle
 Création de fichier de paramètre serveur
 Positionner la variable ORACLE_SID (set ORACLE_SID=dbtest)
 Lancer SQLPLUS : sqlplus /nolog
 CREATE SPFILE FROM  PFILE = ’c:\app\oracle\admin\pfile\init.ora’; 
 Stocké dans : %ORACLE_HOME%\database\spfile<SID>.ora
 Démarrage de l’instance en mode NOMOUNT
 Startup nomount
 Lancement script de création
 Lancement script de vue et dicitonnaire
 %ORACLE_HOME%\rdbms\admin\catalog.sql
Oracle 12c
Oracle 12c

 EM Express
 Processus d’écoute
 EXEC dbms_xdb_config.sethttpsport(5500);
 SELECT dbms_xdb_config.gethttpsport() FROM dual;
Oracle 12c

 ORACLE NET
 Permet à des produits Oracle situés sur des machines différentes de communiquer
 Rendre le réseau transparent
 Nom de service réseau (alias)
Oracle 12c

 ORACLE NET
 LISTENER
 Processus d’écoute
 listener.ora (%ORACLE_HOME%\network\admin)
Oracle 12c

 ORACLE NET
 Service de base de données
 Liste des services (SID) pour lesquels le Listener accepte les demandes de connexions
 Peut comporter plusieurs entrées pour un Listener

 Gestion des processus d’écoute : LSNRCTL


Oracle 12c

 ORACLE NET
 Résolution de nom (client)
 sqlnet.ora
 tnsnames.ora
Oracle 12c

 GESTION INSTANCE
 Paramètres d’initialisation
 Dynamiques
 Modifiable par SQL
 Au niveau session et/ou système (toutes les sessions)
 Système : immédiate ou différé

 Statiques
 Redémarrage nécessaire

 V$PARAMETER :
 ISSES_MODIFIABLE : true si modifiable au niveau session
  ISSYS_MODIFIABLE  :
 False si non modifiable au niveau système
 Deferred : différé
 Immediate : immediatement
Oracle 12c

 GESTION INSTANCE
 ALTER SYSTEM / ALTER SESSION

 DEFFERED :
 Futures sessions
 (si SCOPE=MEMORY)
 Si ISSYS_MODIFIABLE=DEFERRED => obligatoire
 SCOPE
 MEMORY : mémoire seulement (immédiatement) pour les paramètres dynamiques
 SPFILE : fichier de paramètre serveur seulement (paramètre statiques)
 BOTH : les deux (dynamiques)
Oracle 12c

 GESTION INSTANCE
 Paramètres d’initialisation
 ALTER SYSTEM SET PROCESSES = 400  COMMENT = ’Test Modif’  SCOPE = SPFILE; 
 ALTER SYSTEM SET OPEN_CURSORS = 400  SCOPE = BOTH;
 Suppression d’un paramètre
 ALTER SYSTEM RESET paramètre [ SCOPE = SPFILE ] ;
 Dictionnaires des données
 V$SYSTEM_PARAMETER : valeur actuelle des paramètres dans l’instance
 V$SYSTEM_PARAMETER2 : affichage sur plusieurs lignes
 V$PARAMETER et V$PARAMETER2 : session courante
 V$SPPARAMETER : contenu actuel du fichier de paramètres serveur actif
Oracle 12c

 GESTION INSTANCE
 V$SYSTEM_PARAMETER, V$SYSTEM_PARAMETER2, V$PARAMETER et V$PARAMETER2 
Oracle 12c

 GESTION INSTANCE
 V$SPPARAMETER 
Oracle 12c

 GESTION INSTANCE
 >show parameter process
 >select name, isses_modifiable, issys_modifiable from v$parameter where name='processes';
 >alter session set processes='200'; (ERROR)
 >alter system set processes='200' scope = MEMORY; (ERROR)
 >alter system set processes='200' scope =SPFILE;
 >show parameter process (sans changement)
 >shutdown immediate
 >startup
 >show parameter process (valeur modifiée)  
Oracle 12c

 GESTION INSTANCE
 Exemple
 SELECT  p.name,  p.display_value actuel,  sp.display_value spfile  FROM  v$parameter p,  v$spparameter sp 
WHERE  p.name = sp.name  AND p.name = ’processes’  / 
 SQLPLUS : SHOW PARAMETERS [chaîne] et SHOW SPPARAMETERS [chaîne]
 SHOW PARAMETERS memory 
 Fichier de paramètre serveur endommagé ou perdu
 Si l’instance est démarrée, le recréer à partir des valeurs des paramètres actuellement en mémoire ( CREATE SPFILE FROM
MEMORY).
 Si un fichier de paramètres texte valide est disponible, le recréer à partir de ce fichier texte ( CREATE SPFILE FROM
PFILE).
 Le restaurer à partir d’une sauvegarde (voir le chapitre Sauvegarde et récupération).
Oracle 12c

 GESTION INSTANCE
 Valeur erronée qui empêche le démarrage
 Si l’instance démarre, modifier le paramètre erroné ou le supprimer avec l’ordre SQL ALTER SYSTEM (SET ou RESET).
 Si l’instance ne démarre pas, créer un fichier de paramètres texte à partir du fichier de paramètres serveur (CREATE PFILE
FROM SPFILE)
 Gestion dynamique de la mémoire
 Depuis 9i, SGA et PGA sont dynamiques (augmenté ou diminué)
 10g : SGA peut être géré automatiquement par Oracle
 11g : la totalité de la mémoire
Oracle 12c

 GESTION INSTANCE
 Paramètres modifiable par ALTER SYSTEM
 MEMORY_TARGET
 SGA_TARGET
 DB_CACHE_SIZE et éventuellement les différents paramètres DB_nK_CACHE_SIZE (n valant 2, 4, 8, 16 ou 32)
 SHARED_POOL_SIZE
 LARGE_POOL_SIZE
 JAVA_POOL_SIZE
 STREAMS_POOL_SIZE
 RESULT_CACHE_MAX_SIZE
 PGA_AGGREGATE_TARGET
 PGA_AGGREGATE_LIMIT
Oracle 12c

 GESTION FICHIERS DE CONTROLES


 Nom de la base de données
 Date et heure de la création de la base des données
 L’emplacement des autres fichiers (données et journalisation)
 Numéro de sequence de redo log
 Point de reprise
 ….
Oracle 12c

 GESTION FICHIERS DE CONTROLES


Oracle 12c

 GESTION FICHIERS DE CONTROLES


 Nom de la base de données et sa date de création
 Taille par défaut du bloc Oracle
 Nom et l’emplacement des fichiers de la base de données
 Nom et l’emplacement des fichiers journaux
 Nom des tablesspaces
 Numéro de séquence du fichier journal courant
 L’emplacement des archivelog
 Situation checkpoint
 Le SCN
Oracle 12c

 GESTION FICHIERS DE CONTROLES


 Fichier binaire
 Chaque base a son propre fichier de contrôle
 Taille du fichier :
 MAXLOGFILE :: max fichier redo
 MAXLOGFILEMEMBER: max groupe
 MAXLOGHISTORY : max archivé
 MAXLOGDATAFILE : max datafile
 MAXINSTANCES : max instance
 Automatiquement mis à jour par Oracle
 Lu en premier lors de l’ouverture de la base de données
 Si non trouvé : base non ouverte
 Possibilité d’ajout ultérieurement
Oracle 12c

 GESTION FICHIERS DE CONTROLES


 V$CONTROLEFILE
 Desc V$CONTROLEFILE
 Select name,status from V$CONTROLEFILE
 V$PARAMETER
 Desc V$PARAMETER
 Select value from V$PARAMETER where name like ‘control_file%’;
 Show parameter control_file
 V$CONTROLFILE_RECORD_SECTION (contenu de contrôle file)
 Desc V$CONTROLFILE_RECORD_SECTION ;
 Select type_size, record_total, records_used from V$CONTROLFILE_RECORD_SECTION
 Select type, record_size, record_total, records_used from V$CONTROLFILE_RECORD_SECTION where type = ‘DATAFILE’;
 Desc dba_data_files;
 Select file_name from dba_data_files

 Select type, record_sizerecord_total, records_used from V$CONTROLFILE_RECORD_SECTION where type = ‘TABLESPACE’;


 Desc dba_tablespaces;
 Select tablespace_name from dba_tablespaces;
Oracle 12c

 MULTIPLEXAGE FICHIERS DE CONTROLES


 Recommandation : 3 ou 4 sur des disques différents
 ALTER SYSTEM SET CONTROL_FILES = ’d:\oradata\dbtest\control01.ctl’,  ’g:\oradata\dbtest \control02.ctl’,  ’e:\oradata\dbtest \
control03.ctl’  SCOPE = SPFILE;
 Arrêter la base de données (proprement) : shutdown immediate;
 Faire une copie (système d’exploitation)
 Redémarrer la base

Il ne faut pas dupliquer le fichier si la base est ouverte ou après un shutdown abort
Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


 Enregistre toutes les modifications apportées à la base de données
 Organisés en groupe de manière circulaire
 Utilisés lors de la récupération de l’instance après un arrêt anormal
 Minimum 2 groupes (membre minimum 1 fichier)
 N’augmente pas dynamiquement
 Créé lors de la création de la base de données
 Les membres sont écrits en miroir (processus LGWR)
 lorsque le groupe est plein, Oracle passe au groupe suivant (switch)
 Ecrasement des enregistrements lors d’un switch
 Si possible : 2 ou 3 membres par groupe, stockés dans différents disques
 Si un membre indisponible => la base fonctionne normalement
Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


 Identification de la transaction
 Date et heure de la transaction
 Adresse physique de la donnée modifié (ROWID)
 Type d’opération effectuée (update, insert, delete, commit, rollback)
 Données AVANT
 Données APRES
 Etat de la transaction (en cours, validée, invalidée)
 Emplacement des archives
Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


Oracle 12c

 Fréquence d’écriture FICHIER JOURNAUX


 Toutes les 3 secondes
 Lors d’un COMMIT
 1/3 du buffer des journaux de reprise est rempli
 1MB d’information a été écrit dans le buffer redo log
 A chaque point de synchronisation
 Déclenché par le processus DBWn
Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


 V$LOG : informations sur les groupes ;
 V$LOGFILE : informations sur les membres ;
 V$LOG_HISTORY : informations sur l’historique des fichiers de journalisation.
 V$DATABASE
 V$INSTANCE
 ARCHIVE LOG LIST
 ALTER SYSTEM SWITCH LOGFILE
Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


 >archive log list;
 >alter system switch logfile;
Oracle 12c

 Gestion FICHIER JOURNAUX (redo log)


 SELECT group#,sequence#,bytes/(1024*1024) size_mo,members,status     FROM v$log; 
 SELECT group#,type,member    FROM v$logfile     ORDER BY group#; 
 SELECT sequence#,TO_CHAR(first_time,’DD/MM HH24:MI’) first_time     FROM v$log_history;
 SELECT name,log_mode FROM V$DATABASE;
Oracle 12c

 Opération sur les FICHIER JOURNAUX (redo log)


 Création d’un groupe
 ALTER DATABASE ADD LOGFILE GROUP 4 (’’,’’) SIZE 50M;
 Création d’un membre d’un groupe
 ALTER DATABASE ADD LOGFILE MEMBER ’’ TO GROUP 1;
 SUPPRESSION D’UN MEMBRE DE GROUPE (inactive)
 ALTER DATABASE DROP LOGFILE MEMBER ‘’
 SUPPRESSION D’UN GROUPE (inactive)
 ALTER DATABASE DROP LOGFIFLE GROUP 1;
 ALTER SYSTEM SWITCH LOGFILE;
 ALTER SYSTEM CHECKPOINT;
Oracle 12c

 Fréquence point de reprise


 Lors d’un basculement d’un groupe de fichier de journalisation
 Si redo log volumineux => redémarrage long
 FAST_START_MTTR_TARGET : nombre maximum de secondes souhaité pour le redémarrage de l’instance,
après un arrêt anormal
 Des points de reprise trop fréquents peuvent dégrader les performances
 V$INSTANCE_RECOVERY
 SELECT value FROM v$parameter     WHERE name = ’fast_start_mttr_target’; 
 SELECT target_mttr,estimated_mttr,optimal_logfile_size    FROM v$instance_recovery;
Oracle 12c

 Archivage des redo logs


 Activer en mettant en mode ArchiveLog
 Sauvegarde Avant l’écrasement
 Crée en mode NoArchiveLog puis passé en ArchiveLog
Oracle 12c

 Archivage des redo logs


Oracle 12c

 Archivage des redo logs


 Modifier les fichiers de paramètres
 ALTER SYSTEM SET  log_archive_format=’redo_%S_%R_%T.arc’  SCOPE=SPFILE; 
 ALTER SYSTEM SET  log_archive_dest_1=’LOCATION=c:\oradata\arch\dbtest’  SCOPE=SPFILE;
 ALTER SYSTEM SET ARCHIVE_LAG_TARGET = 1800 scope=spfile; //30mn
 Arrêter proprement la base
 SHUTDOWN IMMEDIATE
 Monter la base
 STARTUP MOUNT
 Passer la base de données en mode ARCHIVELOG 
 ALTER DATABASE ARCHIVELOG;
 Ouvrir la base
 ALTER DATABASE OPEN;
Oracle 12c

 Archivage des redo logs


 Archive log list
 V$DATABASE : mode de fonctionnement de la base de données (colonne LOG_MODE) ;
 V$LOG : statut des groupes vis-à-vis de l’archivage (colonne ARCHIVED) ;
 V$ARCHIVED_LOG : informations sur les fichiers de journalisation archivés ;
 V$ARCHIVE_DEST : informations sur les destinations d’archivage.
Oracle 12c

 V$ARCHIVE_LOG
Oracle 12c

 V$ARCHIVE_DEST
Oracle 12c

 Archivage des redo logs


 SELECT log_mode FROM v$database; 
 SELECT group#,sequence#,status,archived  FROM v$log; 
 SELECT sequence#,name FROM v$archived_log; 
 SELECT destination,status,error FROM v$archive_dest  WHERE dest_name=’LOG_ARCHIVE_DEST_1’; 
 Select status, archiver from v$instance;
Oracle 12c

 TABLESPACES
 unité logique de stockage composée d’un ou plusieurs fichiers physiques
 le stockage est organisé en segments, composés d’une ou plusieurs extensions (extent)
 les informations sur les extensions libres et allouées sont stockées dans des tables du dictionnaire de données  ou dans l’entête
du fichier des données
 BIGFILE : un seul fichier de données (depuis 10g) : <32To
 SMALLFILE : <32Go
 SYSTEM : dictionnaires des données
 SYSAUX : composant Oracle
 UNDO Tablespace
 TEMPORARY Tablespace
 Select tablespace_name from Dba_tablespaces;
 Select tablespace_name, file_name from dba_data_files;
Oracle 12c

 TABLESPACES
Oracle 12c

 TABLESPACES
 ONLINE ou OFFLINE
 READ WRITE ou READ ONLY
 Autant de tablespace que possible
 BIGFILE
 SELECT property_value FROM database_properties  WHERE property_name = ’DEFAULT_TBS_TYPE’
 SELECT property_value FROM database_properties  WHERE property_name =
’DEFAULT_PERMANENT_TABLESPACE’ ; 
Oracle 12c

 TABLESPACES
Oracle 12c

 TABLESPACES
 SELECT tablespace_name, block_size, bigfile, status FROM DBA_TABLESPACES; 
 CREATE TABLE TEST(int number, nom varchar(20)) TABLESPACE deftbs ;
 SELECT TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME='TEST’;
 DESC DBA_SEGMENTS;
 SELECT SEGMENT_NAME, TABLESPACE_NAME FROM DBA_SEGMENTS WHERE SEGMENT_NAME =
'TEST’;
 DESC V$TABLESPACE;
 Select name,bigfile FROM v$TABLESPACE;
 DESC DBA_DATA_FILES;
 SELECT TABLESPACE_NAME,FILE_NAME, BYTES/1024/1024 as MO, STATUS FROM DBA_DATA_FILES;
Oracle 12c

 TABLESPACES
Oracle 12c

 TABLESPACES
 CREATE TABLESPACE app_data_01 DATAFILE ‘c:/app/oracle/oradata/dbtest/app_data_01.dbf’ SIZE 64M
autoextend ON NEXT 24M;
 SELECT TABLESPACE_NAME,FILE_NAME, BYTES/1024/1024 as MO, STATUS FROM
DBA_DATA_FILES;
 CREATE TABLESPACE app_idx_01 DATAFILE ‘c:/app/oracle/oradata/dbtest/app_idx_01.dbf’ SIZE 64M
autoextend ON NEXT 24M MAXSIZE 512M, ‘c:/app/oracle/oradata/dbtest/app_idx_02.dbf’ SIZE 64M ;
Oracle 12c

 TABLESPACES
 Ajouter un nouveau DATAFILE
 ALTER TABLESPACE data  ADD DATAFILE ’c:\app\oradata\dbtest\data02.dbf’ SIZE 100M  AUTOEXTEND ON NEXT
100M MAXSIZE 500M;
 Modifier la taille d’un fichier des données
 ALTER DATABASE  DATAFILE ’nom_complet’ | numéro_fichier [,...] RESIZE valeur [K|M|G|T]; 
 ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T]; (BIGFILE)
 Modifier l’extension automatique d’un fichier de données
 Désactivation de la clause AUTOEXTEND :

ALTER DATABASE  DATAFILE ’c:\oradata\dbtest\data01.dbf’ AUTOEXTEND OFF;


 Activation (ou modification) de la clause AUTOEXTEND :

ALTER DATABASE   DATAFILE ’c:\oradata\dbtest\data01.dbf’  AUTOEXTEND ON NEXT 200M MAXSIZE 800M;


Exemple avec un tablespace BIGFILE :
 ALTER TABLESPACE tbs_big   AUTOEXTEND ON NEXT 1G MAXSIZE 100G;
Oracle 12c

 TABLESPACES
 ALTER TABLESPACE nom ONLINE | OFFLINE;
 ALTER TABLESPACE nom DROP DATAFILE ’nom_complet’ | numéro_fichier;
 DROP TABLESPACE nom [ INCLUDING CONTENTS [ AND DATAFILES ]  [ CASCADE
CONSTRAINTS ] ];
 ALTER TABLESPACE nom { READ ONLY | READ WRITE } ; 
   ALTER TABLESPACE nom LOGGING | NOLOGGING ; 
   ALTER TABLESPACE nom [NO] FORCE LOGGING ; 
   ALTER TABLESPACE nom FLASHBACK ON | OFF ;
Oracle 12c

 TABLESPACES TEMPORAIRE
 Lors d’un tri : utilisation du cache de PGA
 SELECT ... ORDER BY ;
 SELECT ... GROUP BY ;
 SELECT DISTINCT ... ;
 requêtes ensemblistes (UNION, INTERSECT, MINUS) ;
 CREATE INDEX ;
 calcul des statistiques ;
 jointures par tri-fusion (sort merge join).
 Si mémoire insuffisante => sur disque (segment temporaire)
Oracle 12c

 TABLESPACES TEMPORAIRE
Oracle 12c

 TABLESPACES TEMPORAIRE
 CREATE TEMPORARY TABLESPACE tempo TEMPFILE 'c:\app\oracle\oradata\dbtest\tempo01.dbf' SIZE
100M AUTOEXTEND ON NEXT 10M MAXSIZE 1G ;
 Tablespace temporaire par défaut :
 Spécifié lors de la création de la base
 ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nom ; 
 SELECT property_value FROM database_properties  WHERE property_name =
’DEFAULT_TEMP_TABLESPACE’ ; 
Oracle 12c

 TABLESPACES TEMPORAIRE
 Ajout d’un fichier de données temporaire à un tablespace temporaire géré localement :
 ALTER TABLESPACE nom_tablespace  ADD TEMPFILE spécification_fichier ;
 supprimer le fichier de données temporaire 
 ALTER DATABASE  TEMPFILE ’c:\app/oracle/oradata\dbtest\temp01.dbf’ DROP  INCLUDING DATAFILES; 
Oracle 12c

 TABLESPACES recommandations
 Utiliser tablespace géré localement
 System
 Tablespace temporaire
 Tablespace d’annulation
 Tablespace des tables et index
 définir un tablespace par défaut lors de la création de la base
 Définir un tablespace d’annulation lors de la création de la base
 Choisir le mode d’autoextension
Oracle 12c

 Gestion sécurité
 Définir les utilisateurs qui peuvent se connecter à la base
 Définir dans quel(s) tablespace(s) un utilisateur peut créer des objets 
 limiter l’utilisation des ressources système ;
 imposer une politique de gestion de mots de passe (expiration périodique, non- réutilisation avant un certain temps,
etc.) ;
 définir les droits de chaque utilisateur à l’intérieur de la base de données.
 PRIVILEGES
 Un droit d’exécuter un ordre SQL ( privilège système );
 Un droit d’accéder à un objet d’un autre utilisateur (privilège objet).
 ROLES
 Groupement de privilèges
Oracle 12c

 Créer un utilisateur
Oracle 12c

 Modifier un utilisateur
Oracle 12c

 MODIFIER UN UTILISATEUR
 Modification du mot de passe d’un utilisateur :
 ALTER USER toto  IDENTIFIED BY toto  PASSWORD EXPIRE;
 Modification du tablespace par défaut et attribution de quotas :
 ALTER USER toto  DEFAULT TABLESPACE test  QUOTA UNLIMITED ON test  QUOTA 10M ON data;
 Verrouillage d’un compte :
 ALTER USER toto ACCOUNT LOCK;
 Déverrouillage d’un compte :
 ALTER USER toto ACCOUNT UNLOCK;
 Supprimer un utilisateur
 DROP USER nom [ CASCADE ] ;
Oracle 12c

 TROUVER DES INFORMATIONS SUR UN UTILISATEUR


 DBA_USERS : informations sur les utilisateurs ;
 DBA_TS_QUOTAS : informations sur les quotas des utilisateurs.
Oracle 12c

 Utilisateurs
 User = schema
 Login/motdepasse
 Dispose de son propre espace de stockage permanent
 Dispose de son propre espace de stockage temporaire
 Associé à un profil
 Activé ou désactivé
Oracle 12c

 PROFIL UTILISATEUR
 ensemble nommé de limitations de ressources qui peut être attribué à un utilisateur
 temps CPU par session ;
 nombre de lectures logiques par session ;
 nombre de sessions ouvertes simultanément par un utilisateur ;
 temps d’inactivité par session ;
 durée totale de la session ;
 verrouillage de compte (et durée de verrouillage) au-delà d’un certain nombre d’échecs de tentative de connexion ;
 durée de vie des mots de passe (avec éventuellement une période de grâce) ;
 non-réutilisation d’un mot de passe avant un certain temps ou avant un certain nombre de changements ;
 complexité du mot de passe.
Oracle 12c

 PROFIL UTILISATEUR
Oracle 12c

 PROFIL UTILISATEUR
 DEFAULT :
 Attribué par défaut à tous les utilisateurs
 ALTER PROFILE default LIMIT  SESSIONS_PER_USER 3  IDLE_TIME 30  FAILED_LOGIN_ATTEMPTS 5; 
 N’affecte qu’à la prochaine connexion
 ALTER PROFILE exploitation LIMIT  SESSIONS_PER_USER 5 IDLE_TIME UNLIMITED
FAILED_LOGIN_ATTEMPTS DEFAULT;
Oracle 12c

 PROFIL UTILISATEUR
 CREATE PROFILE exploitation
LIMIT  SESSIONS_PER_USER 3 
IDLE_TIME 30 
FAILED_LOGIN_ATTEMPTS 3 
PASSWORD_LIFE_TIME 30 
PASSWORD_REUSE_TIME 180 
PASSWORD_LOCK_TIME UNLIMITED 
PASSWORD_GRACE_TIME 3  ;
Oracle 12c

 AFFECTATION D’UN PROFIL A UTILISATEUR


 Lors de la création ou modification
 CREATE USER toto IDENTIFIED BY toto  TEMPORARY TABLESPACE temp  PROFILE exploitation 
PASSWORD EXPIRE;
 ALTER USER toto PROFILE DEFAULT;
 ACTIVATION DE LA LIMITATION DES RESSOURCES
 ALTER SYSTEM SET RESOURCE_LIMIT = TRUE [ clause_SCOPE ];
 TROUVER DES INFORMATIONS
 DBA_USERS : informations sur les utilisateurs, dont le profil attribué (colonne PROFILE) ;
 DBA_PROFILES : informations sur les profils.
Oracle 12c

 PRIVILEGE SYSTEME
 Droit d’exécuter un ordre SQL
 Chaque ordre SQL a (au minimum) un droit associé
 CREATE ANY TABLE : droit de créer une table dans n’importe quel schéma
 Faire attention aux droits relatifs à la gestion des utilisateurs et droits (create user, alter user, …)
 CREATE SESSION : donne le droit de se connecter
 SELECT ANY DICTIONARY : Donne le droit à l’utilisateur d’interroger n’importe quel objet du dictionnaire de
données dans le schéma SYS
Oracle 12c

 PRIVILEGE SYSTEME
 GRANT permet d’attribuer un droit à un utilisateur

 GRANT CREATE SESSION, CREATE TABLE to toto;


 WITH ADMIN OPTION : donne au bénéficiaire le droit de transmettre le privilège système
 Le privilège est directement actif
 REVOKE permet de révoquer un privilège système
 REVOKE CREATE TABLE FROM toto;
Oracle 12c

 PRIVILEGE OBJET
 Droit d’accéder à un objet d’au autre utilisateur

 GRANT SELECT, INSERT, UPDATE(nom,prenom) ON adherent TO toto;


 GRANT SELECT ON toto.dept TO titi;
Oracle 12c

 PRIVILEGE OBJET

 REVOKE INSERT, UPDATE ON client FROM toto;


 On doit préfixer l’objet : SELECT * FROM titi.client;
 CREATE PUBLIC SYNONYM client FOR titi.client;
 ALTER SESSION SET CURRENT_SCHEMA = titi;
Oracle 12c
 ROLE
 Regroupement de privilèges (système et objet)
 Un rôle peut être attribué à un autre rôle
 Un utilisateur peut avoir plusieurs rôles
 Un rôle n’appartient à personne
 Mise en œuvre
 Création du rôle
 Attributions des privilèges (système et objet)
 Attribution du rôle aux utilisateurs (ou à d’autres rôles)
Oracle 12c
 ROLE

 Il faut avoir le privilège CREATE ROLE

 GRANT permet d’attribuer des privilèges systèmes (ou objets) à un rôle


Oracle 12c
 ROLE
 CREATE ROLE stagiaire;
 GRANT CREATE SESSION, CREATE TABLE TO stagiaire; 
 GRANT SELECT, INSERT ON client TO stagiaire;
 REVOKE CREATE TABLE FROM stagiaire; 
 REVOKE UPDATE ON client FROM toto;
Oracle 12c
 ROLE

 GRANT stagiaire TO toto;

 REVOKE stagiaire FROM toto;


 DROP ROLE stagiaire;
Oracle 12c
 ROLE

 GRANT stagiaire TO toto;

 REVOKE stagiaire FROM toto;


 DROP ROLE stagiaire;
Oracle 12c
 ROLE
 CONNECT : autorise la connexion
 RESOURCE : création des principaux objets d’un schéma (tables, triggers, séquences, pl/sql)
 DBA : tous les privilèges
 EM_EXPRESS_BASIC : EM express en lecture seule
 EM_EXPRESS_ALL
Oracle 12c
 ROLE
 DBA_SYS_PRIVS : privilèges système attribués aux utilisateurs (ou aux rôles) ;
 SESSION_PRIVS : privilèges système actuellement actifs dans la session (obtenus directement ou via un rôle) 
 SYSTEM_PRIVILEGE_MAP : liste de tous les privilèges système

 DBA_TAB_PRIVS : privilèges objet attribués aux utilisateurs (ou aux rôles) sur la totalité de l’objet 
 DBA_COL_PRIVS : privilèges objet attribués aux utilisateurs (ou aux rôles) sur certaines colonnes de l’objet uniquement ;
 TABLE_PRIVILEGE_MAP : liste de tous les privilèges objet.

 DBA_ROLES :  liste des rôles existant dans la base


 DBA_ROLES_PRIVS : rôles attribués aux utilisateurs ou aux rôles ;
 ROLE_SYS_PRIVS : privilèges système attribués aux rôles
 ROLE_TAB_PRIVS : privilèges objet attribués aux rôles
 SESSION_ROLES : rôles actuellement actifs dans la session
Oracle 12c

 BONNES PRATIQUES
 Limitez l’accès au serveur
 Verrouillez les comptes par défaut
 Utilisez des mots de passes complexes
 Moins de privilèges possibles aux utilisateurs
 Définissez vos propres rôles

 SELECT sid,serial#,username,osuser,status FROM v$session; 


 ALTER SYSTEM KILL SESSION ’sid,serial#’;
 ALTER SYSTEM DISCONNECT SESSION ’sid,serial#’  { IMMEDIATE | POST_TRANSACTION};
Oracle 12c

 TRANSACTION
 Commence à l’ouverture de la session ou à la fin de la précédente transaction
 Un ensemble atomique (ACID)
 Se termine toujours par un COMMIT ou ROLLBACK
 Une instruction de type LMD (INSERT UPDATE DELETE) est une transaction
Oracle 12c

 TRANSACTION
Oracle 12c

 ISOLATION
 READ UNCOMMITED
 Lire des données non encore validées par d’autre transaction
 READ COMMITED
 Ne lire que les transactions validées
 REPEATABLE READ
 Lire les données plusieurs fois avec les mêmes valeurs
 SERIALIZABLE
 Lire seulement les données validées avant la transaction
Oracle 12c

 ISOLATION DANS ORACLE


 READ COMMITED (par défaut)
 SERIALIZABLE
 READ ONLY = REPEATABLE READ

 MODIFICATION D’ISOLATION
 SET TRANSACTION ISOLATION LEVEL <niveau d’isolation>;
 ALTER SESSION SET ISOLATION LEVEL = <niveau d’isolation>;
Oracle 12c

 VERROUILLAGE
Oracle 12c

 VERROUILLAGE
Oracle 12c

 VERROUILLAGE
 DESC V$LOCKED_OBJECT
 SELECT XIDSUN,OBJECT_ID,SESSION_ID,ORACLE_USERNAME,LOCKED_MODE FROM
V$LOCKED_OBJECT;
 SELECT OBJECT_ID,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_ID=11111;
 SELECT SID,SERIAL#, USERNAME FROM V$SESSION;
 ALTER SYSTEM KILL SESSION ‘22,23435’;
 SELECT WAITING_SESSION,HOLDING_SESSION, LOCK_TYPE FROM DBA_WAITERS;
Oracle 12c

 AUDIT SOUS ORACLE


 Outil de surveillance et de protection
 Contrôler les accès à la base
 Vérifier les échecs de connexions
 Vérifier les tentatives d’accès infructueuses à des objets
Oracle 12c

 AUDIT SOUS ORACLE


 Quatre niveaux d’audit
 Connexion / déconnexion
 Ordre SQL (LMD, DDL)
 Privilège système
 Un ordre SQL particulier sur un objet particulier (ex SELECT sur une table)
Oracle 12c

 AUDIT SOUS ORACLE


 SYS.AUD$
 DBA_AUDIT_TRAIL
 DBA_AUDIT_OBJECT : résultats d’audits sur les objets de la base Oracle
 DBA_AUDIT_SESSION : audit sur les connexions et déconnexion
 DBA_AUDIT_STATEMENT : audit sur les commandes utilisateurs GRANT,ALTER SYSTEM …
Oracle 12c

 ACTIVATION
 AUDIT_TRAIL { none | os | db | db,extended | xml | xml,extended }
 AUDIT_SYS_OPERATIONS
 True : active la vérification des opérations émises par les utilisateurs sysdba et sysoper
Oracle 12c

 AUDIT
 AUDIT_TRAIL { none | os | db | db,extended | xml | xml,extended }
 AUDIT_SYS_OPERATIONS
 True : active la vérification des opérations émises par les utilisateurs sysdba et sysoper
Oracle 12c

 AUDIT_TRAIL
 none : audit désactivé
 os : répertoire spécifié dans le paramètre AUDIT_FILE_DEST
 db : dans la table SYS.AUD$
 db,extended dans la table SYS.AUD$ + colonnes SQLBIND et SQLTEXT
 xml : format xml (répertoire ADUMP)
 xml, extended : xml + colonnes SQLBIND et SQLTEXT
Oracle 12c

 ACTIVATION AUDIT

 ARRET DE L’AUDIT
 NOAUDIT ALL;
 ALTER SYSTEM SET AUDIT_TRAIL=none SCOPE=SPFILE;
 TRUNCATE TABLE SYS.AUD$;
Oracle 12c

 TRANSFERT DE DONNEES (Datapump)


 Export des données (expdp)
 Nécessite la création d’une directory

 Permet d’exporter
 Une base complète (export FULL)
 Un schéma ou plusieurs schémas
 Une ou plusieurs tables
 Un ou plusieurs tablespaces
Oracle 12c

 TRANSFERT DE DONNEES (Datapump)


 Informations sur les exports
 DBA_DIRECTORIES
 DBA_DATAPUMP_JOBS
 DBA_DATAPUMP_SESSIONS
Oracle 12c

 TRANSFERT DE DONNEES (Datapump)


 CREATE OR REPLACE DIRECTORY DIR_DATAPUMP AS ’c:\app\oracle\export’
 GRANT READ,WRITE ON DIRECTORY DIR_DATAPUMP TO PUBLIC;
 SELECT OWNER_NAME,JOB_NAME,OPERATION,JOB_MODE,STATE FROM DBA_DATAPUMP_JOBS;
Oracle 12c

 TRANSFERT DE DONNEES (Datapump)


 expdp help=yes
 expdp system/password full=y directory=DIR_DATAPUMP dumpfile=full_dbtest.dmp logfile=full_dbtest.log
 expdp system/password schemas=koto directory=DIR_DATAPUMP dumpfile=dbtest_koto.dmp
logfile=dbtest_koto.log
Oracle 12c

 IMPORT DES DONNEES (Datapump)


 impdp help=yes
 Permet d’importer
 Une base (full)
 Tables
 Schemas
 tablespaces
Oracle 12c

 IMPORT DES DONNEES (Datapump)


 impdp system/password schemas=koto directory=DIR_DATAPUMP dumpfile=dbtest_koto.dmp
logfile=dbtest_koto_imp.log
 impdp system/123 fromuser=koto touser=rakoto directory=DIR_DATAPUMP dumpfile=dbtest_koto.dmp
logfile=dbtest_koto_imp.log
Oracle 12c

 SAUVEGARDE ET RECUPERATION
 Protection des fichiers sensibles de la base
 Fichiers de contrôle
 multipléxage

 fichiers de journalisation
 multiplexage

 Stratégie de sauvegarde/restauration
 Adaptée aux contraintes de l’entreprise
 Est-il acceptable de perdre des données ?
 Est-il possible d’arrêter périodiquement la base?
 Est-il possible de réaliser une sauvegarde complète de la base pendant l’arrêt ?
 Les données sont-elles mise à jour quotidiennement ?

 Testée et documentée
Oracle 12c

 SAUVEGARDE ET RECUPERATION
 Sauvegarde cohérent :
 pendant que la base est arrêtée (après un arrêt propre)
 Mode : noarchivelog
 Sauvegarde incohérente :
 base ouverte
 Mode : Archivelog
 Sauvegarde complète : la totalité de la base
 Sauvegarde partielle : une partie de la base des données
 Sauvegarde incrémentale : ne contient que les modifications modifiés depuis la dernière sauvegarde
Oracle 12c

 SAUVEGARDE ET RECUPERATION
Oracle 12c

 STRATEGIE DE SAUVEGARDE
 Réaliser des sauvegardes fréquentes (tous les jours au minimum)
 Conserver plusieurs cycles de sauvegarde
 Si possible, sauvegarder complète tous les jours, sinon sauvegarde incrémentale

Oracle 12c

 RMAN
 Outil en ligne de commande
 Permet de réaliser des sauvegardes et des récupérations
 Utilise un « référentiel » pour le stockage des informations sur sa configuration, les fichiers sauvegardés, …
 Référentiel stocké dans le fichier de contrôle
 Permet de sauvegarder :
 Fichiers des données
 Fichiers de contrôle
 Fichier de journalisations archivés
 Fichier de paramètre serveur
 Utilise la zone de récupération rapide : DB_RECOVERY_FILE_DEST et DB_RECOVERY_FILE_DEST_SIZE
Oracle 12c

 rman sys/password
 Chaque base de données possède un identifiant DBID
 Show all;
 Configurer la politique de conservation
 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS ; 
 CONFIGURE RETENTION POLICY TO REDUNDANCY 2 ;
 Sauvegarde automatique du fichier de contrôle
 CONFIGURE CONTROLFILE AUTOBACKUP ON ;
 Commande VALIDATE
 Database
 Tablespace
 Backupset
 …
Oracle 12c

 Commande BACKUP

 BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG TAG=‘testbackup’;


 List backup summary;
Oracle 12c

 RESTAURATION
 RESTORE : restaurer les fichiers à partir des sauvegardes
 RECOVER : procéder à récupération complète (ou incomplète)
Oracle 12c

 Récupération d’un fichier de paramètre serveur


 RMAN target sys/password
 startup nomount
 RESTORE SPFILE FROM AUTOBACKUP     DB_RECOVERY_FILE_DEST ‘C:\app\oracle\
fast_recovery_area’     DB_NAME ‘dbtest’; 
 Shutdown
 startup
Oracle 12c

 Récupération d’un fichier de contrôle


 utiliser le fichier d’alerte de l’instance pour identifier les fichiers de contrôle endommagés ou perdus et en déduire
qu’il reste bien au moins un fichier de contrôle valide ;
 dupliquer une version valide du fichier de contrôle pour la mettre à la place du (des) fichier(s) de contrôle
endommagé(s) ;
 redémarrer la base de données (STARTUP).
 SQL> STARTUP NOMOUNT
 SQL> ALTER SYSTEM SET CONTROL_FILES=   ’c:\app\oracle\dbtest\control01.ctl’
SCOPE=SPFILE;
 SQL> SHUTDOWN IMMEDIATE   SQL> STARTUP
 RMAN> RESTORE CONTROLFILE FROM ’c:\app\oracle\dbtest\control01.ctl’ ;
Oracle 12c

 Récupération d’un redo log


 Au moins 1 par groupe !!
 Identifier le (les) fichier(s) de journalisation endommagé(s) dans le fichier d’alerte de l’instance, dans le fichier de
trace de LGWR ou dans la vue V$LOGFILE.
 Supprimer le membre endommagé :
 SQL> ALTER DATABASE DROP LOGFILE MEMBER ’nom_fichier’;
 Ajouter un nouveau membre au groupe concerné :
 SQL> ALTER DATABASE ADD LOGFILE MEMBER ’nom_fichier’   TO GROUP numéro;
 Réitérer les deux opérations précédentes avec tous les membres endommagés.
Oracle 12c

 SAUVEGARDE INCREMENTALE
 Ne sauvegarder que les blocs qui ont été modifiés depuis la dernière sauvegarde
 Réduire la taille des sauvegardes (surtout pour les bases à faible activité de mise à jour)
 Exemple :
 BACKUP INCREMENTAL LEVEL 0 DATABASE TAG=’dbinc0’ ; 
 BACKUP INCREMENTAL LEVEL 1 DATABASE TAG=’dbinc1’ ; 
 Niveau 0 = sauvegarde complète
 Différentielle de Niveau 1 : tous les blocs modifiés depuis une sauvegarde incrémentale de niveau 0 ou 1
 Cumulative de niveau 1 : tous les blocs modifiés depuis la dernière sauvegarde incrémentale de niveau 0
 Rapidité de la récupération mais nécessite plus d’espace
 Activer la trace des blocs modifiés :
 RMAN> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE   ’c:\oradata\dbtest\
block_change_tracking.trc’;
 SELECT * FROM v$block_change_tracking; 
Oracle 12c

 SAUVEGARDE INCREMENTALE
Oracle 12c

 SAUVEGARDE INCREMENTALE

Vous aimerez peut-être aussi