oracle : foctionnement

32
Fonctionnement d’Oracle Fichiers Programmes Mémoire

Upload: nayd-nabil

Post on 22-Jun-2015

501 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Oracle : Foctionnement

Fonctionnement d’Oracle

FichiersProgrammes

Mémoire

Page 2: Oracle : Foctionnement

les fichiers de données .dbf: >90% volume de la BD; dictionnaire de données (tables, index, vues …); paramétrage admin (taille, emplacement ..)

les fichiers redo-log .rdo ou .log: historique des ordres modifiant structure ou données; min 3 fichiers;

Les fichiers de contrôle  .ctl : état de la base de données; chemins d’accès et les noms de tous les fichiers (base de données et redo-log)

les fichiers d’administration : fichier d'initialisation initSID.ora ; fichiers de trace et d’alerte générés par Oracle; fichiers paramètres d’outils

Les fichiers

Page 3: Oracle : Foctionnement

Sous UNIX : processus Sous Windows : exécutables >

processus > threads

Les programmes

Page 4: Oracle : Foctionnement

DBWR (DataBase Writer ou Dirty Buffer Writer), chargé d'écrire le contenu des buffers dans les fichiers de données

LGWR (Log Writer), chargé d'écrire le contenu des buffers dans les fichiers Redo Log

PMON (Process Monitor), chargé de nettoyer les ressources, les verrous et les processus utilisateurs non utilisés

SMON (System Monitor), chargé de vérifier la cohérence de la base de données et éventuellement sa restauration lors du démarrage si besoin

Les threads indispensables,

Page 5: Oracle : Foctionnement

CKPT (CheckPoint), chargé d'écrire le contenu des buffers dans les fichiers de données

RECO (Recoverer), il s'agit d'un thread optionnel permettant de résoudre les transactions interrompues brutalement dans un système de bases de données distribuées (par exemple un système de réplication de bases de données)

ARCH (Archiver). optionnel et n'existe qu'en mode ARCHIVELOG. Il permet de dupliquer les fichiers Redo-Log dans un espace d'archivage.

Dnnnn (Dispatcher, nnnn représente une suite de nombre entiers) : est optionnel et n'est présent que dans les configurations MTS (multi-threaded server). Il permet de router les requêtes des postes clients-serveurs distants vers les autres serveurs. Il existe au moins un processus Dnnnn pour chaque protocole de communication

Snnnn (Server, nnnn représente une suite de nombre entiers) : est n'est également présent que dans les configurations MTS. Il permet de recevoir les demandes de connexions distantes envoyées par le processus Dnnnn d'un serveur distant.

LCKn (Lock) est un thread de verrouillage utilisé lorsque Oracle Parallel Server est installé.

Les threads optionnels

Page 6: Oracle : Foctionnement

La mémoire

Page 7: Oracle : Foctionnement

le cache des blocs de données (buffer cache) : données transitant de ou vers la base de données

les buffers redo-log :contient les blocs de données (appelés Redo Entries) à modifier et les modifications à effectuer sur ces données

la Shared Pool : partage des ordres SQL et PL/SQL, structure BD, index …

la Java Pool : moteur Java intégré à la base. une zone de communication inter-processus des espaces partagés si l’option Multi-Thread est

activée

SGA

Page 8: Oracle : Foctionnement

