420-PK6-SL
Banques de données Avancées
Gestion des
Gestion des
UTILISATEURS
RÈGLES DE NOMENCLATURE Un UTILISATEUR Oracle est :
• Une connexion à Oracle
• Un nom de connexion "login"
• Un détenteur de droits et privilèges d'accès Le nom d'utilisateur doit :
• Contenir seulement des lettres, des chiffres et les # $ et __Contenir seulement des lettres, des chiffres et les # $ et __
Les $ et # sont beaucoup utilisés par Oracle alors il serait préférable de ne pas les utiliser.
• Débuter absolument par une lettre
Si on souhaite absolument un nom d'utilisateur contenant seulement des chiffres, il faudra le mettre entre
guillemets lors de la connexion.
Notez qu'un "login" entre guillemets est sensible à la casse.
• Contenir au maximum 32 caractères.
AUTENTICATION
Un UTILISATEUR Oracle peut être identifié par :
• Une connexion spécifique à Oracle (utilisateur/mot-de-passe)
• La validation par le "login" du poste de travail
• La validation par le "login" du réseau
Dans le premier cas, l'utilisateur sera créé en spécifiant un mot de passe dans la clause IDENTIFIED [BY].
passe dans la clause IDENTIFIED [BY].
Dans les deux autres cas, l'utilisateur sera créé en utilisant la clause IDENTIFIED EXTERNALLY.
Dans ces deux cas, plusieurs paramètres d'Oracle devront êtres configurés afin de permettre une telle connexion.
Oracle déconseille ces approches car il y a des failles mineures de sécurité qui s'y rattachent.
CONCEPTS
Sous ORACLE, une "DATABASE" est un concept tout à fait différent des autres moteurs (i.e. MySQL, MSSQL …).
Ce concept se réfère à toute l'installation d'oracle (i.e. tous les utilisateurs et tous les espaces de travail). Une "database" est créée à l'installation d'Oracle.
Sous ORACLE, un schéma est associé à un utilisateur plutôt qu'à une "database".
Ainsi, plutôt que d'avoir recours à use "database" pour changer de schéma, on utilisera plutôt l'instruction suivante :
ALTER SESSION SET CURRENT_SCHEMA = "utilisateur";
où "utilisateur" est l'utilisateur correspondant au schéma que nous voulons atteindre.
CONCEPTS (suite)
Ainsi, on parlera de "SESSION" où un utilisateur sera actif.
En se connectant avec un nom d'utilisateur et son mot de passe, on ouvre une session en utilisant le schéma de cet utilisateur.
Exemple:
L'utilisateur Jos se connecte et crée la table Clients.
L'utilisateur Jos se connecte et crée la table Clients.
L'utilisateur Fred se connecte ensuite et crée aussi une table Clients.
Si Jos effectue un SELECT sur la table Clients, se sera le contenu de sa table qui sera affiché.
CONCEPTS (suite)
Cependant si Jos désire lister le contenu de la table Clients de Fred (en supposant qu'il a les permissions), il aura alors deux façons de le faire :
• SELECT * FROM Fred.Clients;
Dans ce premier cas, Jos demeure l'utilisateur actif de la session mais peux accéder d'une façon temporaire à la table Clients de l'utilisateur Fred.
table Clients de l'utilisateur Fred.
• ALTER SESSION SET CURRENT_SCHEMA = "Fred";
SELECT * FROM Clients;
Dans ce cas, Jos décide d'utiliser le schéma de Fred comme schéma par défaut de la session (en s'éclipsant lui-même) et dès lors, toutes requêtes qu'il fera seront appliquées aux objets du schéma de Fred.
CONCEPTS (ESPACES DE TRAVAIL)
Une banque de données ORACLE est composée à l'origine de trois espaces logiques de travail appelés : SYSTEM, SYSAUX et TEMP.
Ces espaces de travail sont logiques en ce sens qu'ils
correspondent à des divisions de la mémoire pendant l'opération d'oracle. Ces espaces (et d'autres) sont le lieu d'existence des schémas des utilisateurs.
schémas des utilisateurs.
Afin de sauver les objets des schémas qui y seront définis, des datafiles ou fichiers physiques du système hôte d'exploitation seront associés à ces espaces-tables.
Oracle s'occupe de la concordance et du transfert des
informations de façon bidirectionnelle entre ces espaces logiques et ces espaces physiques.
ESPACE DE TRAVAIL
Comme Oracle associe les schémas aux utilisateurs, il faudra donc associer les utilisateurs aux espaces de travail.
Avant de créer un utilisateur, il faut donc s'assurer qu'un espace- tables existe afin de l'assigner à cet espace.
Oracle fournis des espaces de travail mais il est préférable de créer Oracle fournis des espaces de travail mais il est préférable de créer ses propres espaces de travail afin de bien gérer notre banque, sa performance et sa sécurité.
La commande CREATE TABLESPACE servira à créer un espace de travail.
ESPACE DE TRAVAIL
La commande CREATE TABLESPACE est décrite par le diagramme ci-dessous.
• La clause BIGFILE forcera Oracle à utiliser un seul fichier datafile de 128 To (blocs de 32k) ou 32 To (blocs de 8k).
• La clause SMALLFILE forcera Oracle à utiliser 1022 datafiles de 4 Millions d'octets chacun.
• Cette clause est optionnelle et seulement utilisée pour Cette clause est optionnelle et seulement utilisée pour outrepasser la valeur par défaut de l'installation d'Oracle.
Suit la définition d'espace permanent, temporaire et/ou "undo".
ESPACE DE TRAVAIL PERMANENT Suit ensuite le mot clé TABLESPACE
et le nom de l'espace à créer.
Optionnellement, une déclaration
DATAFILE peux suivre pour fixer les métriques de ces datafiles.
S'en suit une série de paramètres qui peuvent êtres configurés au choix du créateur.
ESPACE DE TRAVAIL TEMPORAIRE
Suit ensuite les mots clé TEMPORARY TABLESPACE et le nom de l'espace à créer.
Optionnellement, une déclaration TEMPFILE peux suivre pour fixer les métriques de ce fichier à usage temporaire.
S'en suit deux paramètres configurables optionnellement : S'en suit deux paramètres configurables optionnellement :
• les clauses groupes de la table
• la clause de gestion de l'étendue de l'espace utilisé
ESPACE DE TRAVAIL UNDO
Suit ensuite les mots clé UNDO TABLESPACE et le nom de l'espace à créer.
Optionnellement, une déclaration DATAFILE peux suivre pour fixer les métriques de ces datafiles.
S'en suit deux paramètres configurables optionnellement : S'en suit deux paramètres configurables optionnellement :
• la clause de gestion de l'étendue de l'espace utilisé
• les clauses de conservation de l'espace.
ESPACE DE TRAVAIL
Il existe donc deux principaux types d'espace-table :
• L'espace permanent
Dans cet espace, les objets de schéma, une fois créés sont sauvés dans des "fichiers-data" (i.e. Datafiles) et ont donc une existence permanente d'une connexion à une autre
• L'espace temporaireL'espace temporaire
Dans cet espace, tout objet créé s'effacera à la
déconnexion et n'existera pas lors de la prochaine connexion.
Un tel espace peux être enligne/hors-ligne et/ou en lecture seule.
Des "datafiles" et des "tempfiles" peuvent y être ajoutées.
EXEMPLE
Créons d'abord les espaces où nous voulons opérer…
CREATE TABLESPACE monEspace LOGGING
DATAFILE 'C:/Users/serveur/Documents/monEspace.dbf' SIZE 32m
AUTOEXTEND on
NEXT 32m MAXSIZE 2048m NEXT 32m MAXSIZE 2048m
EXTENT MANAGEMENT LOCAL;
CREATE TEMPORARY TABLESPACE tmpEspace
TEMPFILE 'C:/Users/serveur/Documents/tmpEspace.dbf' SIZE 32m
AUTOEXTEND on
NEXT 32m MAXSIZE 2048m
EXTENT MANAGEMENT LOCAL;
EXEMPLE Créons maintenant deux utilisateurs … CREATE USER Jos
IDENTIFIED BY Secret
DEFAULT TABLESPACE monEspace TEMPORARY TABLESPACE temp_mtr;
CREATE USER Fred
IDENTIFIED BY Secret
DEFAULT TABLESPACE monEspace TEMPORARY TABLESPACE temp_mtr;
EXEMPLE
Nous pourrions aussi gérer l'espace alloué pour les "undo" (i.e.
les transactions avortées) …
CREATE UNDO TABLESPACE oops
DATAFILE 'C:/Users/serveur/Documents/undo.dbf' SIZE 100M;
EXERCICE
• Connectez-vous en DBA (i.e. Compte System)
• Créez trois espaces tables (permanent/temporaire/undo)
• Créez deux utilisateurs utilisant ces mêmes espaces
• Connectez-vous en utilisant votre premier utilisateur
• Créez une petite table quelconque
• Placez-y des données (Quelques lignes)Placez-y des données (Quelques lignes)
• Sans fermer votre connexion, ouvrez une seconde connexion en utilisant votre second utilisateur
• Tentez de lister la table créée par le premier utilisateur Y êtes vous arrivé ?
Comment vous y êtes vous pris ?