Cours Oracle DBA

105
Systèmes de gestion de base de données SGBD Oracle 10g

description

oracle architecture

Transcript of Cours Oracle DBA

Systèmes de gestion de base de données SGBD

Oracle 10g

PLAN

• Pourquoi un SGBD ?

• Architecture du SGBD oracle

• Construire une base de données sous Oracle

• Administrer une base de données

Pourquoi un SGBD ?

• Indépendance physique: Plus besoin de travailler directement sur les fichiers physiques .

• Indépendance logique : Un même ensemble de données peut être vu différemment par des users différents

• Manipulations des données par des non informaticiens : langage quasi-naturel

• Efficacité des accès aux données : doit permettre d’obtenir des réponses aux interrogations en un temps raisonnable

• Cohérence des données: permettre d’ajouter des contraintes aux valeurs. Par exemple :

– l’âge d’une personne supérieur à zéro

– Salaire supérieur à zéro

Pourquoi un SGBD (2) ?

• Non redondance des données : Afin d’éviter les problèmes lors des mises à jour, chaque donnée ne doit être présente qu’une seule fois dans la base

• Partageabilité des données : Il s’agit de permettre à plusieurs utilisateurs d’accéder aux mêmes données au même moment.Il s’agit alors de pouvoir :– Permettre à deux (ou plus) utilisateurs de modifier la

même donnée « en même temps »;– Assurer un résultat d’interrogation cohérent pour un

utilisateur consultant une table pendant qu’un autre la modifie.

Pourquoi un SGBD (3) ?

• Sécurité des données : Données protégées contre accès non autorisés => Associer à chaque user des droits d’accès .

• Résistance aux pannes: Récupérer la base dans un état sain

Pourquoi un SGBD (4) ?

Architecture à trois niveaux : ANSI/SPARC

Architecture générale Oracle

Création de base de données

• Lancer l’assistant de gestion de bases de données (Database Configuration Assistant)

• Créer votre propre base de données :

– Portant le mot TP suivi de votre nom : TP_XXXX ;

– Ayant comme mot de passe : oracle

Requêtes utiles

• Connaître l’instance courante :

SHOW PARAMETER INSTANCE_NAME

• Connaître la taille de la mémoire partagée :

SHOW PARAMETER MEMORY_TARGET

Infos sur les processus

• Les vues

V$PROCESS, V$BGPROCESS

Lister les noms de tous les background processus ?

Rôle : écrit les blocs modifiés du cache de

tampons de la base dans des fichiers de

données stockés surdisque.

Fréquence d’écriture du DBW

• Toutes les 3 secondes

• Dès que la Dirty List (liste des blocs modifiés) dépasse un seuil prédéfini

• Lors de chaque CheckPoint ( CKPT)

• Chaque fois qu’une base est arrêtée normalement

Processus LGWR (obligatoire)

Rôle : écrit les entrées de journalisation sur le disque.

Fréquence d’écriture du LGWR

• Toutes les trois secondes

• Lors de la validation d’une transaction en cours « COMMIT »

• Si le buffer REDO LOG est rempli à 1/3

• Lors de chaque Checkpoint (CKPT)

• Lorsqu’il est déclenché par le processus DBWn

Processus CKPT ( obligatoire )

Rôle : met à jour l'ensemble des fichiers de

données et de contrôle de la base afin

d'indiquer le point de reprise le plus

récent.

Fréquence d’écriture du CKPT

• Manuellement : ALTER SYSTEM CHECKPOINT

• Lors d’un arrêt propre de l’instance Oracle

Processus ARCn (optionnel )

Rôle : copie les fichiers de journalisation

(fichiers redo log) dans le lieu destiné au

stockage des archives lorsqu'un

changement de fichier de journalisation se

produit.

Processus SMON (obligatoire )

Rôles :

• Effectue une récupération après panne lorsque

l'instance est démarrée après une défaillance.

• Nécessaire au démarrage de l’instance Oracle

• Nettoie les segments temporaires et inutilisés

• Fusionne l’espace libre dans de plus grand

blocs contigus

Processus PMON ( obligatoire )

Rôles :

• effectue un nettoyage de processus lorsqu'un processus utilisateur échoue.

• Récupération des processus utilisateurs défaillants

• Libère le cache de blocs de données

• Libère les ressources qui étaient exploitées par les utilisateurs

