BDD : Notes Bahri + Cours Noël au propre
This commit is contained in:
parent
357af28af1
commit
6ab8629296
152
Cours Admin. Bases de données/Cours E.Bahri.md
Normal file
152
Cours Admin. Bases de données/Cours E.Bahri.md
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
*23/11/2017 - Cours 1*
|
||||||
|
|
||||||
|
On va DL une machine virtuelle et faire un TP en anglais. Mais d'abord, présentation globale appuyée sur cours en PDF.
|
||||||
|
|
||||||
|
Note : à partir d'un rapport fait sur TP + partiel écrit (à partir TP)
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
Connaître le modèle relationnel (prérequis pour le cours)
|
||||||
|
Documentation (EN) : [www.oracle.com](http://www.oracle.com)
|
||||||
|
Doc plus "essentielle" en FR fournie par le prof ("essentiel" en 110 pages)
|
||||||
|
|
||||||
|
## Pourquoi Oracle ?
|
||||||
|
|
||||||
|
- Très paramétrable (pas une boite noire)
|
||||||
|
|
||||||
|
- Performant en exécution de requête: on peut voir comment fonctionne le moteur de requête, comment il compile la requête
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Grands concepts
|
||||||
|
|
||||||
|
## La mémoire
|
||||||
|
|
||||||
|
Pour analyser, on a besoin de mémoire de stockage. La principale est la **SGA** (System Global Area)
|
||||||
|
|
||||||
|
- Partagée par tous utilisateurs
|
||||||
|
|
||||||
|
- Allouée au départ >> doit être la plus grosse possible
|
||||||
|
|
||||||
|
- But : mémoire tampon / optimiser entrée/sortie
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Les processus de fond
|
||||||
|
|
||||||
|
Ils exécutent des actions asynchrones d'écriture et de contrôle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**CKPT – Checkpoint**
|
||||||
|
|
||||||
|
- assure la synchronisation et la cohérence des données
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**SMON – System Monitor**
|
||||||
|
|
||||||
|
- Restaure après panne
|
||||||
|
|
||||||
|
- Nettoie segment temporaire
|
||||||
|
|
||||||
|
- Fusionne certains espaces (extents) libres
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Structure physique
|
||||||
|
|
||||||
|
Des fichiers sur le disque
|
||||||
|
|
||||||
|
- Contrôle >> spécifie nom & emplacement fichiers, nom base...
|
||||||
|
|
||||||
|
- Plusieurs fichiers de données pour stocker données
|
||||||
|
|
||||||
|
- Fichiers de reprise après panne (au moins 2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Structure logique
|
||||||
|
|
||||||
|
Ce sont des couches logiques rajoutées pour gérer plus finement la mémoire
|
||||||
|
|
||||||
|
- Bloc de données : unité de donnée la plus fine
|
||||||
|
|
||||||
|
- Extents : ensemble contigü de blocs
|
||||||
|
|
||||||
|
- Segment : ensemble d'extends dédiés à un même objet
|
||||||
|
|
||||||
|
- Tablespace : ensemble de segments. Un tablespace = un ou plusieurs fichiers de données
|
||||||
|
|
||||||
|
-> c'est là où y sont très forts chez Oracle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Contenu d'un schéma
|
||||||
|
|
||||||
|
Correspond à un utilisateur : tout l'environnement physique et logique est lié à user & espace
|
||||||
|
|
||||||
|
C'est l'ensemble des objets de l'utilisateur manipulables en SQL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Stockage des tables
|
||||||
|
|
||||||
|
Tuple = ligne, enregistrement
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Le rôle DBA
|
||||||
|
|
||||||
|
**Jamais rien écrire sur compte SYS/CHANGE_ON_INSTALL !**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Informations sur le dictionnaire
|
||||||
|
|
||||||
|
Ensemble de tables de l'utilisateur SYS, contient les infos principales
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Structure du dictionnaire
|
||||||
|
|
||||||
|
On y trouve toutes les vues des utilisateurs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Taches élémentaires d'administration
|
||||||
|
|
||||||
|
## Créer un base de données
|
||||||
|
|
||||||
|
Planifier la base : réflexion en amont sur différents points stratégiques (tables et indexes, encodage, taille des blocs...)
|
||||||
|
|
||||||
|
Étapes de création : Y a beaucoup de paramètres (voir PDF)
|
||||||
|
Une alternative consiste à laisser Oracle gérer ce qui simplifie grandement les commandes lors de la création. On le spécifie dans les paramètres d'installation.
|
||||||
|
|
||||||
|
Paramètres de l'instance : On parle de pfile (parameter file ?), pas tout bien compris mais probablement le fichier où on définit ces paramètres
|
||||||
|
Faire TOUJOURS une copie du fichier de contrôle (en avoir au moins 2)
|
||||||
|
|
||||||
|
## Démarrer une base de données
|
||||||
|
|
||||||
|
OEM (Oracle Enterprise Manager) : interface graphique
|
||||||
|
SQL*Plus : ligne de commande
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Gestion des fichiers, tablespaces & espace libre
|
||||||
|
|
||||||
|
## Fichiers de contrôle
|
||||||
|
|
||||||
|
Décrit la structure physique de la base
|
||||||
|
Extension .ctl
|
||||||
|
|
||||||
|
## Fichiers de reprise
|
||||||
|
|
||||||
|
Ce sont des sortes fichiers de log, qui notes tous les changements et sont utiles pour redémarrage après une panne
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Fichiers de données
|
||||||
|
|
||||||
|
Fichiers où sont stockées toutes les structures logiques, chaque fichier est associé à un tablespace
|
||||||
|
Extension .dat
|
|
@ -1,10 +1,8 @@
|
||||||
Cours G. Noël
|
|
||||||
========================
|
|
||||||
*04/05/2018*
|
*04/05/2018*
|
||||||
|
|
||||||
## Oracle
|
# Oracle
|
||||||
|
|
||||||
### Types de données
|
## Types de données
|
||||||
|
|
||||||
* Caractères
|
* Caractères
|
||||||
* Varchar2
|
* Varchar2
|
||||||
|
@ -18,9 +16,9 @@ Cours G. Noël
|
||||||
* RowID
|
* RowID
|
||||||
* RowID (adresse d'un tuple)
|
* RowID (adresse d'un tuple)
|
||||||
|
|
||||||
### Compression de données
|
## Compression de données
|
||||||
|
|
||||||
On peut pas mettre tous les textes dnas les tables, ce serait énorme
|
On peut pas mettre tous les textes dans les tables, ce serait énorme
|
||||||
|
|
||||||
* Compression standard :
|
* Compression standard :
|
||||||
Sorte de zip
|
Sorte de zip
|
||||||
|
@ -29,66 +27,67 @@ Transparent pour les applis
|
||||||
* Compression avancée
|
* Compression avancée
|
||||||
`ALTER TABLE toto ROW STORE COMPRESS ADVANCED`
|
`ALTER TABLE toto ROW STORE COMPRESS ADVANCED`
|
||||||
|
|
||||||
|
## Cluster de tables
|
||||||
### Cluster de tables
|
|
||||||
|
|
||||||
Tables distinctes qui partagent une colonne commune. Elles stockent alors les données dans les mêmes blocs.
|
Tables distinctes qui partagent une colonne commune. Elles stockent alors les données dans les mêmes blocs.
|
||||||
Ça vient du fait qu'il faut éviter la redondance mais pourtant elle peut être utile pour éviter de faire des jointures.
|
Ça vient du fait qu'il faut éviter la redondance mais pourtant elle peut être utile pour éviter de faire des jointures.
|
||||||
=> Cluster de table : au lieu de stocker dux fois la data on la stocke une fois physiquement dans une colonne qui sera utilisée par plusieurs tables.
|
=> **Cluster de table** : au lieu de stocker deux fois la data on la stocke une fois physiquement dans une colonne qui sera utilisée par plusieurs tables.
|
||||||
|
|
||||||
#### Avantages inconviénients
|
### Avantages / inconviénients
|
||||||
|
|
||||||
Les +
|
Les +
|
||||||
|
|
||||||
* I/O réduits pour les disques
|
* I/O réduits pour les disques
|
||||||
|
|
||||||
#### Cluster indexé
|
...j'ai raté le reste
|
||||||
|
|
||||||
cluster qui utilise un B-Tree
|
### Cluster indexé
|
||||||
|
|
||||||
|
Cluster qui utilise un B-Tree
|
||||||
|
|
||||||
### SYS et SYSTEM
|
## SYS et SYSTEM
|
||||||
|
|
||||||
Deux schémas spécifiques
|
Deux schémas spécifiques
|
||||||
|
|
||||||
SYS = compte administratif contient dictionnaire de données (données statiques utilisées dans tâches administratives)
|
SYS = compte administratif contient dictionnaire de données (données statiques utilisées dans les tâches administratives)
|
||||||
Ne doit pas être modifiée par l'utilisateur !
|
Ne doit pas être modifié par l'utilisateur !
|
||||||
|
|
||||||
SYSTEM = compte système (moins impostant que SYS). Contient tables d'information, utiles aux options et plugins Oracle. On passe plutôt par ce compte pour les outils du genre pour éviter de tout fusiller
|
SYSTEM = compte système (moins important que SYS). Contient les tables d'information, utiles aux options et plugins Oracle. On passe plutôt par ce compte pour les outils du genre pour éviter de tout fusiller
|
||||||
|
|
||||||
### Les index
|
## Les index
|
||||||
|
|
||||||
Index : Structure de données qui permet de retrouver la bonne donnée dans une table
|
Index : Structure de données qui permet de retrouver la bonne donnée dans une table
|
||||||
Évite de devoir faire un ful scan
|
Évite de devoir faire un full scan
|
||||||
Cré
|
|
||||||
|
|
||||||
principal index : B-Tree (et ses cousins du même genre de nom)
|
Principal index : B-Tree (et ses cousins du même genre de nom)
|
||||||
|
|
||||||
#### B-Tree
|
### B-Tree
|
||||||
|
|
||||||
Arbre le plus souvent utilisé
|
Arbre le plus souvent utilisé
|
||||||
B veut dire quelque chose qu'il a expliqué au niveau structure, les liens se font fraiment en bout d'arbre
|
B veut dire quelque chose qu'il a expliqué au niveau structure, les liens se font vraiment en bout d'arbre
|
||||||
|
|
||||||
#### Autres structures
|
### Autres structures
|
||||||
|
|
||||||
|
#### Le bitmap
|
||||||
|
|
||||||
##### Le bitmap
|
|
||||||
Un grand champ avec des 1 et 0 pour dire y a ou y a pas.
|
Un grand champ avec des 1 et 0 pour dire y a ou y a pas.
|
||||||
Indique où se trouve la donnée, proche du système de hashage
|
Indique où se trouve la donnée, proche du système de hashage
|
||||||
|
|
||||||
##### Basé sur fonction
|
#### Basé sur fonction
|
||||||
Très rare, problème: trouver bonne fonction
|
|
||||||
|
|
||||||
##### Tables organisées par index
|
Très rare, problème: trouver la bonne fonction
|
||||||
données directement dans l'index.
|
|
||||||
|
|
||||||
|
#### Tables organisées par index
|
||||||
|
|
||||||
### Dictionnaires de données
|
Les données sont directement dans l'index.
|
||||||
|
|
||||||
|
## Dictionnaires de données
|
||||||
|
|
||||||
Tables en lectures seule avec des infos :
|
Tables en lectures seule avec des infos :
|
||||||
|
|
||||||
* Objets schémas de BD
|
* Objets schémas de BD
|
||||||
* Volume utilisé par les objets schémas
|
* Volume utilisé par les objets schémas
|
||||||
* nom, rôle set privilèges des utilisateurs
|
* nom, rôle, set, privilèges des utilisateurs
|
||||||
* modifications lors de DDL
|
* modifications lors de DDL
|
||||||
|
|
||||||
On va avoir plusieurs tables dont les noms vont commencer par :
|
On va avoir plusieurs tables dont les noms vont commencer par :
|
||||||
|
@ -97,34 +96,36 @@ On va avoir plusieurs tables dont les noms vont commencer par :
|
||||||
* ALL_ : objets pour lesquels l'utilisateur a le privilège
|
* ALL_ : objets pour lesquels l'utilisateur a le privilège
|
||||||
* USER_ : Objets dont l'utilisateur est le propriétaire
|
* USER_ : Objets dont l'utilisateur est le propriétaire
|
||||||
|
|
||||||
### Vues de performances Dynamiques
|
## Vues de performances Dynamiques
|
||||||
|
|
||||||
Changent avec état / activité de la base (genre nombre de requetes balancées dnas la dernières heure, nb personne actuellement connectées...)
|
Changent avec état / activité de la base (genre nombre de requêtes balancées dans la dernière heure, nb de personnes actuellement connectées...)
|
||||||
on a avec ça l'utilisation actuelle de la base. Utile à admin, pas à user
|
On a avec ça l'utilisation actuelle de la base. Utile à admin, pas à user
|
||||||
|
|
||||||
### Instance et stockage physique
|
## Instance et stockage physique
|
||||||
|
|
||||||
On travaille en mémoire (instance) mais on stocke sur disqu (data storage)
|
On travaille en mémoire (instance) mais on stocke sur disque (data storage)
|
||||||
=> Le boulot d'Oracle est justement de gérer le passage de l'un à l'autre.
|
=> Le boulot d'Oracle est justement de gérer le passage de l'un à l'autre.
|
||||||
|
|
||||||
#### Stockages physiques
|
### Stockages physiques
|
||||||
|
|
||||||
Plusieurs types de fichiers :
|
Plusieurs types de fichiers : on note les data à l'intérieur
|
||||||
: on note les data à l'intérieur
|
|
||||||
* Data files (.dbf)
|
- Data files (.dbf)
|
||||||
Lié aux tablespaces
|
Lié aux tablespace
|
||||||
Contient les données
|
Contient les données
|
||||||
* Control files (.ctl) : qui où quoi comment ?
|
|
||||||
|
- Control files (.ctl) : qui où quoi comment ?
|
||||||
Fichiers de configuration de la base
|
Fichiers de configuration de la base
|
||||||
Fichiers de contrôle d'intégrité au lancement
|
Fichiers de contrôle d'intégrité au lancement
|
||||||
* Online redo Log
|
|
||||||
|
- Online redo Log
|
||||||
Historique des modifications effectuées
|
Historique des modifications effectuées
|
||||||
Journal des transactions
|
Journal des transactions
|
||||||
|
|
||||||
#### SP - où sont stockés les fichiers ?
|
### SP - où sont stockés les fichiers ?
|
||||||
|
|
||||||
Oracle c'est limite un OS.
|
Oracle c'est limite un OS.
|
||||||
Oracle ASM : il devient un Logical Volume Manager, on donne des volumes à Oracle qui va les gérer, ça permet notamment de faire du raid logicieln, duplic....
|
Oracle ASM : il devient un Logical Volume Manager, on donne des volumes à Oracle qui va les gérer, ça permet notamment de faire du raid logiciel, duplic....
|
||||||
|
|
||||||
On peut aussi laisser l'OS (Unix/Linux) gérer
|
On peut aussi laisser l'OS (Unix/Linux) gérer
|
||||||
|
|
||||||
|
@ -132,71 +133,69 @@ Dernière option : Cluser File System.
|
||||||
Dans ce cas : Oracle RAC. Il émule un SGF partagé sur un réseau, qui permettra par exemple l'accès concurrent à un fichier sur le disque.
|
Dans ce cas : Oracle RAC. Il émule un SGF partagé sur un réseau, qui permettra par exemple l'accès concurrent à un fichier sur le disque.
|
||||||
Offre possibilité de redondance...
|
Offre possibilité de redondance...
|
||||||
|
|
||||||
##### Oracle ASM
|
### Oracle ASM
|
||||||
|
|
||||||
C'est comme du LVM (techniquement: un LVM géré par Oracle)
|
C'est comme du LVM (techniquement: un LVM géré par Oracle)
|
||||||
Automatic Storage Mode
|
Automatic Storage Mode
|
||||||
Permet de distribuer les données sur plusieurs volumes, les fusionner, dupliquer...
|
Permet de distribuer les données sur plusieurs volumes, les fusionner, dupliquer...
|
||||||
Ré-équilibrage automatique de la distribution entre les différents volumes
|
Ré-équilibrage automatique de la distribution entre les différents volumes
|
||||||
|
|
||||||
#### Data file sous Oracle
|
## Data file sous Oracle
|
||||||
|
|
||||||
Ne jamais perdre le control file.
|
Ne jamais perdre le control file.
|
||||||
|
|
||||||
Tablespace : plusieurs datafile : dedans plusieurs tables : dedans plusieurs indexs.
|
Tablespace = plusieurs datafiles : dedans plusieurs tables : dedans plusieurs index.
|
||||||
Deux principaux types de données qu'on va trouver dans un tablespace
|
Deux principaux types de données qu'on va trouver dans un tablespace
|
||||||
|
|
||||||
Quand on crée un data file on spécifie :
|
Quand on crée un data file on spécifie :
|
||||||
|
|
||||||
* Tablespace asscié
|
* Tablespace associé
|
||||||
* taille (initialisé par défaut à cette taille)
|
* Taille (initialisé par défaut à cette taille)
|
||||||
* l'auto extent (que faire quand fichier ititial plein ?)
|
* Auto extent (que faire quand fichier ititial plein ?)
|
||||||
|
|
||||||
#### Control file sous Oracle
|
## Control file sous Oracle
|
||||||
|
|
||||||
Ils sont à minima dupliqués. Il faut les mettre sur fichier distant.
|
Ils sont à minima dupliqués. Il faut les mettre sur fichier distant.
|
||||||
Ne jamais les paumer, putain. Ils sont essentiels au bon fonctionnement d'Oracle. Spécifient ou truver les autres fichiers. Liés à une base de données
|
Ne jamais les paumer. Ils sont essentiels au bon fonctionnement d'Oracle. Spécifient ou trouver les autres fichiers. Liés à une base de données
|
||||||
|
|
||||||
Infos dans control file :
|
Infos dans control file :
|
||||||
|
|
||||||
* Nom et ID base de données
|
* Nom et ID base de données
|
||||||
* Timestamp de la création de base
|
* Timestamp de la création de base
|
||||||
* Localisation des fichiers (Data, Redo...)
|
* Localisation des fichiers (Data, Redo...)
|
||||||
* Information sur les Tablespace
|
* Information sur les Tablespaces
|
||||||
* Information de bakcup RMAN (recov Manager)
|
* Information de backup RMAN (recov Manager)
|
||||||
* SCN des data file pour valider leur pertinance au démarrage.
|
* SCN des data files pour valider leur pertinence au démarrage.
|
||||||
|
|
||||||
#### Online redo log
|
### Online redo log
|
||||||
|
|
||||||
Conserve les traces des modifications sur la base, ce sont les journaux (d'où le log...)
|
Conserve les traces des modifications sur la base, ce sont les journaux (d'où le log...)
|
||||||
Une fois configurés, on y touche plus.
|
Une fois configurés, on y touche plus.
|
||||||
Peuvent être archivés sur long terme : Archived Redo log
|
Peuvent être archivés sur long terme : Archived Redo log
|
||||||
|
|
||||||
### Structure de l'instance
|
## Structure de l'instance
|
||||||
|
|
||||||
SGA (System Gobal Area)
|
SGA (System Gobal Area)
|
||||||
pis dedans d'autres trucs
|
Pis dedans d'autres trucs
|
||||||
|
|
||||||
#### Parameter file
|
### Parameter file
|
||||||
|
|
||||||
Y a SPFILe et PFILE.
|
Y a SPFILe et PFILE.
|
||||||
En gros y a 30 paramètres obligatoires et basique, et pis plein de trucs optionnels.
|
En gros y a 30 paramètres obligatoires et basiques, et pis plein de trucs optionnels.
|
||||||
Fichiers en .ora
|
Fichiers en .ora
|
||||||
|
|
||||||
#### UGA : User Global Area
|
### UGA : User Global Area
|
||||||
|
|
||||||
Tous les paramètre qui permettre de gérer vie de la session sur le serveur.
|
Tous les paramètres qui permettent de gérer la vie de la session sur le serveur.
|
||||||
Si serveurs partagés, en cluster ou autre, l'UGA doivent être disponibles partout
|
Si serveurs partagés, en cluster ou autre, l'UGA doit être disponible partout
|
||||||
|
|
||||||
#### PGA : Process Global Area
|
### PGA : Process Global Area
|
||||||
|
|
||||||
Buffer mémoire lié à un process et à un utilisateur. Zone de mémoire partagée permettant de récupérer paratèmtre requete, plus ou moins synchronisé avec SGA.
|
Buffer mémoire lié à un process et à un utilisateur. Zone de mémoire partagée permettant de récupérer paramètres de la requête, plus ou moins synchronisé avec SGA.
|
||||||
|
|
||||||
|
### SGA : System Gobal Area
|
||||||
#### SGA : System Gobal Area
|
|
||||||
|
|
||||||
Zone de travail principale d'Oracle :
|
Zone de travail principale d'Oracle :
|
||||||
|
|
||||||
* une instance, un SGA
|
* une instance, un SGA
|
||||||
* décomposé en plusieurs pools de mémoire : shared pool, large pool, java pool, stream pool...
|
* décomposée en plusieurs pools de mémoire : shared pool, large pool, java pool, stream pool...
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue