Vous êtes sur la page 1sur 8

Fichier de données

Les rôles d’un administrateur base de Contient les fichier les fichiers de la BD avec le
données dictionnaire contenant les tables et vues. Ces
derniers contiennent le méta data de la BD et sont
• Planification et création de base de données accessibles par des requetés SQL. Ils sont les fichiers
o Gestion de la structure physique et les plus volumineux de la BD.
logique
o Gestion de stockage Fichiers de contrôles
o Gestion de disponibilité Fichiers binaires utilisés au démarrage de l’instance
• Gestion de sécurité (comptes, rôles et pour vérifier et maintenir la BD. Ces fichiers
privilèges) contiennent l’emplacement de la configuration des
• Administration réseau fichiers de données [emplacement, état (online-
offline), …]. Ils contiennent aussi les données sur
• Gestion des sauvegardes
d’autres fichiers [taille, emplacement, nom, état].
• Installation de la base de données
Fichiers de journalisation
Les comptes administrateurs créés Utilisés d’une manière cyclique afin de restaurer les
• Sys données après in incident. Ils sont modifiés en
o Utilisateur le plus puissant utilisant l’algorithme LRU
o Propriétaire du dictionnaire de [X] fichier de paramétrage
données Contient les paramètres de démarrage de la BD
• System [nombre de connexions des utilisateurs, taille des
o Propriétaire des tables et vues structures, …]. Il contient aussi les caractéristiques de
internes l’instance Oracle [mémoire, nombre de sessions par
o Ne peux pas exécuter des taches utilisateur, …].
comme la sauvegarde ou la
récupération [X] fichier de mot de passe
Utilisé pour authentifier les utilisateurs ayant la
Outils d’administration base de données permission de démarrer ou arrêter l’instance

• Oracle Universal Installer [X] fichier archivelog


• Oracle Database Config Assistant Des copies des fichiers de journalisation online, il
• SQL*Plus peut être utilisé pour restaurer les fichiers après un
• Oracle Enterprise Manager problème physique.
o Permet le diagnostic des BD
o Permet la gestion des duplicates et Instance Oracle
des serveurs parallèles • L’instance Oracle permet d’accéder à la base
de données (sur le disque).
Serveur Oracle • Une instance ouvre une seule BD (plusieurs
Une combinaison entre la base de données et instances peuvent ouvrir la même BD).
l’instance Oracle (espace RAM). Tous les fichiers sont • A un nom (paramètre INSTANCE_NAME)
gérés comme une seule entité de 3 éléments : • Contient la structure mémoire et les
processus d’arrière-plan
• Fichier de données
• Fichier de contrôles L’instance a deux types de processus : serveur et
• Fichiers de journalisation d’arrière-plan.

Oracle utilise aussi d’autre fichiers qui n’existe pas Processus Serveur
dans la DB [X] comme : Responsable de la prise en charge des requêtes user.

• Fichiers de paramétrage Processus d’arrière-plan


Ont une tache bien précise = écriture des données et
• Fichier de mot de passe
gestion de mémoire (PMON, SMON, DBWR, LGWR,
• Fichier archivelog
CKPT, …).
Structures mémoire • Pour stocker Opérations de sauvegarde et de
restauration (RMAN)
SGA – System Global Area
• Peut-être redimensionné dynamiquement.
Zone mémoire principale employé pour le
fonctionnement d’une BD, elle est allouée au
JAVA POOL [ALTER SYSTEM SET
démarrage de l’instance. Elle contient 3 structures JAVA_POOL_SIZE =30M]
optionnels qui peuvent être configurés : Large POOL, Répond aux besoins d’analyse des commandes Java
Java POOL, Streams POOL. (procédures stockées en Java)
La SGA est dynamique et sa taille peut changer Sans
STREAMS POOL [ALTER SYSTEM SET
redémarer l’instance. Sa taille max n’est pas
STREAMS_POOL_SIZE =30M]
dynamique et peut être changé avec la commande :
File d’attente pour des transactions dépendantes
[ALTER SYSTEM SET SGA_MAX_SIZE=30M] (passer toutes les deux ou échouer toutes les deux)

