## <span style="color:orange">Oracle</span>
## The globale shema

> **Gestion de la mémoire SGA :**
>
> - Sa taille est définie par le paramètre :
``````mysql
ALTER SYSTEM SET SGA_MAX_SIZE = ?M;
``````
> **Zone de mémoire partager :**
>
> - Elle permet de stocker :
> - les dernières instruction SQL exécuter.
> - les dernières définitions de donnes utilisées.
> - Elle est constituée de deux structures mémoire clés liées aux performances :
> - Cache "library".
> - Cache de dictionnaire de donnes.
> - Sa taille est définie par le paramètre :
``````mysql
ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
``````
> **Cache "library".**
>
> - Le cache "library" conserve des informations sur les dernières instructions SQL et PL/SQL utilisées.
> - il est compose de deux structures:
> -- la zone SQL partage
> -- la zone PL/SQL partage
>
> - Sa taille dépend du dimensionnement de la zone de mémoire partagée.
> **Cache de dictionnaire de données**
>
> - La Cache de dictionnaire de donnes contient les dernières définitions de donnes utilisées.
> - il contient des informations sur les fichiers, les tables, les index,les utilisateurs, les colonnes,les privilèges et d'autre objet de la base de données.
> - La taille du cache dépend du dimensionnement de la zone de mémoire partagée.
>**Cache de tampons de la base de données**
>- Ce cache conserve des copies des blocs de donnes extraits des fichiers de données.
>- il est compose de sous-cache indépendants:
>-- DB_CACHE_SIZE :
>-- DB_KEEP_CACHE_SIZE :
>-- DB_RECYCLE_CACHE_SIZE :
>- Il peut être redimensionné dynamiquement :
``````mysql
ALTER SYSTEM SET DB_CACHE_SIZE = 96M;
``````
> - Le paramètre DB_BLOCK_SIZE détermine la taille du bloc principal.
``````mysql
ALTER SYSTEM SET DB_BLOCK_SIZE = ?M;
``````
>**Tampon de journalisation:**
>
>- Il enregistre toutes les modifications apportées aux blocs de données de la base pour récupérer les donnes en cas de panne
``````mysql
ALTER SYSTEM SET LOG_BUFFER=?M;
``````
>**Zone de mémoire Java:**
>
>- La zone de mémoire Java répond aux besoins d'analyse des commandes Java.
>- Elle est nécessaire si Java est installé et utilisé.
>- Sa taille est définie par le paramètre :
``````mysql
ALTER SYSTEM SET JAVA_POOL_SIZE=?M;
``````
>**Zone de mémoire Larg Pool:**
>
>- Zone facultative de la mémoire SGA.
>- Elle réduit la charge de la zone de mémoire partagée.
>- Sa taille est définie par le paramètre:
``````mysql
ALTER SYSTEM SET LARGE_POOL_SIZE=?M;
``````
---
---
### Base De Données

