## <span style="color:orange">Oracle</span> ## The globale shema ![](https://i.imgur.com/cYZATJd.png) > **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 ![](https://i.imgur.com/6tb2v18.png) >**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** > > ![Processus](/home/mahmoud/Pictures/Screenshot from 2019-11-15 21-35-31.png) > > * 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) ![](https://i.imgur.com/cYZATJd.png) - **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