Elle est constituée de plusieurs zones mémoires : PGA – Program Global Area
Zone de mémoire alloué au démarrage du processus
Shared Pool : [ALTER SYSTEM SET serveur (stocker les requêtes et les informations
SHARED_POOL_SIZE = 30M] utilisateurs). Pour consulter sa taille : [SELECT *
Divisé en deux parties : une utilisé pour enregistrer FROM V$PGASTAT]. Elle n’est pas partagée, elle est
les requêtes SQL exécuté (Cache Library) et l’autre propre au processus serveur. Et se libère lorsque le
pour garder les structures utilisés ou définitions de processus se termine. La taille globale peut changer
données (Dictionary Cache) avec [ALTER SYSTEM SET
PGA_AGGREGATE_TARGET=30M]. Cette taille sera
divisée entre les différents utilisateurs connectés.
Buffer Cache : [ALTER SYSTEM SET
DB_CACHE_SIZE=30M] Elle contient plusieurs zones :
Conserve les copies des blocks de données ainsi que
• Zone de travail SQL pour les opérations qui
les blocks de données mis à jour ou à insérer (blocks
nécessitent une grande quantité de
dirty), elle utilise l’algorithme LRU pour la gestion de
mémoire (tri, groupement, …)
mémoire et contient 3 paramètres de
configurations : • Zone de mémoire contenant les informations
sur la session des utilisateurs
• DB_CACHE_SIZE : taille du buffer cache • Zone mémoire privée pour les variables de
• DB_KEEP_CHACHE_SIZE : taille du buffer liaison (requêtes paramétrable – utilisant des
contenant les blocks à conserver ou les paramètres) et des structures mémoire
blocks qui ont plus de chance à être d’exécution pour les curseurs.
réutilisés
• DB_RECYCLE_CACHE_SIZE : taille du buffer
contenant les blocks à éliminer ou les blocks
qui ont moins de chance à être réutilisés.

Redo Log Buffer : [ALTER SYSTEM SET


LOG_BUFFER=30M]
Tampon de journalisation enregistre les
modifications avant d’être enregistré dans le fichier
de journalisation. Il est le plus petit des caches de la
SGA. Il est utilisé de manière circulaire.

LARGE POOL [ALTER SYSTEM SET


LARGE_POOL_SIZE =30M]
• Alloué par session au serveur partagé pour
stocker les informations utilisateurs qui
accèdent à plusieurs processus serveur (au
lieu de les stocker dans la PGA).
• Utilisé pour le partage et le parallélisme des
requêtes
Structure de processus • Récupérer les données non enregistrées dans
les fichiers de données et ouvre la base de
Processus utilisateur
données.
Démarré lors de la demande de connexion de
• Annulation des transactions non validées
l’utilisateur au serveur Oracle.
(not commited)
Processus serveur
Dédié ou partagé, qui va accéder à la BD (fichiers de Il fait la gestion de l’espace en faisant la fusion de
données et SGA). Il est créé par un listener lors de la l’espace libre et libère les segments temporaires.
réception d’une requête utilisateur. PMON
Processus d‘arrière-plan Il surveille les processus utilisateurs. Il permet de
Processus démarré avec le démarrage de l’instance. nettoyer la mémoire lorsqu’il y a un échec de
Ils font des opérations d’E/S et exécutent des processus utilisateur.
fonctions comme la surveillance des autres processus • Annuler les transactions non validées
Oracle. Ils peuvent aussi assurer le parallélisme. Pour
• Libérer les blocs de cache
avoir une idée sur les processus d’arrière-plan
• Libérer les ressources (verrouillage, espace
utilisé : [SELECT * FROM V$BGPROCESS]. Concernant
PGA, …)
les processus démarré et actif : [SELECT * FROM
V$PROCESS]. CKPT
Il commande le DBWn et le LGWR pour effectuer des
Elle contient deux types de processus : Obligatoires
taches. Il enregistre le changement dans le fichier de
(DBWn, PMON, CKPT, LGWR, SMON) et facultatif
contrôle (pos dans le fichier de journalisation) et
(ARCn [archivage], Snnn [Shared Server Process], Dnn
dans les fichiers de données.
[Dispatcher], LMON, LMDn, LCKn, QMNn, CJQ0,
RECO, LMS, Pnnn, …) Il est déclenché :

DBWn (DBW1, DBW2, …) • Manuellement


