Professional Documents
Culture Documents
Objectifs du cours :
ִ Maîtriser les concepts de
l’administration des BD
ִ Identifier les points clés de
Administration l’environnement
des bases de données : ִ Mise en œuvre technique, dompter
mise en œuvre avec la doc
Oracle Très orienté sur Oracle
ִ Personne n’est parfait ☺
ִ Permet de faire 2 séances de TPs
ִ Corolaire :
Jean-Marc Petit « Certains ordres présents dans ce
document peuvent être erronés en
2009-2010
fonction de la version d’Oracle que vous
utilisez »
Département Informatique
Thèmes du cours
Sur ce cours … 2/2
1
Pré-requis
Objectifs sous Oracle
Autour de l’algorithmique
ִComprendre l'architecture d'un ִ structure de données : tableau, arbre,
serveur de BD Oracle table de hachage
ִDémarrage et arrêt d’une instance ִ algorithmes classiques de parcours de
et d’une base de données Oracle structures
ִCréation d’une base de données Autour des BD
opérationnelle ִ Modèle relationnel
ִGestion des fichiers d'une base de ִ Langage de requêtes
données Oracle ִ Transactions
ִGestion de la structure logique ִ Langage de programmation et BD
(tablespaces, segments, extents et Autour des systèmes d’exploitation
blocs) ִ Hiérarchie de la mémoire
ִGestion des utilisateurs, des ִ Politique de gestion des défauts de pages
privilèges et des ressources
ִSauvegarde/restauration/réorganisa
tion des données
6
2
Plan du cours Plan détaillé (2)
9 10
3
Rappel
13
Modèle de mémoire
RAM Mémoire hiérarchique
R
R L L
1 2 A
A M
M
4
E/S lente Verrou technologique
Accès disque ~ 106
plus lent que accès Programmes dans le modèle RAM
RAM Fonctionne sur des grands jeux
“The difference in speed de données
read/write headbetween modern CPU OS déplace les blocs
track read/write arm technologies is
and disk
analogous to the
difference in speed in OS récents
ִ stratégies de pagination et de “prefetching”
sharpening a pencil sophistiquées
using a sharpener on ִInefficace si le programme fait
one’s desk or by taking des accès aléatoires
an airplane to the other
side of the world and
⇓
running time
magnetic surface using a sharpener on
someone else’s desk.”
(D. Comer) problèmes de passage à
Important de stocker et d’accéder l’échelle (scalability)
20
5
Rôles d’un DBA Tendance actuelle
21 22
Composants de
Exemple avec Oracle l’architecture d'Oracle
24
6
1. Les clients et les Connexion à une base
serveurs d'Oracle de données
7
Architecture
Instance Oracle : la
2. Serveur Oracle SGA
31 32
8
Instance Oracle :
Processus en arrière plan
Fichier de
mots de passe
35 Base de données 36
9
3. Traitement d'une La shared Pool de la
requête d'interrogation SGA
Le processus client envoie la requête taille en octet définie par le paramètre
au processus serveur SHARED_POOL_SIZE
Le processus serveur effectue l'analyse ִ 80 Mo sur 10g !
syntaxique et sémantique de la requête Sert pour l’allocation de mémoire des
ִutilise la shared pool de la SGA pour requêtes SQL et code PL/SQL
compiler l'ordre composée de :
ִretourne l'état (analyse correcte ou ִ« library cache »
incorrecte) au processus client.
contient le texte de la requête, le code analysé
Exécution de la requête et un plan d'exécution déterminé par
l'optimiseur
Récupération des résultats
ִcache du dictionnaire de données
ִle processus serveur envoie les lignes pour l'analyse sémantique de la requête
extraites par la requête (à partir du cache
de données si les données y ont déjà été
chargées)
37 38
39 40
10
4. Traitement d'un ordre
de mise à jour (DML) Rollback Segment
Similaire à une requête d'interrogation
pour la phase d'analyse Permet la gestion des transactions
ִCOMMIT : valide un ensemble de MAJ
Phase d'exécution différente :
ִROLLBACK : annule un ensemble de MAJ
1. le processus serveur lit des blocs de
données et de rollback à partir Avant d'effectuer une modification des
des fichiers de données données, le processus serveur
du buffer cache de données enregistre l'ancienne valeur dans un
2. Si des blocs ne sont pas déjà dans le rollback segment
cache, copie des blocs du disque dans le
cache
Intérêts :
3. Mise à jour de verrou sur les données ִsi la transaction échoue, les modifications
"déjà faites" sont annulées
4. Enregistrement des modifications
ִAssure une lecture cohérente des données
à apporter au rollback (image avant)
par les autres transactions
et aux données (nouvelles valeurs)
ִen cas de panne, les données sont
dans le cache de reprise (redo log)
restaurées dans un état cohérent.
5. Mêmes opérations dans le cache de
données
Ces blocs sont marqués comme modifiés
(différents des blocs stockés sur disque) 41 42
Database Writer
Cache de reprise (DBWR)
43 44
11
5. Traitement des
Log Writer (LGWR) opérations COMMIT
Objectifs SCN pour System Change Number
ִEnregistrer toutes les modifications ִà chaque transaction validée ->
apportées aux données afin 1 identifiant de modification SCN
d'assurer la reprise après panne ִsorte d'horodateur interne
Enregistre les modifications du permet de vérifier la cohérence
indépendamment de la date/heure du SE
cache de reprise de la SGA dans
les fichiers de reprise Lorsqu'un ordre COMMIT est
effectué:
Effectue des écritures
1. Le processus serveur enregistre dans
séquentielles
le cache de reprise 1 SCN
ִquand le cache de reprise est plein à
2. LGWR effectue une lecture contiguë
1/3
de tout le cache de reprise (SCN
ִune transaction est validée inclu) dans les fichiers de reprise
ִjuste avant que DBWR ne fonctionne 3. L'utilisateur reçoit "commit complete"
Comme le cache de reprise, les 4. Le processus serveur libère les
fichiers de reprise sont organisés verrous
de façon circulaire
ִcapacité infinie 45 46
Les outils
d'administration Exemples d'outils
47 48
12
Objectifs
49 50
Prerequis
13
Objectifs Instance Oracle
53 54
Utilisateurs
Authentification
administrateurs
14
Instance Oracle : Instance Oracle :
Rappel Rappel (2)
Instance et Service NT
Création d'une instance
serveur Oracle = instance + BD
Pouvoir se connecter comme
Sous NT, à chaque serveur est
administrateur associé un service
Editer le fichier de paramètres Pour créer un service, il faut
init<sid>.ora utiliser l'outil ORADIM
Sous sqlplus, commande STARTUP ִpermet d'exécuter plusieurs
ִExemple : serveurs Oracle sur la même
machine
connect sys/oracle as sysdba
startup nomount
ִAttention au nombre de caractères
pfile=d:\data\initU01.ora < à 4 pour les noms de service (V8)
ִCréer une instance, e.g. nommée
Aucune vérification de cohérence à ce IF3
niveau ORADIM -NEW -SRVC OracleServiceIF3
[-SYSPWD sys_PWD]
Allocation de la SGA [-sid SRVCNAME]
[-MAXUSERS NUMBER]
[-STARTMODE AUTO, MANUAL]
[-PFILE FILENAME]
ִSupprimer une instance
ORADIM -DELETE -SID IF3
59 60
15
Estimer la taille de la
Le fichier de paramètres
SGA
Paramètre obligatoire :
dépend de la quantité de ִ db_name : idf de la bd, < à 8 charactères, pas de chiffre
comme 1er caractère
mémoire vive disponible Paramètres communément modifiés:
en général, on a : ִ control_files : nom des fichiers de contrôle
ִ compatible : version du serveur avec laquelle cette
ִ taille SGA = 40% taille RAM instance est compatible
ִ db_block_buffers : nombre de blocs mis en cache dans la
62
Exemple de fichier de
Fichier de paramètres paramètres
Créer un fichier init<sid>.ora à
control_files=(D:\oracle\product\10.2.0\ora
partir d'un fichier existant data\Mais\control.001.ctl,
D:\oracle\product\10.2.0\oradata\Mais\contr
Editer le pour modifier certains ol.002.ctl)
63 64
16
Paramètres d'initialisation
Démarrage par étapes dynamiques
65 66
La commande
Restauration d'instance STARTUP
Fait suite à un problème Syntaxe :
ִdu SE, de l'instance STARTUP [FORCE] [RESTRICT] [PFILE=filename]
ִdu matériel ... [EXCLUSIVE | PARALLEL | SHARED]
[ OPEN [RECOVER][DATABASE]
le processus SMON | MOUNT | NOMOUNT]
ִrestaure automatiquement l'instance
lorsque l'instance est redémarrée open : permet aux utilisateurs d'accéder à la
le cache des données est restaurée à partir base
du fichier de reprise mount : monte la base mais accès limités
ִles étapes sont : nomount : sga + processus arrière plan. Pas
rolling forward : restaure les données d'accès à la base
enregistrées dans les fichiers de reprise mais exclusive : seule cette instance accède la
non enregistrées dans le fichier de données base
ouverture de la base de données (accès parallel ou shared : avec server // Oracle
possible sur toutes les données non force : annule l'instance courante avant de
verrouillées) démarrer normalement
rolling back : les transactions non validées restrict : accès réservés aux utilisateurs
sont annulées ayant le privilège RESTRICTED SESSION
recover : démarre la restauration quand la
base démarre
67 68
17
La commande Vues dynamiques sur
SHUTDOWN les performances
69 70
18
SQL*LOADER (Chargement V$LATCH_MISSES PERFORMANCE REDO LOGS
direct) V$LATCH_PARENT V$GLOBAL_TRANSACTION (V8) V$LOG
V$LOADCSTAT V$LOCK V$OBJECT_DEPENDENCY V$LOGFILE
V$LOADPSTAT (V8) V$LOCK_ACTIVITY V$SHARED_POOL_RESERVED V$LOGHIST
V$LOADTSTAT V$LOCK_ELEMENT V$SORT_SEGMENT V$LOG_HISTORY
FIXED Vues V$LOCKED_OBJECT V$SORT_USAGE (V8)
ROLLBACK SEGMENTS
V$FIXED_TABLE V$LOCKS_WITH_COLLISIONS V$STATNAME
V$ROLLNAME
V$FIXED_VIEW_DEFINITION V$PING V$SYSSTAT
V$ROLLSTAT
V$RESOURCE V$SYSTEM_CURSOR_CACHE
V$INDEXED_FIXED_COLUMN SECURITE et PRIVILEGES
V$RESOURCE_LIMIT (V8) V$SYSTEM_EVENT
I/O V$ENABLEDPRIVS
V$TRANSACTION_ENQUEUE (V8) V$TRANSACTION
V$FILESTAT V$PWFILE_USERS
V$_LOCK OPTION REQUETE
V$WAITSTAT SESSIONS
V$_LOCK1 PARALLELLE
Verrous V$ACCESS
Divers V$EXECUTION
V$BUFFER_POOL (V8) V$EXECUTION_LOCATION (V8) V$MYSTAT
V$TIMER
V$CACHE_LOCK V$PQ_SESSTAT V$PROCESS
V$TYPE_SIZE
V$CLASS_PING (V8) V$PQ_SLAVE V$SESSION
V$DLM_CONVERT_LOCAL (V8) V$_SEQUENCES (V8)
V$PQ_SYSSTAT V$SESSION_CONNECT_INFO
V$DLM_CONVERT_REMOTE (V8) Serveur MULTI-THREADED V$SESSION_CURSOR_CACHE
V$PQ_TQSTAT
V$DLM_LATCH (V8) et PARALLEL
PARAMETRES ORACLE V$SESSION_EVENT
V$DLM_MISC (V8) V$CIRCUIT
V$NLS_PARAMETERS V$SESSION_LONGOPS (V8)
V$ENQUEUE_LOCK (V8) V$DISPATCHER V$SESSION_OBJECT_CACHE (V8)
V$DISPATCHER_RATE (V8) V$NLS_VALID_VALUES
V$EVENT_NAME V$SESSION_WAIT
V$MTS V$PARAMETER
V$FALSE_PING V$SESSTAT
V$QUEUE V$SYSTEM_PARAMETER
V$FILE_PING (V8) V$SESS_IO
V$LATCH V$REQDIST
V$LATCHHOLDER V$SHARED_SERVER
V$LATCHNAME V$THREAD
V$LATCH_CHILDREN
73 74
Mode
"restricted session" Fermeture de sessions
75 76
19
Informations sur
Fichiers de trace l'instance
Prérequis
Base de données
Oracle Un compte autorisé DBA
ִtous les privilèges sur le système
d'exploitation
Une mémoire suffisante pour le
démarrage de l'instance
ִSGA
ִexécutable Oracle
ִles processus
Un espace disque suffisant pour
stocker la base de données
ִau moins 1 fichier de données (2 sur 10g)
ִau moins 2 fichiers de reprise
ִau moins 1 fichier de contrôle
20
BD Oracle : Rappel Emplacements des
fichiers
désignée par un nom DB_NAME Conserver au moins 2 copies du
ִsouvent le même que celui de l'instance fichier de contrôle sur 2 machines
ִreprésente les structures physiques des et/ou disques différents
données => multiplexer
se compose de fichiers du SE Multiplexer les fichiers de reprise
ִfichiers de données (>=1 ou 2 ☺) Séparer les fichiers de données afin
stocke le dictionnaire des données, les ִd'éviter la fragmentation de la base
objets utilisateurs et les « images avant »
séparer les données applicatives ou
des données
temporaires dans différents tablespaces
ִfichiers de reprise (redo log) (>=2)
ִminimiser les accès disques ou E/S
stocke toutes les modifications apportées à
séparer les tables et les index dans
la base de données (pour la reconstruire en
différents tablespaces
cas de panne)
ִfichiers de contrôle (>=1) OFA (Optimal Flexible Architecture)
contient les informations nécessaires à la ִconçu pour optimiser l'organisation des
mise à jour et à la vérification de l'intégrité fichiers Oracle sous Unix
des données.
ִExiste aussi sur NT
ִAutres fichiers :
fichier de paramètres, fichier mot de passe,
fichiers de reprise archivés 81 82
21
Démarrage de l'instance Après la création
et création de la BD de la base de données
Dictionnaire de Objectifs
données et
Packages standards Sur le dictionnaire :
ִConstruction des vues du dictionnaire de
données
script catalog.sql
ִUtilisation du dictionnaire
par exemple, pour l'évaluation sémantique des
requêtes
87 88
22
Dictionnaire de
données Vues du dictionnaire
Le préfixe USER
Fournit des informations sur
ִUSER_XXX : objets qui appartiennent
ִla structure logique et physique d'une à l'utilisateur
base de données
ִExemple :
ִles noms, définitions, et allocation USER_TABLES : contient toutes les tables
d'espace des objets des schémas d'un utilisateur
ִles contraintes d'intégrité Le préfixe ALL
ִles utilisateurs, les privilèges de la base ִALL_XXX : objets qui sont accessibles
ִl'audit aux utilisateurs (grâce colonne
Composé de tables et de vues : OWNER)
ִLes tables : Le préfixe DBA
tables normalisées ִDBA_XXX : objets de toute la base
• exemple : IND$, OBJ$ ...
ִAccédées par
créées à partir du script sql.bsq
l'administrateur ou
ִLes vues : un utilisateur ayant le privilège système
simplifient l'accès aux tables SELECT ANY TABLE
créées à partir du script catalog.sql
Ordre d'inclusion :
89 ִUSER <= ALL <= DBA 90
TABLE_TYPE
dictionary Généralités USER_OBJECTS ou OBJ Liste des Objets appartenant à l’utilisateur.
dict_columns OBJECT_NAME OBJECT_ID
OBJECT_TYPE CREATED
dba_tables Informations sur les objets LAST_DDL_TIME TIMESTAMP
STATUS COMMENTS
dba_objects utilisateurs, e.g. tables, USER_AUDIT_OBJECT Trace des commandes exécutées sur des
dba_lobs colonnes … objets appartenant à l’utilisateur.
USER_AUDIT_SESSION Trace des connexions et des déconnexions
dba_tab_constraints de l’utilisateur.
dba_users Informations sur les USER_AUDIT_STATEMENT Trace des commandes suivantes:GRANT,
REVOKE, AUDIT, NOAUDIT, et
dba_sys_privs privilèges et les rôles ALTER SYSTEM
dba_roles utilisateurs USER_TAB_COLUMNS ou COLS Liste des colonnes des tables, vues ou
cluster créés par l’utilisateur
dba_extents Allocation d’espace pour USER_COL_GRANTS Liste des Autorisations sur les colonnes pour lesquelles
dba_free_space les objets de la base l’utilisateur est le propriétaire ou a l’autorisation
USER_COL_GRANTS_MADE
dba_segments Liste des Autorisations attribuées par cet utilisateur
dba_rollback_segs Structure générale de la sur les colonnes ou tables ou vues lui appartenant.
USER_CONSTRAINTS Liste des Contraintes définies sur les tables de
dba_data_files base l’utilisateur.
dba_tablespaces OWNER CONSTRAINT_NAME
CONSTRAINT_TYPE TABLE_NAME
dba_audit_trail Information sur l’audit SEARCH_CONDITION R_OWNER
R_CONSTRAINT_NAME DELETE_RULE
dba_audit_objects STATUS
dba_audit_obj_opts
91 92
23
USER_CONS_COLUMS Listes des Colonnes intervenant dans la définition des
contraintes sur les tables de l'utilisateur
USER_DEPENDENCIES Listes des dépendances entre tables ou vues et VUES RELATIVES AUX OBJETS
procédures, fonctions et packages
USER_ERRORS Listes des Erreurs courantes relatives aux procédures
ACCESSIBLES A UN
fonctions ou corps de package. UTILISATEUR
USER_IND_COLUMNS Liste des colonnes, des index définis sur les tables de
l'utilisateur.
USER_INDEXES ou IND Liste des index créés par l'utilisateur ALL_CATALOG Liste de toutes les Tables, vues, synonymes et
USER_OBJECTS ou OBJ Tous ceux appartenant à l'utilisateur séquences accessibles à l'utilisateur.
OWNER TABLE_NAME
USER_RESOURCE_LIMITS Description des valeurs limites des ressources pour
TABLE_TYPE
cet utilisateur.
ALL_COL_COMMENTS Liste des commentaires relatifs aux colonnes des tables
USER_ROLE_GRANTS Liste des rôles attribués à cet utilisateur. et vues accessibles à l'utilisateur.
USER_SEQUENCES ou SEQ Liste des séquences créées par l'utilisateur ALL_COL_GRANTS Liste des colonnes pour lesquelles l'utilisateur est
USER_SOURCE Liste des textes des procédures packages, fonctions et autorisé à accéder.
corps de package créés par l'utilisateur. ALL_CONSTRAINTS Liste des contraintes définies sur les tables accessibles à
USER_SNAPSHOTS Liste des snapshots créés par l'utilisateur. l'utilisateur.
USER_SYNONYMS ou SYN Liste des synonymes privés crées par l'utilisateur. ALL_CONS_COLUMNS Liste des colonnes intervenant dans la définition des
contraintes définies sur les tables accessibles à l’utilisateur.
USER_SYS_GRANTS Liste des privilèges systèmes attribués à cet utilisateur.
ALL_DEPENDENCIES Liste des dépendances entre tables ou vues et procédures,
USER_TAB_COMMENTS Liste de commentaires relatifs aux tables et fonctions et package, ces objets étant accessibles à
vues de l'utilisateur. l’utilisateur.
USER_TAB_GRANTS_MADE Liste des Autorisations sur les objets appartenant à ALL_ERRORS Liste des erreurs courantes relatives aux procédures,
l'utilisateur. fonctions et packages, ces objets étant accessibles à
l’utilisateur.
USER_TAB_GRANTS_RECD Liste des objets sur lesquels l'utilisateur a reçu une
autorisation. ALL_IND_COLUMNS Liste des colonnes des index définis sur les tables
accessibles à l’utilisateur.
USER_TABLES ou TABS Liste des tables créées par l'utilisateur.
ALL_INDEXES Liste des index définis sur les tables accessibles à
USER_TABLESPACES Liste des tablespaces accessibles à cet utilisateur. l’utilisateur.
USER_TRIGGERS Liste des triggers créés par l'utilisateur. ALL_OBJECTS Liste des objets accessibles à l'utilisateur.
USER_TS_QUOTAS Description des quotas de l'espace des tablespaces OWNER OBJECT_NAME
attribués à l'utilisateur. OBJECT_ID OBJECT_TYPE
USER_USERS Informations sur ce user. CREATEDLAST_DDL_TIME
TIMESTAMP STATUS
USER_VIEWS Liste des vues créées par cet utilisateur.
ALL_SEQUENCES Liste des séquences accessibles à l'utilisateur.
CONSTRAINTS_DEFS Liste des définitions de contraintes relatives aux tables
ALL_SOURCE Liste des textes de procédures, fonctions et corps de
accessibles à l'utilisateur. package accesibles à l'utilisateur.
93 94
24
DBA_EXP_VERSION Numéro de version de la dernière session
d'importation. VUES DYNAMIQUES
DBA_EXTENTS Liste des extensions de tous les tablespaces de la base.
DBA_FREE_SPACE Description des extensions libres dans tous les
tablespaces de la base.
DBA_IND_COLUMNS Liste des colonnes de tous les index définis sur toutes
les tables de la base.
DBA_INDEXES Liste des index de la base. V$ACCESS Liste des objets verrouillés actuellement.
DBA_OBJET_AUDIT_OPTS Liste des options d'audit pour toutes les tables et V$BGPROCESS Description de l’activité des processus
vues de la base. d’arrière plan.
DBA_OBJECTS Liste de tous les objets de la base. V$DATABASE Description de la base de données à partir
DBA_PROFILES Liste de s profils attribués aux utilisateurs. du fichier de contrôle.
DBA_ROLE_GRANTS Liste des rôles attribués aux utilisateurs, et à d'autres rôles. V$DATAFILE Description de fichiers de données à partir
DBA_ROLES Liste de tous les rôles dans la base. du fichier de contrôle.
DBA_ROLLBACK_SEGS Liste des segments d'annulation de la base V$DISPATCHERS Description de l'activité des processus
DBA_SEGMENTS Description de tous les paramètre de stockage dispatchers.
de tous les segments de la base. V$FILESTAT Statistiques sur le opérations de
DBA_SEQUENCES Liste de toutes les séquences de la base. lecture/écriture sur un fichier.
DBA_SOURCE Liste des textes de toutes les procédures, packages, V$LOGFILE Description des fichiers de reprise à partir
fonctions et corps de package du fichier de contrôle.
DBA_SNAPSHOTS Liste de tous les snapshots de la base. V$PARAMETER Description des valeurs actuelles des
DBA_SNAPSHOTS_LOGS Liste de tous les snapshots logs dans la base. paramètres d’initialisation.
DBA_SYNONYMS Liste de tous les synonymes de la base. V$PROCESS Description des processus actifs.
DBA_SYS_GRANTS Liste des privilèges systèmes attribués aux V$SESSION Description des sessions courantes.
utilisateurs et aux rôles.
V$SGA Description sommaire de la SGA.
DBA_TAB_COLUMNS Liste des colonnes des tables, vues ou cluster
V$GASTAT Description détaillée de la SGA.
DBA_TAB_COMMENTS Liste des commentaires relatif aux tables et vues
V$SHARED_SERVERS Description des serveurs partagés.
DBA_TAB_GRANTS Liste d'autorisations sur tous les objets de la base.
V$TRANSACTION Description des transactions en cours.
DBA_TABLES Liste des tables de la base.
DBA_TABLESPACES Liste des tablespaces de a base.
DBA_TRIGGERS Liste des triggers de la base.
DBA_TS_QUOTAS Description des quotas de l'espace des tablespaces
DBA_USERS Informations sur tous les utilisateurs.
DBA_VIEWS Liste des vues de la base.
97 98
Exemples de packages
Scripts administratifs fournis par Oracle
25
Requêtes sur les objets
stockés
101
26
Partie 3 Fichiers de contrôle
Structure physique
de stockage
105 106
Utilisation du fichier de
Objectifs contrôle
27
Contenu du fichier de Détails du fichier de
contrôle contrôle
Paramètres influençant sa taille :
Le nom et l'identification de la base de
ִMAXLOGFILES
données
ִMAXLOGMEMBERS
le nom et l'emplacement des fichiers ִMAXLOGHISTORY
ִde données ִMAXDATAFILES
ִde reprise ִMAXINSTANCES
le nom des tablespaces Requêtes sur le fichier de contrôle
La date et l'heure de la création de la ִV$CONTROLFILE
base de données NAME
ִV$PARAMETER
le numéro de séquence du fichier de NAME
reprise courant VALUE
informations sur le dernier point de ִV$CONTROLFILE_RECORD_SECTION (V8)
TYPE
synchronisation
RECORDS_SIZE
historique du journal RECORDS_TOTAL
RECORDS_USED
109 110
Multiplexage
du fichier de contrôle
111 112
28
Utilisation des fichiers
Objectifs de reprise (rappel)
113 114
115 116
29
Point de
Rappel synchronisation
Serveur Oracle enregistre Un point de synchronisation se produit:
séquentiellement toutes les ִquand LGWR change de groupe courant
modifications dans le buffer de ִquand une instance s'arrête (N,T ou I)
reprise circulaire de la SGA ִavec les paramètres d'initialisation
LOG_CHECKPOINT_INTERVAL
Transfert du buffer vers le groupe
LOG_CHECKPOINT_TIMEOUT
courant de reprise par LGWR
ִcommande de l'administrateur
ִquand un commit est exécuté ALTER SYSTEM SWITCH LOGFILE
ִquand le buffer est rempli au 1/3 ALTER SYSTEM CHECKPOINT GLOBAL
ִlors d'un délai d'attente du LGWR (3s) • plus rapide, n'implique pas de switch logfile
ִavant que DBWR n'écrive les blocs modifiés ִSauvegarde d'un tablespace activé ou
du buffer cache de données dans les quand un tablespace est désactivé
fichiers de données Actions faites :
LGWR écrit séquentiellement dans les ִtous les blocs modifiés du cache de
fichiers de reprise données qui sont aussi traités par le cache
ִorganisation circulaire des groupes de reprise sont écrits par DBWR
ִquand un groupe est plein, on passe au ִle processus en arrière plan CKPT met à
suivant jour les fichiers de contrôle pour signaler
117 son aboutissement 118
Archivage
Archivage
des fichiers de reprise
Dépend de la politique locale vis à vis
Assure une cohérence parfaite des
des données, i.e.
données en cas de panne
ִUne perte des données peut-elle être
envisagée ? Processus en arrière plan ARCH
• Oui ? Non ? ִdéclenché à chaque basculement
ִSi oui, quelle est la durée maximale Archivage
tolérable ?
• 1 jour ? 1 semaine ?
ִsoit manuel
c'est à l'administrateur de déclencher ou pas un
Décision importante de l'administrateur archivage des fichiers de reprise
mode ARCHIVELOG • ALTER SYSTEM ARCHIVE LOG
• fichiers de reprise sont archivés • pas conseillé par Oracle
– permet de garder toutes les modifications ִsoit automatique
de la base
paramètre de l'instance
mode NOARCHIVELOG LOG_ARCHIVE_START=true
• fichiers de reprise sont écrasés (quand une
boucle est faite)
dans init.ora, voir aussi paramètres :
• LOG_ARCHIVE_DEST
– On accepte de perdre en cas de panne des
modifications • LOG_ARCHIVE_FORMAT
30
Requêtes sur les
fichiers de reprise
Sur l'archivage :
ִSous SQLPlus :
ARCHIVE LOG LIST
ִInterroger les vues
V$DATABASE
• name, log_mode
V$INSTANCE
• archiver
V$LOG_HISTORY, V$ARCHIVED_LOG,
V$ARCHIVE_DEST
sur les groupes
V$THREAD
• groups, current_group#, sequence#
121 122
Modification
de fichiers de reprise Suppression
Ajout de groupes
ִALTER DATABASE ADD LOGFILE
Suppression de groupes de fichiers de
('D:\data\DISK3\log3a.rdo', reprise
'D:\data\DISK4\log3b.rdo') size 150 K; ALTER DATABASE DROP LOGFILE
GROUP 3
Ajout de membres
ִALTER DATABASE ADD LOGFILE MEMBER Suppression de membres fichiers de
'D:\data\DISK3\log1b.rdo' TO GROUP 1, reprise
'D:\data\DISK3\log2b.rdo' TO GROUP 2;
ALTER DATABASE DROP LOGFILE
Déplacement des fichiers de reprise MEMBER 'D:\data\DISK3\log2b.rdo'
1. Arrêter la base de données ִLe groupe doit être inactif
2. Copier les fichiers de reprise au nouvel ִun autre membre du groupe doit exister
emplacement ִSi mode ARCHIVELOG et que le groupe du membre
3. Monter la base de données n'a pas été archivé, opération non permise.
4. Exécuter un ordre Suppression des contenus des fichiers
ALTER DATABASE [db] RENAME FILE
ALTER DATABASE CLEAR LOGFILE
['file' [, 'file'] … TO ['file' [, 'file'] … 'D:\data\DISK3\log2a.rdo'
5. Ouvrir la base de données
(6. supprimer l’ancien fichier)
123 124
31
Objectifs
125 126
Objectifs
Fichiers de données
et tablespaces Description de la structure logique de
la base de données
Création des tablespaces
Changement de la taille des
tablespaces par différentes méthodes
Changement du statut et stockage de
l'initialisation des tablespaces
Déplacement des tablespaces
Préparation des tablespaces requis
127 128
32
Utilisation du
Généralités tablespace
129 130
131 132
33
Lien Structure logique
segments/extents/blocs
Segments
ִEspace alloué à un type spécifique
de structure logique de stockage
dans un tablespace
segments de table, segments d'index,
segment temporaire, rollback segment
Extents
ִEnsemble de blocs contigus.
ִChaque type de segment est
composé d'un ou plusieurs extents
Blocs de données
ִcontient un ou plusieurs blocs de
fichier physique alloué à partir d'un
fichier de données existant
ִplus petite unité d'E/S
ִ sa taille vaut DB_BLOC_SIZE
133 134
Tablespace SYSTEM et
non-SYSTEM
S'il en existe un
seul, c'est lui ! Introduisent plus
de souplesse dans
l'administration
Ne devrait pas
contenir de
données
utilisateurs
Depuis 10 g,
tablespace SYSAUX
est nécessaire
135 136
34
Paramètres de
Syntaxe stockage
137 138
139 140
35
Déplacement
Statut OFFLINE de fichiers de données
141 142
36
Informations (2) Quelques conseils
145 146
Segment de table
Notions sur les
segments Rappels de terminologie
ִ BD = ensemble de tables
ִ table = ensemble de tuples
ִ tuple = ensemble de valeurs
Comment stocker les tuples sur
disque?
ִCertes dans des fichiers, mais
comment ?
ִSuivant quelle organisation ?
147
37
Codage des tuples Codage d’un bloc
Or, un tuple :
ִEn tête de tuple, table d’accès aux champs
Notion de blocs
ִPlus petite unité de transfert entre MV et MS
ִLe temps de recherche d’un tuple de clef k dans
un bloc B est négligeable par rapport au temps
de chargement du bloc
ִHypothèses courantes :
probabilité « fixe » qu’un bloc requis soit déjà en
mémoire
1 accès disque = Temps de recherche + Temps de
transfert = Temps constant
Si on sait où se trouve un tuple, alors il est
désigné par : <clef, @bloc>
38
Exemple de Codage avec des B-
recherche par la clé Arbres
Tuples rangés dans un ordre quelconque Construire une table d’accès aux ≠
(tas) blocs
Soit n = 106 tuples
1 tuple = 200 octets
nn
o ye
Au max : 4046/200 = E = 20 tuples / bloc
m
Nombre min de bloc : 106 / 20 = 50000 blocs
n
E tuple
Chercher unm
in de clef K ?
4 provoquer 50000 accès bloc
=> peut
Au mieux : 1 accès bloc = 1/100 s
Au pire : 50000/100 s ~ 8 min
Ordre total sur la clé doit exister
Les B-Arbres :
formules de calcul Suite
39
Retour sur l’exemple Suite et fin
40
Retour sur les SGBD Types de segments
et Oracle avec Oracle
Cluster
ִles lignes d'un cluster sont stockées
suivant une valeur clé de colonne
163 164
41
Cluster (fin) Types de segments (3)
Index
ִToutes les entrées d'un index sont
stockées dans un segment d'index
ִSi une table à 3 index, 3 segments d'index
sont utilisés
ִIntérêts : accélère les recherches, les
jointures …
Index-Organized table
ִles données sont stockées dans l'index
basé sur une valeur clé
Partition d'index
ִmême idée que Partition de table
165 166
42
Priorité des clauses de Allocation et
stockage restitution d'extents
169 170
ou
Utiliser Oracle Storage Manager
• tools->Coalesce Free Extents
171 172
43
Blocs de base de
données
Rappels :
ִplus petite unité d'E/S
ִconsiste en 1 ou plusieurs blocs SE
ִtaille fixé par DB_BLOCK_SIZE : donné à
la création de la base de données
Un bloc contient :
ִentête de bloc :@ du bloc de données,
répertoire de la table et de la ligne et
entrées transactionnelles. Croit de façon
descendante.
ִespace des données : les données d'une
ligne sont insérées de manière
ascendante.
ִespace libre : se trouve au milieu !
173 174
175 176
44
PCTUSED
177 178
Les vues du
dictionnaire
DBA_TABLESPACES
Tablespaces
* *
DBA_SEGMENTS DBA_DATA_FILES
Segments Fichiers de données
* *
DBA_EXTENTS DBA_FREE_SPACE
Extents utilisés Extents libres
179 180
45
Information sur le Information sur
Segment l'extent utilisé
Interroger la vue
Interroger la vue
ִDBA_EXTENTS
ִDBA_SEGMENTS identification :
information générale : • owner
• owner, segment_name • segment_name
• segment_type, tablespace_name • extent_id
taille : Emplacement et taille
• extents, blocks • tablespace_name
initialisation du stockage : • relative_fno
• initial_extent, next _extent • file_id
• min_extent, max_extent • block_id
• pct_increase • blocks
ִExemple : ִExemple :
SELECT segment_name, tablespace_name, SELECT extent_id, file_id, block_id, blocks
extents, blocks FROM DBA_EXTENTS
FROM DBA_SEGMENTS WHERE owner = 'SCOTT'
WHERE owner = 'SCOTT' AND segment_name = 'EMP'
181 182
Information Tendance à la
sur l'extent libre fragmentation
183 184
46
Objectifs
185 186
187
47
Gestion au niveau
segment 1/4 Création 2/4
191 192
48
Intérêts
Gestion des segments
temporaires Outil technique permettant
d’implémenter une opération des SGBD
: le TRI
Nécessaire pour tri « out of core »
Quantité de mémoire utilisée par un
processus pour trier
ִparamètre SORT_AREA_SIZE
Allouée en PGA pour chaque session !!!
Allouée en SGA si architecture MTS
ִSi le volume de tri dépasse
plusieurs opérations de tri sont nécessaires
résultats intermédiaires stockés sur disque
Segments temporaires créés dans le
tablespace temporaire affecté à
l'utilisateur pour trier
193 194
195 196
49
Informations sur les
segments temporaires
Interroger les vues
ִV$SORT_SEGMENT : Statistiques sur
le segment de tri
ִV$SESSION et V$SORT_USAGE :
activité du segment temporaire
ִV$SORT_USAGE : tri actif en cours
ִDBA_SEGMENTS : donne le type du
segment temporaire
Exemple :
ִselect s.username, u."USER",
u.tablespace, u.contents,
u.extents, u.blocks
from V$SESSION s, V$SORT_USAGE v
where s.saddr = u.session_addr;
197
50
Un peu de recul
201 202
51
Triggers Informations relatives
Permet de définir des contraintes lors Pour les contraintes, interroger les
d'insertion/suppression/modification de vues
lignes dans une table ִDBA_CONSTRAINTS
Activation ִDBA_CONS_COLUMNS
ִALTER TABLE scott Pour les triggers, interroger les vues
ENABLE ALL TRIGGERS; ִDBA_TRIGGERS
Désactivation ִDBA_TRIGGERS_COLS
ִALTER TRIGGER scott.tg1 DISABLE; ִDBA_OBJECTS
Suppression
ִDROP TRIGGER scott.tg1;
205 206
52
Qu’est-ce que la gestion
de la sécurité ?
209 210
Quelques notions de
Niveaux de sécurité base
211 212
53
Implémentation de la
sécurité
Gestion des
Niveau système d’exploitation utilisateurs
ִAutorisation d’accès au serveur
ִProtection des fichiers Oracle
fichiers de données, fichiers de reprise,
fichiers de contrôle, dump,
sauvegardes, …
ִProtection des copies, réplicats, ...
Niveau Oracle
ִUtilisateurs
ִRôles
ִProfiles
ִAffectation directe des privilèges
213 214
215 216
54
Exemples Modification
Sous sqlplus :
Avec ordre ALTER USER
ִAuthentification par Oracle
CREATE USER Paul
IDENTIFIED BY edze!2z Exemples :
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp ִChangement du compte
QUOTA 1M ON data01; ALTER USER Paul
IDENTIFIED BY edze!2z <- ligne optionnelle
PASSWORD EXPIRE;
ִAuthentification par le SE
CREATE USER Paul ִSuppression de quota
IDENTIFIED EXTERNALLY ALTER USER Paul
DEFAULT TABLESPACE data01 QUOTA 0 ON data01;
TEMPORARY TABLESPACE temp • les données existantes restent
QUOTA 1M ON data01; • mais plus possible d'en insérer d'autres
ִquota illimité
ִConseil Oracle : A utiliser avec ALTER USER Paul
modération ! QUOTA UNLIMITED ON data01;
ִNom réel
ALTER USER Paul
GLOBALY AS "Jean Paul Léponge";
217 218
Remarque : ִselect *
ִ impossible de supprimer un utilisateur from dba_ts_quotas
connecté where username= 'PAUL';
219 220
55
Profils
221 222
56
Informations sur les
profils
Exemples :
ִselect distinct profile
from dba_profiles;
ִselect *
from dba_profiles
where profile='DEFAULT';
225 226
Attribution de privilèges
Privilèges systèmes
227 228
57
Informations sur les
Privilèges Objets privilèges
Les principaux privilèges Objet :
ALTER, DELETE, INDEX, REFERENCES
Interroger les vues
(pour les tables), SELECT, UPDATE, ִpour les privilèges SYSTEM :
EXECUTE (pour les procédures) DBA_SYS_PRIVS
SESSION_PRIVS
Exemples : ִpour les privilèges OBJET :
GRANT execute ON dbms_pipe DBA_TAB_PRIVS
TO public; DBA_COL_PRIVS
Rôles
231 232
58
Création/Affectation de Rôles par défaut aux
Rôles utilisateurs
Création Syntaxe :
ִOrdre CREATE ROLE ALTER USER … DEFAULT ROLE
[…|ALL] [EXCEPT …];
ִExemples :
CREATE ROLE Vente;
Exemples :
CREATE ROLE Vente
ALTER USER scott
IDENTIFIED BY bonus; DEFAULT ROLE Vente, Achat;
CREATE ROLE Vente
IDENTIFIED EXTERNALLY; ALTER USER scott
Affectation DEFAULT ROLE ALL;
233 234
235 236
59
Informations sur les
rôles
237
60
Sauvegarde logique vs
physique
241
Différents types de
sauvegarde Influence de l'archivage
61
Sauvegarde à froid Sauvegarde à chaud
Exemple
(mode ARCHIVELOG) Requêtes
247 248
62
Restaurations Restauration: le principe
Mode Noarchivelog
ִperte des données saisies depuis la
dernière sauvegarde
ִrestauration de tous les fichiers
Mode Archivelog
ִDifférentes restaurations :
Restauration complète
• Base de données fermée
• Base de données ouverte, tablespaces
désactivés
• Base de données ouverte, tablespaces
désactivés, fichiers de données endommagés
• Fichier de contrôle corrompu
ִRestauration incomplète
• basé sur l'annulation
• basé sur les modifications et sur le temps
ִcommande 'recover'
doc dans SQL*Plus !
249 250
Restauration en mode
Restauration complète Archivelog
63
Exemple de
restauration partielle
Mode Archivlog
base ouverte, tablespace désactivé
253
64
Coté serveur
Concept de base :
Partie 8 "mettre un processus sur le
serveur NT à l'écoute de
connexion sur un serveur Oracle
par l'intermédiaire d'un ou
plusieurs protocoles réseaux"
Protocoles réseaux
ִe.g., TCP/IP, NMP, …
Configuration du Serveur BD Oracle
réseau ִinstance + base, e.g. ORCL, U01 ...
Notion de service
ִutiliser pour la réplication,
l'authentification par le SE, ...
Processus « listenerSID » qui fait
cette tâche
257 258
Exemple de fichier
Coté serveur (2) listener.ora
MESOREILLES =
Les configurations sont enregistrées (DESCRIPTION_LIST =
dans le fichier listener.ora (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lmijmp)(PORT = 1521))
Deux façons de procéder )
ִà la main, en éditant le fichier (DESCRIPTION =
(ADDRESS = (PROTOCOL = NMP)(SERVER = LMIJMP)(PIPE =
ִavec les outils graphiques ORAPIPE))
)
Créer autant de service qu'il existe de )
façon d'accéder au serveur
SID_LIST_MESOREILLES =
(SID_LIST =
(SID_DESC =
Redémarrer le PC pour prendre en (SID_NAME = ORCL)
compte les modifications )
(SID_DESC =
Utiliser lsnrctl (SID_NAME = F3)
ִcommandes utiles : )
)
status, set password 'pwd', stop 'listener',
start 'listener' PASSWORDS_MESOREILLES = (test123)
259 260
65
Exemple de fichier
Coté Client tnsnames.ora
BDTEST =
Les configurations sont enregistrées (DESCRIPTION =
dans le fichier tnsnames.ora (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = lmijmp)(PORT = 1521))
ִc:\orant\net8\admin ou )
ִc:\orant\sqlnet\admin (CONNECT_DATA =
(SERVICE_NAME = ORCL)
Deux façons de procéder )
ִà la main, en éditant le fichier )
tnsnames.ora
ִavec Net8 Easy Config
Le SID de la BD est 'ORCL'
La machine distante s'appelle 'lmijmp'
Créer un nom de service, i.e. un alias
pour accéder la base de données Le protocole réseau est TCP/IP
ִpermet aux clients de se connecter de
façon transparente
ִchoisir un nom de service pertinent, e.g.
Paye
261 262
263 264
66
Audit sous Oracle Audit des logins
265 266
67
Audit des objets Remarques sur SYS.AUD$
269 270
Objectifs
Chargement des
données Aperçu de trois techniques :
ִExport et Import
sauvegarde "logique" des données
réorganisation des données
exclusivement pour les environnements Oracle
indépendant du SE et des versions d'Oracle
ִSQL*Loader
Pour charger des données stockées ailleurs que
dans des bases Oracle
ִDirect-load insert
chargement rapide de tables
271 272
68
Export/Import
Utilitaire
Export/Import Trois modes
ִtable
ִutilisateur
ִbase de données
Mode table
ִdéfinition, données, index, triggers,
contraintes, autorisations, …
Mode utilisateur
Réorganisation logique
ִen fonction des droits de l'utilisateur
des données
Mode base de données
Migration
ִtoute la base sauf les objets de l'utilisateur
SYS
nécessite le privilège cf EXP_FULL_DATABASE
273 274
275 276
69
Utilisation d'Import Comportement d'Import
277 278
Fichiers de contrôle
Utilitaire SQL*Loader spécifie le format d'entrée, les tables de
sorties et des conditions sur le
chargement
Fichiers de données
contiennent les données au format défini
dans le fichier de contrôle
Fichiers de paramètres
facultatif, alternative au mode ligne de
Interface avec des commande
70
Deux chemins de
SQL*Loader chargement
Chemin conventionnel
ִutilise l'ordre SQL INSERT
ִfichiers de reprise sont mis à jour
ִles contraintes sont respectées
ִcomportement classique
Chemin direct
ִécriture directe dans des blocs de données
ִpas d'informations enregistrées dans les
fichiers de reprise (sauf si mode
ARCHIVELOG)
ִapplique seulement les contraintes de clé
primaire, unique et not null.
281 282
Utilisation
283 284
71
Chargement direct SGA
285
72