• Fusionne l’espace libre dans de plus grand blocs contigus

Remarque : à l’instar du processus SMON, le processus PMON s’active régulièrement pour se rendre compte si on a besoin de lui.

Architecture logique

Architecture logique

(1) Tablespace

SQL> create table

subjects (

2 subject_id

number not null,

3 subject_name

varchar2(30) not

null,

4 description

varchar2(4000)

5 )

6 tablespace

users;

• Les tablespace font le lien entre les objets et la structure physique de la base de données :

Tablespaces ( v$tablespace)

SYSTEM tablespace

SYSTEM – a tablespace that is always used to store SYSTEMdata that includes data about tables, indexes, sequences, and other objects – this metadata comprises the data dictionary. Every Oracle database has to have a SYSTEM tablespace—

it is the first tablespace created when a database is created.

Accessing it requires a higher level of privilege. You cannot rename or drop a SYSTEM tablespace. You cannot take a SYSTEM tablespace offline. The SYSTEM tablespace could store user data, but this is

not normally done—a good rule to follow is to never allow allow the storage of user segments in the SYSTEMtablespace.

This tablespace always has a SYSTEM Undo segment.

SYSAUX tablespace

The SYSAUX tablespace stores data for auxiliary applications such as the LogMiner, Workspace Manager, Oracle Data Mining, Oracle Streams, and many other Oracle tools.

This tablespace is automatically created if you use the Database Creation Assistant software to build an Oracle database.

Like the SYSTEM tablespace, SYSAUX requires a higher level of security and it cannot be dropped or renamed.

Do not allow user objects to be stored in SYSAUX. This tablespace should only store system specific objects.

This is a permanent tablespace.

Non-system tablespacesUNDO tablespace :

Le tablespace UNDO, comme son nom l'indique, est réservé exclusivement à l'annulation des commandes DML (UPDATE, INSERT, etc...). Lorsqu'on exécute l'ordre DELETE par exemple, Oracle commence par copier les lignes à supprimer dans le tablespace UNDO et ensuite indique que les blocs contenant les données dans le tablespace d'origine sont libres. Un ROLLBACK permettre de revenir en arrière alors que le COMMIT supprimera les lignes du tablespace UNDO (on comprend mieux ici pourquoi un DELETE est si long : 2 écritures pour une suppression :-/).

Non-system tablespacesTEMP tablespace :

Un tablespace temporaire est un tablespacespécifique aux opérations de tri Ce tablespace n'est pas destiné à accueillir des objets de la base de données et son usage est réservé au système.

Rôle d'un Tablespace

• Organiser logiquement le stockage des données (localisation d’une application dans un Tablespace, cantonnement des utilisateurs dans un tablespace)

• Contrôler l'allocation des espaces disques au utilisateurs via des quotas