Le processus serveur stocke les blocks d’annulation • Lors du basculement des fichiers de
et les blocks de données dans la cache tampon. Le journalisation
DBW copie le block de données dirty dans le fichier • ALTER SYSTEM checkpoint ;
de donnée (utilisateur et d’annulation). [ALTER
SYSTEM SET DB_WRITER_PROCESS=80] ARCn
Il est facultatif, pour enregistrer les fichiers d’archives
Il se déclenche online dans des fichiers offline. Il peut fonctionner en
deux modes :
• Lorsque le processus serveur ne trouve pas
de blocks clean pour écrire ARCHIVELOG [True | False] archive
• D’une manière périodique automatiquement avant d’écraser le fichier online.
• Point de reprise (checkpoint)
NOARCHIVELOG pas d’enregistrement offline
• Tablespace mis hors ligne ou lecture seule

LGWR Exécution d’une interrogation


Après la modification, un enregistrement est effectué > Utilisateur envoie une requête > vérifie le cache
dans le tampon de journalisation le LGWR enregistre > si existe, exécute la requête. Sinon > Analyse
les enregistrements du temps vers les fichiers de syntaxique> Analyse sémantique > vérifie le dict de
journalisation. Il se déclenche lorsque : cache > si existe les informations des tables, si existe,
utilise, sinon la cherche et la copie dans le cache
• On fait commit
> générer l’arbre d’analyse et plan d’exécution
• 1/3 du cache est occupé
> identifie les blocks qui répondent > vérifie le buffer
• Un point de reprise
cache, si n’existe pas il les copie dans le cache (basé
• Chaque 3 secondes
sur la liste LRU)
• Avant d’exécuter le DBWn
> examiner les blocks et extraire les informations
SMON > envoyer le résultat à l’utilisateur.
Processus de récupération en cas d’échec. Il permet
de
Structure d’une BD [SHOW PARAM sga] (affiche tous les paramètres
contenant le terme ‘sga’)
La BD est structurée, logiquement, en des schémas
et peut être divisés en des tablespaces constitués Modification des paramètres SPFILE
d’un ensemble de segments formés par des extents Modification dans la session et le fichier spfile
qui regroupent des blocs contigus.
[ALTER SYSTEM SET undo_tablespace = UNDO2
Un segment peut stocker une seule structure (Table, SCOPE=BOTH] (both = session + fichier)
index ou autres) appelé segment de données,
segment d’annulation, segment temporaire, … Démarrage d’une instance
Afin de démarrer une instance Oracle choisis l’ordre
Fichiers de paramètres d’initialisation suivant :

Il faut se connecter comme administrateur [SYS, 1. Utilise le spfile de l’instance


SYSTEM ou avec le privilège SYSDBA] pour allumer 2. Prend le spfile par défaut d’Oracle
ou éteindre l’instance Oracle. Oracle lit un fichier 3. Utilise le pfile de l’instance
d’initialisation pour démarrer l’instance. 4. Prend le pfile par défaut d’Oracle

[CONNECT / AS SYSDBA Si on précise le fichier l’ordre n’est pas suivit.

STARTUP (PFILE=/DISK1/initEMI.ora)] [STARTUP PFILE=$ORACLE_HOME/dbs/initEMI.ora]

Le fichier d’initialisation contient des paramètres Le fichier PFILE peut indiquer l’emplacement d’un
d’instance comme : SPFILE à utiliser. Il a 3 modes de démarrage :

• Nom de la BD NOMOUNT
• Tailles des structures mémoire de la SGA Utilisé lors de la création de la BD ou la recréation
• Utilisation des fichiers de journalisation en des fichiers de contrôle.
ligne
MOUNT
• Nom et emplacement des fichiers de Localiser et ouvrir les fichiers de contrôle pour faire
contrôle.
la maintenance. Utilisé pour renommer les fichiers
• Informations sur les segments d’annulation. ou changer l’options d’archivage ou pour faire la
Dans le fichier, on trouve deux paramètres : récupération de BD.

• EXPLICITE : fichier contient une entrée OPEN