La zone PGA (Program Global Area) permettant le fonctionnement des divers processus (afin de stocker toutes les données ne nécessitant pas d'être partagées).

Une connexion à une base Oracle 10g engendre donc la création d’un thread utilisateur et de sa mémoire associée, la PGA.

PGA

Page 9: Oracle : Foctionnement
Page 10: Oracle : Foctionnement

Instance

Privilèges OS : ORA_DBAPrivilèges Oracle : SYSDBA ,SYSOPER

Page 11: Oracle : Foctionnement
Page 12: Oracle : Foctionnement

Principe du tablespace

Page 13: Oracle : Foctionnement

SYSTEM : dictionnaire de données SYSAUX : différents outils ou options

d’Oracle (RMAN, Text, UltraSearch, Data Mining, etc.)

tablespace de type UNDO pour gérer les données en attente de validation ou d’annulation

tablespace de type TEMPORARY (tris)

tablespaces

Page 14: Oracle : Foctionnement

Répartir les fichiers de la base de données sur différents disques Faciliter les opérations de maintenance : sachant que la plus

petite entité cohérente de sauvegarde est le tablespace, le DBA peut en créer plusieurs. Chacun d’eux contient des tables qui nécessitent d’être sauvegardées à la même fréquence ;

Gérer des données utilisées par des applications différentes dans une seule base de données. Cela permet de démarrer un seul jeu de processus Oracle, et d’allouer une seule zone mémoire partagée SGA pour des applications différentes ;

Spécialiser des tablespaces pour des tâches techniques internes à Oracle : l’espace où seront stockés les segments d’annulation (UNDO) et celui où Oracle effectuera ses tris (TEMPORARY).

tablespaces

Page 15: Oracle : Foctionnement

tablespaces

DB_BLOCK_SIZE

Page 16: Oracle : Foctionnement

tablespaces : la gestion locale et dictionnaire

CREATE TABLESPACE test1DATAFILE 'c:\oracle\oradata\TEST\test1_01.dbf' SIZE 20MEXTENT MANAGEMENT LOCAL ;

CREATE TABLESPACE test2DATAFILE 'c:\oracle\oradata\TEST\test2_01.dbf' SIZE 20MEXTENT MANAGEMENT DICTIONARYDEFAULT STORAGE ( INITIAL 100 K

NEXT 100 KMINEXTENTS 2MAXEXTENTS 100PCTINCREASE 0 );

Page 17: Oracle : Foctionnement

La gestion locale (interne à chaque tablespace) facilite les opérations lors du déplacement de tablespaces de base à base. Les accès au dictionnaire de données sont limités.

Le travail de l’administrateur Oracle est facilité, les fastidieuses opérations d’allocation d’espace ne sont plus nécessaires.

La gestion centralisée dans le dictionnaire imposait des écritures dans les tables correspondantes lors de chaque allocation ou libération d’espace. L’écriture de données bitmap est plus rapide et évite ce goulot d’étranglement. Oracle peut supporter encore plus d’utilisateurs.

Lors de la libération d’espace, le stockage dans les tables du dictionnaire ne permettait pas à Oracle de détecter que deux espaces libres contigus pouvaient être agrégés. Cette opération devait être effectuée par l’ordre ALTER TABLESPACE… COALESCE. La gestion locale automatise cette opération.

Vous n’avez plus besoin de paramétrer la clause storage pour les tablespaces, tables et index. Cette opération est automatique en gestion locale.

Vous pouvez maintenant déplacer un tablespace d’une base pour la raccrocher à une autre. C’est très utile pour créer très rapidement un environnement de test. La composition du tablespace étant locale, elle se déplace en même temps que le tablespace.

tablespaces : la gestion locale et dictionnaire

Page 18: Oracle : Foctionnement

INITIAL précise la taille de la première extension. Tout segment possède une taille initiale à sa création.

NEXT précise la taille de la deuxième extension. Lorsque la première est remplie, Oracle alloue automatiquement une seconde de NEXT octets. Toutes les extensions futures se fondent sur cette valeur.

PCT_INCREASE est un paramètre que nous positionnons toujours à zéro, mais que certaines personnes utilisent. Ce pourcentage dirige l’incrément de taille des extensions suivantes. Par exemple, INITIAL = 1 Mo, NEXT = 1 Mo et PCT_INCREASE = 50 %. La première extension sera de 1 Mo, la deuxième de 1 000 + 50 % (1 000) = 1,5 Mo, la troisième de 2,25 Mo, etc. Calculez la taille nécessaire pour la vingtième extension !

TABLESPACE indique le tablespace cible dans lequel sera créée la table EMP.

tablespaces : mode DICTIONARY

CREATE TABLE emp (...liste des colonnes de la table......)STORAGE (INITIAL 100KNEXT 100 KPCTINCREASE 0 )TABLESPACE user_data;

Page 19: Oracle : Foctionnement

tablespaces en gestion LOCALE

CREATE TABLESPACE test1DATAFILE 'c:\oracle\oradata\TEST\test1_01.dbf' SIZE 20MEXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TABLESPACE test1DATAFILE 'c:\oracle\oradata\TEST\test1_01.dbf' SIZE 20MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;CREATE TABLESPACE test1DATAFILE 'c:\oracle\oradata\TEST\test1_01.dbf' SIZE 20MEXTENT MANAGEMENT LOCAL AUTOALLOCATESPACE MANAGEMENT AUTO ;

CREATE TABLESPACE test1DATAFILE 'c:\oracle\oradata\TEST\test1_01.dbf' SIZE 20MEXTENT MANAGEMENT LOCAL AUTOALLOCATESPACE MANAGEMENT MANUAL ;

Page 20: Oracle : Foctionnement

Index DROP INDEX..CREATE INDEX ALTER INDEX REBUILD ALTER INDEX COALESCE

Table RENAME TEST to TEST_OLD ; CREATE table TEST as select * from

TEST_OLD

La défragmentation

Page 21: Oracle : Foctionnement

tablespaces

CREATE USER nouvel_utilisateurIDENTIFIED BY son_mot_de_passeDEFAULT TABLESPACE tablespace_utilisateurQUOTA UNLIMITED ON tablespace_utilisateur ;

ALTER DATABASEDEFAULT TABLESPACE tablespace_utilisateur;

Page 22: Oracle : Foctionnement

SORT_AREA_SIZE de la SGA TEMPORARY TABLESPACE SYSTEM

Les tablespaces temporaires

CREATE TEMPORARY TABLESPACE temp_dataTEMPFILE 'c:\oracle\oradata\TEST\temp_data01.dbf' size 50Mextent management local ;CREATE USER nouvel_utilisateurIDENTIFIED BY son_mot_de_passeTEMPORARY TABLESPACE temp_data;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_data;

Page 23: Oracle : Foctionnement

Les tablespaces UNDO ou d’annulation (remplacement des rollback segments).

Les tablespaces BIGFILES : Les tablespaces BIGFILES permettent d’utiliser les possibilités des systèmes 64 bits de gérer de très gros fichiers. Un tablespace BIGFILE ne contient qu’un seul fichier qui peut comporter jusqu’à 232 blocs Oracle, soit environ 8 exaoctets ou à peu près 8 millions de teraoctets…

tablespaces

Page 24: Oracle : Foctionnement

Contrôle de données

Page 25: Oracle : Foctionnement

SYS (mot de passe par défaut : CHANGE_ON_INSTALL)

SYSTEM (mot de passe par défaut : MANAGER)

Utilisateur

Page 26: Oracle : Foctionnement

Utilisateur

CREATE USER utilisateur IDENTIFIED{ BY motdePasse | EXTERNALLY | GLOBALLY AS 'nomExterne' }[ DEFAULT TABLESPACE nomTablespace[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ] ][TEMPORARY TABLESPACE nomTablespace[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ].][PROFILE nomProfil ] [PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ;

Page 27: Oracle : Foctionnement

IDENTIFIED BY motdePasse permet d’affecter un mot de passe à un utilisateur local (cas le plus courant et le plus simple).

IDENTIFIED BY EXTERNALLY permet de se servir de l’authenticité du système d’exploitation pour s’identifier à Oracle (cas des compte OPS$ pour Unix).

IDENTIFIED BY GLOBALLY permet de se servir de l’authenticité d’un système d’annuaire.

DEFAULT TABLESPACE nomTablespace associe un espace disque de travail (appelé tablespace) à l’utilisateur.

TEMPORARY TABLESPACE nomTablespace associe un espace disque temporaire (dans lequel certaines opérations se dérouleront) à l’utilisateur.

QUOTA permet de limiter ou pas chaque espace alloué. PROFILE nomProfil affecte un profil (caractéristiques système relatives au

CPU et aux connexions) à l’utilisateur. PASSWORD EXPIRE pour obliger l’utilisateur à changer son mot de passe à

la première connexion (par défaut il est libre). Le DBA peut aussi changer ce mot de passe.

ACCOUNT pour verrouiller ou libérer l’accès à la base (par défaut UNLOCK).

Utilisateur

Page 28: Oracle : Foctionnement

Profil

CREATE PROFILE nomProfil LIMIT{ ParamètreRessource | ParamètreMotdePasse }[ ParamètreRessource | ParamètreMotdePasse ]…;ParamètreRessource :{ { SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL| CONNECT_TIME | IDLE_TIME | LOGICAL_READS_PER_SESSION| LOGICAL_READS_PER_CALL | COMPOSITE_LIMIT } { entier | UNLIMITED| DEFAULT }| PRIVATE_SGA {entier[K|M] | UNLIMITED | DEFAULT}}{ FAILED_LOGIN_ATTEMPTS | PASSWORD_LIFE_TIME | PASSWORD_REUSE_TIME| PASSWORD_REUSE_MAX | PASSWORD_LOCK_TIME | PASSWORD_GRACE_TIME }{ expression | UNLIMITED | DEFAULT } }

Page 29: Oracle : Foctionnement

SESSIONS_PER_USER : nombre de sessions concurrentes autorisées. CPU_PER_SESSION : temps CPU maximal pour une session en centièmes de

secondes. CPU_PER_CALL : temps CPU autorisé pour un appel noyau en centièmes de

secondes. CONNECT_TIME : temps total autorisé pour une session en minutes

(pratique pour les examens de TP minutés). IDLE_TIME : temps d’inactivité autorisé, en minutes, au sein d’une même

session (pour les étudiants qui ne clôturent jamais leurs sessions). PRIVATE_SGA : espace mémoire privé alloué dans la SGA (System Global

Area).

Profil

Page 30: Oracle : Foctionnement

FAILED_LOGIN_ATTEMPTS : nombre de tentatives de connexion avant de bloquer l’utilisateur (pour la carte bleue, c’est trois).

PASSWORD_LIFE_TIME : nombre de jours de validité du mot de passe (il expire s’il n’est pas changé au cours de cette période).

PASSWORD_REUSE_TIME : nombre de jours avant que le mot de passe puisse être utilisé à nouveau. Si ce paramètre est initialisé à un entier, le paramètre PASSWORD_REUSE_MAX doit être passé à UNLIMITED.

PASSWORD_REUSE_MAX : nombre de modifications de mot de passe avant de pouvoir réutiliser le mot de passe courant. Si ce paramètre est initialisé à un entier, le paramètre PASSWORD_REUSE_TIME doit être passé à UNLIMITED.

PASSWORD_LOCK_TIME : nombre de jours d’interdiction d’accès à un compte après que le nombre de tentatives de connexions a été atteint (pour la carte bleue, ça dépend de plein de choses, de toute façon vous en recevrez une autre toute neuve mais toute chère…).

PASSWORD_GRACE_TIME : nombre de jours d’une période de grâce qui prolonge l’utilisation du mot de passe avant son changement (un message d’avertissement s’affiche lors des connexions). Après cette période le mot de passe expire.

Profil

Page 31: Oracle : Foctionnement

Privilèges système

GRANT { privilège Système | nomRôle | ALL PRIVILEGES }[, { privilègeSystème | nomRôle | ALL PRIVILEGES }]…TO { utilisateur | nomRôle | PUBLIC } [,{ utilisateur | nomRôle| PUBLIC } ]…[ IDENTIFIED BY motdePasse ][ WITH ADMIN OPTION ] ;

Page 32: Oracle : Foctionnement

Privilège Système : description du privilège système (exemple CREATE TABLE,CREATE SESSION, etc.).

ALL PRIVILEGES : tous les privilèges système. PUBLIC : pour attribuer le(s) privilège(s) à tous les

utilisateurs. IDENTIFIED BY désigne un utilisateur encore

inexistant dans la base. Cette option n’est pas valide si le bénéficiaire est un rôle ou est PUBLIC.

WITH ADMIN OPTION : permet d’attribuer aux bénéficiaires le droit de retransmettre le(s) privilège(s) reçu(s) à une tierce personne (utilisateur(s) ou rôle(s)).

Privilèges système