>**Fichiers de données**
>
>* il contient les données de la base .
> **Fichier de contrôle**
>
> * contiennent les informations nécessaires au maintien et la vérification de l'intégrité de la base de données
> * Ce qui est stocké dans le **fichier de contrôle**:
> - Date/Heure de création de la base.
> - Nom de la base (**DBNAME**).
> - L’ID de la base (**DBID**).
> - Chemin + Nom Fichiers de la base avec leurs statuts.
> - Point de reprise (**Checkpoint**).
> **Fichier de journalisation**
>
> * contiennent l'enregistrement des modifications apportées à la base pour récupérer les donnes en cas de panne.
> **Fichiers de paramétrés**
>
> * Le fichier de paramètres définit les caractéristiques d'une instance Oracle. Ce fichier contient, par exemple, des paramètres qui définissent la taille de certaines structures de la mémoire SGA.
> **Fichier de mots de passe**
>
> * Le fichier de mots de passe définit les utilisateurs autorisés à démarrer et à arrêter une instance Oracle.
> **Fichiers de journalisation archivés**
>
> * sont des copies hors ligne des fichiers de journalisation pour plus de sécurité.
> **Processus d'arrière-plan**
>
> 
>
> * Gèrent et appliquent les relations entre les structures physiques et les structures mémoire.
> * Ils sont de deux types:
> * Processus d'arrière-plan obligatoires.
> * Processus d'arrière -plan facultatifs.
> * Les processus d’arriéré plan obligatoire sont :
> * DBWN : Database Writer.
> * LGWR : Log Writer
> * PMON : Process Monitor.
> * SMON : System Monitor
> * CKPT : CheckPoint
> * Les processus d’arriéré plan facultatifs sont :
> * RECO : Processus de récupération
> * QMNn : Advanced Queuing
> * ARCn : Processus d'archivage
> * LCKn : RAC Lock Manager–Verrous d'instance
> * LMON : RAC DLM Monitor–Verrous globaux
> * LMDn : RAC DLM Monitor–Verrous à distance
> * CJQ0 : Processus d'arrière-plan Coordinator Job Queue
> * Dnnn : Répartiteur (Dispatcher)
> * Snnn : Serveur partagé
> * Pnnn : Processus esclave "Parallel Query"
```mermaid
graph TD
A(oracle server)-->|autre partie|B(instance)
A-->|partie physique|c(bd)
```
---
> ***instance***:
```mermaid
graph LR
ORACLE-->INSTANCE
ORACLE-->DB
INSTANCE-->|CONTAIN|SGA
INSTANCE-->|CONTAIN|PROCESS_D'ARIER_PLAN
```
## SGA: Shared Global Area :+1:
>La mémoire **SGA** stocke les informations de la base qui sont partagées par les processus de base de données ,elle est constituée de plusieurs structures mémoire ,et processus d'ariere plan :
– **la zone de mémoire partagée**,
– **le cache de tampons de la base de données**,
– **le tampon de journalisation**,
#### SGA shema :ship:
```mermaid
graph LR
SGA-->A(la zone de mémoire partagée)
A-->D(Cache libriry)
D-->sql
D-->pl/sql
A-->G(Cache de ductionnaire de donnee)
SGA-->B(le cache de tampons de la base de données)
SGA-->C(le tampon de journalisation)
SGA-->E(ZONE DE MEMOIRE JAVA)
SGA-->F( LARGE POOL)
```
> - tampon == "ختم أو طابع "
#
## <span style="color:#0984e3">1. la zone de mémoire partagée</span> :smile: :100:
```mermaid
graph TD
A(la zone de mémoire partagée)-->C(CACHE LIB)
A-->B(Cache du dictionnaire de données)
```
>**Elle permet de stocker :**
– *les dernières instructions SQL exécutées*,
– *les dernières définitions de données utilisées*.
• Elle est constituée de deux structures mémoire clés
liées aux performances :
– Cache "library"
### - (a) Cache "library":
- <span style="color:#6c5ce7"> **Le role:**</span>
**conserve des informations sur les dernières instructions SQL et PL/SQL utilisées**
>exmple:
```sql=
select * from t;
```
- <span style="color:#6c5ce7">**Composante:** </span>
```mermaid
graph LR
A(Cache library)-->B(la zone SQL partagée)
A-->C(la zone PL/SQL partagée)
```
- <span style="color:#6c5ce7">**La tialle:** </span>**dependent de la taille de ZMP(zone memoire partager)**
### - (b) Cache du dictionnaire de données
- <span style="color:#6c5ce7"> **Le role:**</span>
• Il contient **des informations sur les fichiers, les tables, les index, les colonnes, les utilisateurs, les privilèges et d'autres objets** de la base de données.
• **Au cours de l'analyse, le processus serveur recherche les informations dans le cache du dictionnaire pour résoudre les noms d'objet et valider l'accès**.
• La mise en mémoire cache des informations du
dictionnaire de données **réduit le temps de réponse aux interrogations et aux instructions LMD(language de manipulation de donne) **.
>exmple:
```sql
la tabele t ,avec tous ces columnes
```
- <span style="color:#6c5ce7">**La tialle:** </span>**La taille du cache dépend du dimensionnement de la zone de mémoire partagée**
• Sa taille (la zone de memoire partager) est définie par le paramètre
taille SHARED_POOL_SIZE.
```sql
ALTER SYSTEM SET SHARED_POOL_SIZE = 20MB;
```
## <span style="color:#0984e3">2.Cache de tampons de la base de données</span> :smile: :100:
- <span style="color:#6c5ce7"> **Le role:**</span>
• Ce cache conserve des copies **des blocs** de
données extraits des fichiers de données.
• Il permet des gains de performances considérables
lors de l'obtention et de la mise à jour de données.
• Il est géré par un algorithme LRU.
- <span style="color:#6c5ce7"> **La taille:**</span>
**DB_BLOCK_SIZE** : var de tempons de la base de donnee
- <span style="color:#6c5ce7"> **composant:**</span>
il ya des sous-cahe:
> - DB_CACHE_SIZE(!=0 ,intialize by defaut)
> - DB_KEEP_CACHE_SIZE(saved and need to use it again)
> - DB_RECYCLE_CACHE_SIZE(need to clean cache)
> - DB_CACHE_ADVICE(statistique about the server and cache)
> - V$DB_CACHE_ADVICE(like a view in oracle and )
```sql
ALTER SYSTEM SET DB_CACHE_SIZE = 96M;
```
## <span style="color:#0984e3">3.Tampon de journalisation</span> :smile: :100:
- <span style="color:#6c5ce7"> **Le role:**</span>
• Il enregistre toutes les modifications apportées aux
blocs de données de la base.
• Sa principale fonction est la récupération de données.
• Les modifications enregistrées constituent des entrées
de journalisation.
• Les entrées de journalisation contiennent des
informations permettant de reconstruire des
modifications.
- <span style="color:#6c5ce7"> **composant:**</span>
il ne compose de rien
- <span style="color:#6c5ce7"> **taille:**</span>
La taille du tampon est définie par le paramètre
**LOG_BUFFER**.
```sql=
ALTER SYSTEM SET LOG_BUFFER=?MB
```
## <span style="color:#0984e3">4. Zone de mémoire LARGE POOL</span> :smile: :100:
- <span style="color:#6c5ce7"> **Le role:**</span>
**Zone facultative de la mémoire SGA**
> facultative : اختيارية
• Elle réduit la charge de la zone de mémoire
partagée.
– la mémoire allouée par session au serveur partagé
– les processus serveur d'E/S
– les opérations de sauvegarde et de restauration ou RMAN(**Recovery MANager**)
– les mémoires tampon des messages d'exécution en
parallèle
- <span style="color:#6c5ce7"> **composant:**</span>
rien
- <span style="color:#6c5ce7"> **la taille:**</span>
Sa taille est définie par le paramètre
**LARGE_POOL_SIZE**.
```sql
ALTER SYSTEM SET LARGE_POOL_SIZE=?MB;
ALTER SYSTEM SET SHARED_POOL_SIZE=?MB;
```
## <span style="color:#0984e3">5. Zone de mémoire Java </span> :smile: :100:
- <span style="color:#6c5ce7"> **le role:**</span>
-- La zone de mémoire Java répond aux besoins
d'**analyse des commandes Java**.
>(JDBC) --> Java Database Connectivity
>(odbc)-->
-- Elle est nécessaire si Java est installé et utilisé.
- <span style="color:#6c5ce7"> **la taille:**</span>
Sa taille est définie par le paramètre
**JAVA_POOL_SIZE**.
```sql
ALTER SYSTEM SET JAVA_POOL_SIZE=?MB;
ALTER SYSTEM SET JAVA_POOL_SIZE=?MB ;
```
------------------------------------
## PGA:
- <span style="color:#6c5ce7"> **le role:**</span>
Mémoire réservée à chaque
processus utilisateur qui se
connecte à une base
de données Oracle.
```mermaid
graph LR
id1{{structure de process }}-->pu(ps utilisateur)
id1-->ps(ps serveur)
id1-->pa(Ps d'arrier plant)
```
## base de donnes
```mermaid
graph LR
A[Base de donnes]
A-->f(fichier de parameteres )
A-->g(fichier de mots de pass)
A-->i(Base de donnee oracle)
i-->j(fichier c de donnees)
i-->k(fichier de controlle)
i-->l(fichier de journalisation)
A-->m(fichier de journalisation archives)
```
[Click](https://drive.google.com/file/d/1LBJeOLDl5ZJAjdpt9fnlwaQv9472qI7T/view?usp=sharing)

- **fichier de donnes**: qui contiennent les donnes de la base
* les fichiers de journalisation(log files): contiennent les enregistrement des modifications apportees a la base de donnees en cas de panne
* les fichier de controle: contiennent les informations necessaires au maintien et a la verification de la base de donnees
* le fichier de parametres : les caracteristiques d’une instance de la base (exemple :taille de certaines structure de la memoire SGA)
### the parts of the oracle instance other way (الوحدات المستخدمة لحساب قدر البيانات)
>1--> tablespaces
>2-->segment
>3-->extent
>4-->blocks
```mermaid
graph TD
A(Database)-->|containe|b(tablespaces)
b-->c(segment)
c-->d(extents)
d-->e(blocks)
```
# the instance
```mermaid
graph LR
A-->sga(sga shared global area)
A-->pga(pga protected global area)
```
# Rôles et privilèges :astonished:
### les grants et les privileges:
```sql=
GRANT [systeme_privilege||rôle||ALL PRIVILEGES ] to [user ||PUBLIC||rôle ]
```
tous les privilege:
> grant all privilege to abdo ;(tout les privilege apart de select any dictionary )
> grant system_privilege to abdo ;
> to user:(utilsateure specifique)
>to public (all users)
### creatctino des roles
```sql=
CREATE ROLE role [NOT IDENTIFIED|| IDENTIFIED BY
password ];
```
connect resource ,dba,connect
----
association : association
association dirigée
association réflexive