• IMPLICITE : on prend les valeurs par défaut Localiser et vérifier l’existence de tous les fichiers
d’Oracle. pour vérifier la cohérence entre la BD et les fichiers
du système. Puis donner accès à tous les utilisateurs.
Le fichier PFILE initSID.ora
C’est un fichier texte modifiable, les modifications [ALTER DATABASE MOUNT ;]
sont prises en considération lors du redémarrage.
[ALTER DATABASE OPEN ;]
Le fichier SPFILE spfileSID.ora
[ALTER DATABASE emi OPEN READ ONLY ;]
Fichier binaire dans le coté serveur. Il n’est pas
éditable et mis à jour par Oracle. Les modifications Arrêt de la BD
sont prises en considération lors du redémarrage.
Abort
[CREATE SPFILE= ‘F1.spfile’ FROM PFILE=’F2.pfile’] Ne permet rien et arrête la BD

[CREATE PFILE= ‘F1.pfile’ FROM SPFILE=’F2. spfile’] Immediate


Ne permet rien et créer un checkpoint
Les paramètres mentionnés dans le SPFILe sont dans
la vue V$SPPARAMETER Transactional
Finit les transactions en cours + checkpoint
[SELECT * FROM V$SPPARAMETER] (paramètres
dans le SPFILE) Normal
[SELECT * FROM V$PARAMETER] (paramètres dans Attend la fin des sessions + finit transactions +
la session courante) checkpoint.
Les dictionnaires de données On peut ajouter des groupes ou des membres avec
les commandes :
Il décrit les objets de la BD et contient des tables de
performances pour surveiller et régler la BD. Il [ALTER DATABASE ADD LOGFILE GROUP 3
contient aussi les informations sur EN LECTURE
SEULE : (‘…/log3_1.log’, ‘…/log3_2.log’) SIZE 5M ;]

• La structure logique (tablespace, segments) [ALTER DATABASE ADD LOGFILE MEMBER


‘…/log1_4.log’ TO GROUP 1,
• Définitions d’objets (tables, vues, index)
’…/log2_4.log’ TO GROUP 2,
• Contraintes d’intégrités
‘…/log3_4.log’ TO GROUP 3 ;]
• Les utilisateurs
• Les rôles On ajoute REUSE si le fichier existe déjà et on
• Les privilèges souhaite l’utiliser.

Le dict de données est stocké dans le tablespace Pour supprimer le groupe on utilise
SYSTEM, son propriétaire est l’utilisateur SYS. Il
[ALTER TABLE DROP LOGFILE GROUP 3 ;]
contient aussi des vues qui facilitent l’accès aux
tables de bases contenues dans le dictionnaire. On ne peut pas supprimer un group actif (en cours
d’écriture) ni un groupe qui n’as pas été archivé
On trouve deux types de vues :
offline si le mode ARCHIVELOG est activé, la
• Statique suppression se fait uniquement sur Oracle donc les
fichiers persistent sur le disque.
Catégorisé par leur portée : USER_, ALL_, DBA_.
L’accès respectivement est : owned by user, user has On peut modifier les fichiers de journalisation en
access to, all objects. mode MOUT de la BD avec la commande

• Dynamique [ALTER DATABASE RENAME FILE ‘…/redo2a.log’ TO


‘…/redo2_1.log’ ;]
Nous informations sur l’activité de la BD pris du
fichier de contrôle. Permet de surveiller et contrôler Le fichier peut être réinitialisé avec la commande :
les performances de la BD. Ils ont le préfix V$.
[ALTER DATABASE CLEAR LOGFILE GROUP 2 ;]
Fichiers de journalisation Et la commande pour éviter d’archiver le fichier
Chaque transaction oracle a un numéro qui endommagé
l’identifie : System Change Number SCN. La vue de [ALTER DATABASE CLEAR UNARCHIVED LOGFILE
contrôle des valeurs SCN peuvent être consultés par GROUP 2 ;]
la commande [SELECT * FROM
V$DATAFILE_HEADER] et [SELECT * FROM Pour avoir les informations sur les logs on consulte
V$DATAFILE]. La structure des fichiers de les vues V$LOG pour les groupes et V$LOGFILE pour
journalisation est en groupes composés de copies les membres. La vue a une colonne « STATUS » avec
(membres) identiques de fichiers de journalisation en les états d’un groupe :
ligne. DEUX GROUPES AU MOINS sont requis. Les
• UNUSED : nouveau fichier vide
membres du même groupe ont la même taille. Le
• CURRENT : groupe en ligne en cours
nombre de groupes/membres est renseigné lors de
• ACTIVE : checkpoint pas encore effectué
la création de la base de données avec les
• INACTIVE : n’est pas utile à la récupération
paramètres MAXLOGFIES et MAXLOGMEMBERS.
• CLEARING : en cours d’effacement, il passe
Au changement de fichier de journalisation, un vers UNUSED.
checkpoint se produit et met à jour le SCN et les
informations sont écrites dans le fichier de contrôle.
La vue V$INSTANCE_RECOVERY contient les
estimations de temps de récupération de l’instance.