• Augmenter la disponibilité des données (arrêt partiel d'une base via l'arrêt d'un Tablespace)

• Sauvegarder et restaurer partiellement une base

• Améliorer les performances grâce à la distribution des informations sur des disques différents (index dans tablespace et les tables dans un autre)

• Fournir les paramètres de stockages des données par défaut

Pourquoi mon code SQL de création de table a toujours

fonctionné alors que je n’ai jamais précisé de Tablespace?

La raison est : tous les comptes ont un Tablespace par défaut.

Alors pourquoi s’en préoccuper ?

Le DBA ne peut pas répartir les objets de façon optimale car il ne sait pas comment fonctionne l’application. Généralement, le DBA va créer deux tablespaces : 1 Tablespace pour les tables + 1 Tablespace pour les indexes (pour chaque schéma). Ces 2 Tablespaces auront leurs fichiers sur des disques distincts. De cette manière, les lectures/écritures seront réparties sur les disques.Il faut ensuite à chaque création d’objet, préciser le Tablespace cible.

Information sur les tablespaces

• DBA_TABLESPACES

• V$TABLESPACE

• DBA_DATA_FILES

• V$DATAFILE

• DATABASE_PROPERTIES

• USER_TABLESPACES

Types de tablespace :

1- tablespace permanente

2- tablespace temporaire

3- tablespace UNDO

2 types :

• SMALLFILE (par défaut) => fichier de 2^22 blocs (8KB = 32GB par fichier)

• BIGFILE => fichier de 2^32 blocs (8KB = 32TB)

Création d’un tablespaceLa commande CREATE TABLESPACE

CREATE TABLESPACE tablespace[DATAFILE clause][MINIMUM EXTENT integer[K|M]][BLOCKSIZE integer [K]][LOGGING|NOLOGGING][DEFAULT storage_clause ][ONLINE|OFFLINE][PERMANENT|TEMPORARY][extent_management_clause][segment_management_clause]

As you can see, almost all of the clauses are optional. The clauses are defined as follows:

• TABLESPACE: This clause specifies the tablespacename.

• DATAFILE: This clause names the one or more datafiles that will comprise the tablespace and includes the full path, example:

DATAFILE'/u01/student/dbockstd/oradata/USER350data01.dbf' SIZE 10M

• MINIMUM EXTENT: Every used extent for the tablespace will be a multiple of this integer value. Use either T, G, M or K to specify terabytes, gigabytes, megabytes, or kilobytes.

• BLOCKSIZE: This specifies a nonstandard block size – the integer value for BLOCKSIZE must correspond with one of the DB_nK_CACHE_SIZE parameter settings.

• LOGGING: This is the default – all tables, indexes, and partitions within a tablespace have modifications written to Online Redo Logs.

• NOLOGGING: This option is the opposite of LOGGING and is used most often when large direct loads of clean data are done during database creation for systems that are being ported from another file system or DBMS to Oracle.

• DEFAULT storage_clause: This specifies default parameters for objects created inside the tablespace. Individual storage clauses can be used when objects are created to override the specified DEFAULT.

• OFFLINE: This parameter causes a tablespaceto be unavailable after creation.

ALTER TABLESPACE users OFFLINE;

• PERMANENT: A permanent tablespace can hold permanent database objects.

CREATE TABLESPACE tbs_perm_01

• TEMPORARY: A temporary tablespace can hold temporary database objects, e.g., segments created during sorts as a result of ORDER BY clauses or JOIN views of multiple tables.

CREATE TEMPORARY TABLESPACE tbs_temp_01

• extent_management_clause: This clause specifies how the extents of the tablespace are managed and is covered in detail later in these notes.

• segment_management_clause: This specifies how Oracle will track used and free space in segments in a tablespace that is using free lists or bitmap objects.

• datafile_clause: filename [SIZE integer [K|M] [REUSE][ AUTOEXTEND ON | OFF ]filename: includes the path and filename and file size.

REUSE: specified to reuse an existing file. • NEXT: Specifies the size of the next extent.• MAXSIZE: Specifies the maximum disk space

allocated to the tablespace. Usually set in megabytes, e.g., 400M or specified as UNLIMITED.

Exemple création tablespace permanente :

CREATE TABLESPACE tbs_perm_01

DATAFILE 'tbs_perm_01.dat'

SIZE 20M

ONLINE;

Exemple création tablespace temporaire :

CREATE TEMPORARY TABLESPACE tbs_temp_01 TEMPFILE 'tbs_temp_01.dbf' SIZE 5M AUTOEXTEND ON;

Exemple création tablespace UNDO :

CREATE UNDO TABLESPACE tbs_undo_01 DATAFILE 'tbs_undo_01.f' SIZE 5M AUTOEXTEND ON RETENTION GUARANTEE;

Alter tablespace

Par exemple , chaque table de donnée est stockée dans son propre segment de données et Chaque index de donnée est stocké dans son propre segment d’index .

Segments

• Segments : • Le niveau logique de stockage situé au-dessus• d'un extent s'appelle un segment.• Un segment est un ensemble d'extents alloués• pour une certaine structure logique.• Seuls les objets 'physiques' peuvent être des• segments. Ainsi une vue ou un synonyme• n'est pas un segment...

• Types de segment : Segments de données, Segments d'index, Segments d'annulation (rollback segment), Segments temporaires

Extents

Extents (ensembles de blocs contigus)

Le niveau logique d'une base de données

s'appelle un extent.

Un extent est un nombre défini de blocs de

données contigus (obtenus par une allocation

unique) permettant de stocker un type

spécifique d'informations.

Bloc de données

Au niveau de détail le plus fin, les données d'une

base Oracle sont stockées dans des blocs de

données.

Un bloc de données correspond à un nombre

d'octets spécifique d'espace physique sur le

disque.

La taille du bloc de données est indiquée pour

chaque tablespace lors de la création de celui-ci.

Chaque base utilise et alloue de l'espace libre de

base de données dans les blocs de données

Oracle.

Architecture physique Oracle

Structure physique d’une BD (1)

Structure physique d’une BD (2)

Les fichiers constituant une base de données Oracle sont organisés de la façon suivante :

Fichiers de contrôle : contiennent des données sur la base

elle-même (informations sur la structure physique de la base de

données). Ces fichiers sont d'une importance capitale pour la

base. Sans eux, vous ne pouvez pas ouvrir de fichiers de

données pour accéder aux données de la base.

Fichiers de données : contiennent les données utilisateur ou

les données d'application de la base.

Fichiers de journalisation en ligne : permettent la récupération

d'une instance de base de données. S'il se produit une panne de

la base sans perte des fichiers de données, l'instance peut

récupérer la base grâce aux informations contenues dans ces

fichiers.

Structure physique d’une BD (3)

Les fichiers supplémentaires ci-dessous permettent à la

base de données de s'exécuter correctement : Fichier de paramètres : permet de définir comment

l'instance est configurée lors de son lancement.

Fichier de mots de passe : permet aux utilisateurs de se

connecter à distance à la base de données et d'effectuer des

tâches d'administration.

Fichiers de sauvegarde : ces fichiers sont utilisés pour la

récupération de la base de données. Les fichiers de sauvegarde

sont généralement restaurés lorsqu'une défaillance physique ou

une erreur utilisateur a endommagé ou supprimé les fichiers

d'origine.

Structure physique d’une BD (4)Fichiers de journalisation archivés : contiennent l'historique complet

des modifications de données (informations de journalisation) générées

par l'instance.• Vous pouvez, à l'aide de ces fichiers et d'une sauvegarde de la base, restaurer un fichier

de données perdu.

• Les fichiers de journalisation archivés permettent de récupérer des fichiers de données

restaurés.

Fichiers trace : chaque processus serveur et chaque processus en

arrière-plan peut écrire dans un fichier trace associé.• Lorsqu'une erreur interne est détectée par un processus, ce dernier procède à un dump

des informations sur l'erreur vers son fichier trace.

• Certaines informations écrites dans un fichier trace sont destinées à l'administrateur de

base de données, tandis que d'autres s'adressent aux services de support technique

Oracle. .

Fichiers d’alertes : sont des fichiers trace spécifiques. Le fichier d'alertes d'une base de données est un journal chronologique des messages et des erreurs. Oracle recommande de consulter ces fichiers.

Gestion des utilisateurs, profils et ressources

Qu’est ce qu’un privilège?

Les privilèges sont des droits pour exécuter

des requêtes

Le plus haut niveau de privilèges sont des

privilèges DBA, il a la possibilité de donner

aux utilisateurs l’accès à la base de

données

Les utilisateurs doivent posséder des

privilèges système pour se connecter à la

base de données, et les privilèges objets

pour manipuler des données

Créer et modifier les utilisateurs

1. Mode d’identification de l’utilisateur

2 types d’identification :

– par Oracle

– par le système d’exploitation

a. Identification par Oracle :SQL> CONNECT oheu/rx239$

Connecté.

b. Identification par le système d’exploitationSQL> CONNECT /

Connecté.s

2. Création d’un utilisateur

L’ordre SQL CREATE USER permet de créer un nouvel utilisateur.

Syntaxe

CREATE USER nom IDENTIFIED BY mot_de_passe | EXTERNALLY

[ DEFAULT TABLESPACE nom_tablespace ]

[ TEMPORARY TABLESPACE nom_tablespace ]

[ QUOTA valeur [K|M] | UNLIMITED ON nom_tablespace [,...] ]

[ PROFILE nom_profil ]

[ PASSWORD EXPIRE ]

[ ACCOUNT LOCK | UNLOCK ] ;

2. Création d’un utilisateur

Exemple :CREATE USER u1 IDENTIFIED BY pass

DEFAULT TABLESPACE data

QUOTA UNLIMITED ON data

PASSWORD EXPIRE;

Pour qu’un nouvel utilisateur puisse effectivement seconnecter, il faut en plus lui donner le droit de le faire, en lui attribuant le privilège système CREATE SESSION

Les options de l’ordre SQL CREATE USER sont :Nom Nom de l’utilisateur.Nom de l’utilisateur: Cette clause indique si l’utilisateur est identifié par le

système d’exploitation (EXTERNALLY) ou par Oracle (BY mot_de_passe).

DEFAULT TABLESPACE: Cette clause indique dans quel tablespace les segments de l’utilisateur sont créés par défaut (c’estàdire si aucune clause TABLESPACE n’est présente lors de la création du segment).

TEMPORARY TABLESPACE

QUOTA La notion de QUOTA permet de limiter l’espace qu’un utilisateur peut employer dans un tablespace avec les segments qu’il crée.

l Aucun quota sur le tablespace

ORA-01950: pas de privilèges sur le tablespace’DATA’

l Dépassement de quota sur le tablespace

ORA-01536: dépassement du quota d’espace affecté au

tablespace ’DATA’

Les options de l’ordre SQL CREATE USER sont (2)PROFILE

PASSWORD EXPIRE Cette clause permet de forcer une modification du mot de passe lors de la première connexion (le mot de passe de l’utilisateur est expiré). Si le compte est créé avec l’option PASSWORD EXPIRE, l’utilisateur, lors de sa première connexion, sera invité à changer le mot de passe qui lui a été attribué initialement.

ACCOUNT

LOCK : le compte est verrouillé et la connexion interdite (erreur ORA-28000: compte verrouillé).

UNLOCK : le compte n’est pas verrouillé et la connexion autorisée (valeur par défaut).

Si le compte est créé avec l’option LOCK, le compte existe mais l’utilisateur ne peut pas se connecter. L’ordre SQL ALTER USER pourra être utilisé plus tard pour déverrouiller le compte de l’utilisateur

3. Modification d’un utilisateur

L’ordre SQL ALTER USER permet de créer un nouvel utilisateur.Syntaxe

ALTER USER nom

[ IDENTIFIED BY mot_de_passe | EXTERNALLY ]

[ DEFAULT TABLESPACE nom_tablespace ]

[ TEMPORARY TABLESPACE nom_tablespace ]

[ QUOTA valeur [K|M] | UNLIMITED ON nom_tablespace [,...] ]

[ PROFILE nom_profil ]

[ PASSWORD EXPIRE ]

[ ACCOUNT LOCK | UNLOCK ] ;

Exemplesl Modification du mot de passe d’un utilisateur

ALTER USER u1

IDENTIFIED BY tempo

PASSWORD EXPIRE;

l Modification du tablespace par défaut et attribution de quotasALTER USER u1

DEFAULT TABLESPACE test

QUOTA UNLIMITED ON test

QUOTA 10M ON data;

l Verrouillage d’un compteALTER USER u1 ACCOUNT LOCK;

l Déverrouillage d’un compteALTER USER u1ACCOUNT UNLOCK;

4. Suppression d’un utilisateur

L’ordre SQL DROP USER permet de créer un nouvel utilisateur.

Syntaxe

DROP USER nom [ CASCADE ] ;

Exemple :

DROP USER u1 CASCADE;

4. Suppression d’un utilisateur (2)

Si l’utilisateur possède des objets, l’option CASCADE doit être présente pour forcer la suppression préalable des objets. Si l’utilisateur possède des objets et que l’option CASCADE soit absente, l’erreur ORA-01922 est retournée :

ORA-01922: CASCADE à indiquer pour

supprimer ’u1’

Attention , il n’a pas de ROLLBACK possible !

Un utilisateur actuellement connecté ne peut pas être supprimé :

ORA-01940: impossible de supprimer un

utilisateur qui est connecté

5. Trouver des informations sur les utilisateurs

Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les utilisateurs :

l DBA_USERS : informations sur les utilisateurs ;

l DBA_TS_QUOTAS : informations sur les quotas des utilisateurs.

Les profils

1. Présentation

Un profil est un ensemble nommé de limitations de ressources qui peut être attribué à un utilisateur.

Les ressources suivantes peuvent être limitées :

• temps CPU par appel et/ou par session ;

• nombre de lectures logiques par appel et/ou par session ;

• nombre de sessions ouvertes simultanément par un utilisateur ;

• temps d’inactivité par session ;

• durée totale de la session ;

• quantité de mémoire privée dans la SGA (configuration serveurs partagés uniquement).

Une lecture logique correspond à une lecture de bloc lors d’une requête, que ce bloc soit déjà présent en mémoire (dans le DatabaseBuffer Cache) ou lu sur disque (dans ce cas, la lecture logique correspond aussi à une lecturephysique).

1. Présentation (2)

Depuis la version 8, les profils peuvent aussi être utilisés pour

mettre en oeuvre une politique de gestion des mots de passe.

Les fonctionnalités suivantes peuvent être mises en oeuvre :

• verrouillage de compte (et durée de verrouillage) au delà

d’un certain nombre d’échecs de tentative deconnexion ;

• durée de vie des mots de passe (avec éventuellement une

période de grâce) ;

• Non réutilisation d’un mot de passe avant un certain temps

ou avant un certain nombre de changements ;

• complexité du mot de passe.

2. Création d’un profil

L’ordre SQL CREATE PROFILE permet de créer un nouveau profil.Syntaxe

CREATE PROFILE nom LIMIT

[ SESSIONS_PER_USER valeur | UNLIMITED | DEFAULT ]

[ CPU_PER_SESSION valeur | UNLIMITED | DEFAULT ]

[ CPU_PER_CALL valeur | UNLIMITED | DEFAULT ]

[ CONNECT_TIME valeur | UNLIMITED | DEFAULT ]

[ IDLE_TIME valeur | UNLIMITED | DEFAULT ]

[ LOGICAL_READS_PER_SESSION valeur | UNLIMITED | DEFAULT ]

[ LOGICAL_READS_PER_CALL valeur | UNLIMITED | DEFAULT ]

[ COMPOSITE_LIMIT valeur | UNLIMITED | DEFAULT ]

[ PRIVATE_SGA valeur [K|M] | UNLIMITED | DEFAULT ]

[ FAILED_LOGIN_ATTEMPTS valeur | UNLIMITED | DEFAULT ]

[ PASSWORD_LIFE_TIME valeur | UNLIMITED | DEFAULT ]

[ PASSWORD_REUSE_TIME valeur | UNLIMITED | DEFAULT ]

[ PASSWORD_REUSE_MAX valeur | UNLIMITED | DEFAULT ]

[ PASSWORD_LOCK_TIME valeur | UNLIMITED | DEFAULT ]

[ PASSWORD_GRACE_TIME valeur | UNLIMITED | DEFAULT ]

[ PASSWORD_VERIFY_FUNCTION nom_fonction | NULL | DEFAULT ] ;

2. Création d’un profil (2)

Exemple :CREATE PROFILE exploitation LIMIT

SESSIONS_PER_USER 3

IDLE_TIME 30

FAILED_LOGIN_ATTEMPTS 3

PASSWORD_LIFE_TIME 30

PASSWORD_REUSE_TIME 180

PASSWORD_LOCK_TIME UNLIMITED

PASSWORD_GRACE_TIME 3

PASSWORD_VERIFY_FUNCTION verif_mdp_exploitation ;

Limitations de ressources Les limitations de ressources sont les suivantes :

SESSIONS_PER_USER Nombre de sessions simultanées.

CPU_PER_SESSION CPU totale par session (1/100 s).

CPU_PER_CALL CPU totale par appel (1/100 s).

CONNECT_TIME Durée totale de connexion (minutes).

IDLE_TIME Durée d’inactivité (minutes).

LOGICAL_READS_PER_SESSION Nombre de lectures logiques par session.

LOGICAL_READS_PER_CALL Nombre de lectures logiques par appel.

Limitations de ressources (2)

PRIVATE_SGA

Quantité de mémoire privée dans la SGA.

COMPOSITE_LIMIT

Somme pondérée de CPU_PER_SESSION ,CONNECT_TIME, LOGICAL_READS_PER_SESSION et PRIVATE_SGA.

Pour la limite COMPOSITE_LIMIT, la vue RESOURCE_COST permet de consulter les pondérations utilisées et l’ordre SQL ALTER RESOURCE COST de modifier les pondérations.

Limitations sur mots de passe

Les limitations relatives aux mots de passe sont les suivantes :

FAILED_LOGIN_ATTEMPTS

Nombre d’échecs de tentative de connexion autorisés avant verrouillage du compte, 10 dans le profil DEFAULT.

PASWORD_LOCK_TIME

Durée du verrouillage (jours), 1 dans le profil DEFAULT.PASSWORD_LIFE_TIME

Durée de vie du mot de passe (jours), 180 dans le profil DEFAULT.

PASSWORD_GRACE_TIME

Période de grâce après expiration du mot de passe (jours), 7 dans le profil DEFAULT.

Limitations sur mots de passe (2)

PASSWORD_REUSE_TIME

Nombre de jours pendant lequel un mot de passe ne peut pas être réutilisé.

PASSWORD_REUSE_MAX

Nombre de changements de mot de passe avant qu’un mot de passe puisse être réutilisé.

PASSWORD_VERIFY_FUNCTION

Fonction de vérification de la complexité du mot de passe.

Remarques

1. Les limites PASSWORD_REUSE_TIME et PASSWORD_REUSE_MAX ne peuvent pas être spécifiées simultanément : le contrôle de la réutilisation d’un mot de passe est indiqué soit par une durée, soit par un nombre de changements. Si l’une desdeux limites a une valeur (différente de UNLIMITED), l’autre limite doit être UNLIMITED.

2. Des mots clés peuvent être utilisés pour spécifier la valeur d’une limite :

l UNLIMITED : aucune limitation.l DEFAULT : le paramètre hérite de la valeur du profil nommé DEFAULT.

Une limite non spécifiée dans un profil prend la valeur DEFAULT .

3. Modification d’un profil

Syntaxe

ALTER PROFILE nom LIMIT

Exemples

Modification du profil DEFAULTALTER PROFILE default LIMITSESSIONS_PER_USER 3IDLE_TIME 30FAILED_LOGIN_ATTEMPTS 5;-- les autres paramètres gardent la valeur par défaut (UNLIMITED)

Modification d’un autre profil

ALTER PROFILE exploitation LIMITSESSIONS_PER_USER 5 -- passe de 3 à 5IDLE_TIME UNLIMITED -- suppression de la limiteFAILED_LOGIN_ATTEMPTS DEFAULT; -- prend la valeur par défaut (5)-- le reste est inchangé

La modification d’un profil n’affecte les utilisateurs qu’à leur prochaine connexion ; elle n’est pas prise en compte immédiatement pour les utilisateurs déjà connectés.

4. Affectation d’un profil à un utilisateur

Un profil peut être attribué à un utilisateur :l lors de la création de l’utilisateur (CREATE USER) ;l lors d’une modification de l’utilisateur (ALTER USER).

Exemples :Lors de la création de l’utilisateurCREATE USER xgeo IDENTIFIED BY tempo

TEMPORARY TABLESPACE temp

PROFILE exploitation

PASSWORD EXPIRE;

4. Affectation d’un profil à un utilisateur (2)

Lors d’une modification de l’utilisateur

l Affectation d’un profil

ALTER USER u1 PROFILE

exploitation;

5. Activation de la limitation des ressourcesPar défaut, le contrôle de la limitation des ressources n’est pas activé. Créer des profils et les affecter aux utilisateursn’a aucun effet.Pour activer le contrôle de la limitation des ressources, il faut passer le paramètre RESOURCE_LIMIT à TRUE (FALSE par défaut) :

ALTER SYSTEM SET RESOURCE_LIMIT = TRUE [ clause_SCOPE ];

N’oubliez pas d’utiliser la clause SCOPE = BOTH pour rendre la modification persistante en cas de redémarrage de la base de données.Les fonctionnalités de gestion des mots de passe fonctionnent même si le paramètre RESOURCE_LIMIT est à FALSE.

6. Suppression d’un profil

L’ordre SQL DROP PROFILE permet de supprimer un profil.SyntaxeDROP PROFILE nom [ CASCADE ] ;

Exemple :DROP PROFILE exploitation CASCADE;

Si le profil est attribué à des utilisateurs, l’option CASCADE doit être présente. Si le profil est attribué à des utilisateurs et que l’option CASCADE soit absente, l’erreur ORA-02382 est retournée :

ORA-02382<: Le profil EXPLOITATION a des utilisateurs, impossible d’effectuer la suppression sans CASCADE

Le profil DEFAULT est affecté en remplacement aux utilisateurs concernés.La suppression d’un profil n’affecte les utilisateurs qu’à leur prochaine connexion. Le profil DEFAULT ne peut pas être supprimé.

7. Trouver des informations sur les profils

Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les profils :

l DBA_USERS : informations sur les utilisateurs, dont le profil attribué (colonne PROFILE) ;

l DBA_PROFILES : informations sur les profils.