Afin de changer le fichier de journalisation on peut le


forcer [ALTER SYSTEM SWITCH LOGFILE ;]
Tablespaces et fichier de données ……
Les Tablespaces appartiennent à une seule base de DEFAULT TEMPORARY TABLESPACE temp
données, sont composés d’un ou +ieurs fichier de
données et divisés en des segments. TEMPFILE ‘…/temp01.dbf’ SIZE 4M

Les tablespaces SYSTEM et SYSAUX sont obligatoires, …. ;]


ils sont créés avec la BD. La TS SYSTEM contient le Afin de trouver le tablespace par défaut, on exécute
dictionnaire de données et le segment d’annulation. la commande :
[CREATE TABLESPACE nom_ts DATAFILE [SELECT * FROM DATABASE_PROPERTIES WHERE
‘…/userdata01.dbf’ SIZE 300M EXTENT property_name LIKE ‘%TEMP%’ ;]
MANAGEMENT LOCAL UNIFORM SIZE 128K ;]
On peut mettre la TS en mode ONLINE ou OFFLINE
Les tablespaces sont par défaut SMALLFILE mais on avec la commande
peut utiliser des BIGFILE qui a une taille plus grande,
on peut précisier l’autoextend, le LOGGING pour la [ALTER TABLESPACE userdata OFFLINE ;]
journalisation, son état (ONLINE, OFFLINE) et le type Lors de la mise OFFLINE de table space on peut
de COMPRESSION. UNIFORM indique que la taille des ajouter plus de spécifications sur le mode :
extents est uniforme. La gestion peut se faire par un
dictionnaire. • NORMAL : vide la SGA et met en état
souhaité
[CREATE TABLESPACE nom_ts DATAFILE
• TEMPORARY : exécute un checkpoint pour
‘…/userdata01.dbf’ SIZE 500M EXTENT
les fichiers de données en ligne uniquement
MANAGEMENT DICTIONARY DEFAULT
• IMMEDIATE : restauration physique doit être
STORAGE(initial 1M NEXT 1M PTCINCREASE 0);]
faite avant de remettre le TS en ligne
PCTIncrease est le pourcentage d’augmentation de la • FOR RECOVER
taille des extents.
Modifier les paramètres du TS
Tablespaces d’annulation [ALTER TABLESPACE userdata MINIMUM EXTENT
Permettent de stocker les segments d’annulation, ils 2M ;]
sont gérés localement
[ALTER TABLESPACE userdata DEFAULT STORAGE
[CREATE UNDO TABLESPACE undo1 DATAFILE (INITIAL 2M NEXT 2M MAXEXTENTS 999) ;]
‘…/undo01.dbf’ SIZE 40M ;]
[CREATE TABLESPACE user_data DATAFILE
Les TS d’annulation ont in paramètre RETENTION '/u01/oradata/userdata01.dbf' SIZE 200M
avec les valeurs (GARANTEE ou NOGARANTEE), ce AUTOEXTEND ON NEXT 10M MAXSIZE 500M ;]
paramètre est la durée en secondes de conservation
[ALTER DATABASE DATAFILE
des données d’annulation d’une transaction validée.
/u03/oradata/userdata02.dbf' RESIZE 200M ;]
[ALTER SYSTEM SET UNDO_RETENTION=1800]
[ALTER TABLESPACE user_data ADD DATAFILE
Tablespaces temporaires '/u01/oradata/userdata03.dbf' SIZE 200M ;]
Permettent de faire des opérations de tri, ils peuvent
être partagé par des utilisateurs, et il est
recommandé de faire la gestion locale. Vue qu’il est
temporaire il est toujours en mode NOLOGGING et le
fichier ne peux pas être renommé.

[CREATE TEMPORARY TABLESPACE temp1 TEMPFILE


‘…/temp01.dbf’ SIZE 20M EXTENT MANAGEMENT
LOCAL UNIFORM SIZE 4M;]

On peut créer un tablespace temporaire par défaut


lors de la création ou mise à jour de la BD (CREATE
DATABASE, ALTER DATABASE)

[CREATE DATABASE DB01


Gestion des tables Les index
On retrouve plusieurs types de tables chez Oracle : On trouve deux catégories :

• Tables normales • Logique


• Tables partitionnées o Basé sur une colonne ou concaténés
• Tables organisées en index o Unique ou non-unique
• Tables clustérisées o Basés sur une fonction
o De domaine
Tables partitionnées • Physique
Stocke les lignes par partitionnement par plage,
o Partitionné ou pas
hashage, liste ou composite. Afin d’améliorer la
o B-Tree
performance. [CREATE TABLE commande (…)
o Bitmap
partition by range (date_comm) (partition com2020
values less than (todate(‘01/01/2020’)) tablespace
dtp_arch, partition com_2021 values less than
(todate(‘01/01/2021’)) tablespace dtp_p01) ;]

Tables organisées par index

B-TREE
Nécessite moins de stockage et a une structure qui
accélère la recherche.

Un index est un arbre avec un pointeur (ROWID) Créer un index


mais les tables organisées par index contiennent
l’enregistrement tout entier à la place du ROWID.

Structure du ROWID
Numéro de segment + Numéro de fichier + Numéro
de block + numéro de ligne

Structure d’une ligne


Entête (nb colonnes, statut de verrouillage, ...),
longueur de la colonne, valeur

Tables clustérisées
Ensemble de tables qui partagent les mêmes blocs de Les Profils
données, elles sont regroupées car ils ont des
colonnes communes et sont souvent utilisées tous en CREATE PROFILE profil LIMIT
même temps (Jointure). [FAILED_LOGIN_ATTEMPTS max_value]
[PASSWORD_LIFE_TIME max_value_days] [
Création de table {PASSWORD_REUSE_TIME |
On ajoute le paramètre PTCFREE (pour le PASSWORD_REUSE_MAX} max_value]
pourcentage à laisser vide dans les blocks pour les [PASSWORD_LOCK_TIME max_value]
mises à jour), PTCUSED (pour le pourcentage au- [PASSWORD_GRACE_TIME max_value]
dessus duquel on peut ajouter des enregistrements [PASSWORD_VERIFY_FUNCTION
dans le bloc), TABLESPACE, STORAGE (INITIAL 20M {function|NULL|DEFAULT} ]
NEXT 10M PTCINCREASE 6 MIN EXTENTS 10
MAXEXTENTS 100 BUFFER_POOL KEEP). On peut Password_GRACE_TIME : Période de grâce, en jours,
aussi ajouter un paramètre INVISIBLE pour une pendant laquelle l'utilisateur peut changer de mot de
colonne si on veut la cacher pendant l’appel de passe après la première connexion établie une fois le
DESCRIBE. mot de passe expiré

[CREATE TABLE hr.employees( …) TABLESPACE CREATE PROFILE MON_PROFIL LIMIT


USERS STORAGE(INITIAL 200K NEXT 200K FAILED_LOGIN_ATTEMPTS 3
PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS PASSWORD_LOCK_TIME UNLIMITED
UNLIMITED );] PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 15
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION
MA_FONCTION_VERIF;

CREATE USER user IDENTIFIED {BY password |


EXTERNALLY |GLOBALLY AS external_name} [
DEFAULT TABLESPACE tablespace ] [ TEMPORARY
TABLESPACE tablespace ] [ QUOTA {integer [K | M ]
| UNLIMITED } ON tablespace [ QUOTA {integer [K |
M ] | UNLIMITED } ON tablespace ]...] [ PASSWORD
EXPIRE ] [ ACCOUNT { LOCK | UNLOCK }] [ PROFILE {
profile | DEFAULT }]

CREATE USER aladdin IDENTIFIED BY Yasmine


DEFAULT TABLESPACE data TEMPORARY
TABLESPACE temp QUOTA 15M ON data QUOTA
10M ON users PASSWORD EXPIRE;

Vous aimerez peut-être aussi