Démarrage et arrêt d'une base Oracle
Démarrage et arrêt d'une base Oracle
Pour dmarrer ou arrter une base vous devez tre connects SYSDBA ou SYSOPER. SYSDBA = tout SYSOPER = permet arrt dmarrage et de plus des restrictions dans dautres domaines. Quand une base est installe, seul le schma SYS peut se connecter la base avec lautorisation SYSDBA. Vous pouvez granter SYSOPER. Dmarrer une base de donnes 10g Quand vous dmarrez une base de base de donnes les structures mmoires et les process sont initialiss et dmarrs. Deux modes de dmarrages sont possibles : NOMOUNT, MOUNT et OPEN STARTUP NOMOUNT - Permet le dmarrage de linstance sans monter la base de donnes. Dans ce mode le fichier de paramtrage est lu, les process sont en arrire plan, les structures mmoires sont initialises, mais ils ne sont pas attachs et ne communiquent pas. Dans ce cas la base de donnes ne peut pas tre utilise. Si la base est monte en NOMOUNT certaines tches peuvent tre effectues. Accder aux fichiers contrle file, problme de dmarrage. STARTUP MOUNT - Dans ce mode, les interactions dans la base de donnes ont lieu. A ce point Oracle obtient des informations sur les fichiers de contrle et nous pouvons maintenir les fichiers. Nous pouvons physiquement modifier lemplacement des fichiers. STARTUP OPEN - Cest le mode de dmarrage par dfaut. STARTUP FORCE - Vous pouvez utilisez cette option si vous avez des difficults pour dmarrer une base de donnes. Cette option peut tre utilise quand le dmarrage dune base avec loption classique ne marche pas. Cette option effectue une shutdown abort et un restart de la base. STARTUP RESTRICT - Loption RESTRICT dmarre la base de donnes et la place en mode ouvert, mais cela donne accs seulement aux utilisateurs qui ont les privilges RESTRICTED SESSION. Si vous souhaitez ouvrir une base, effectuer des modifications tel que tuning et que personne ne se connecte, alors il faudra louvrir dans ce mode. Cela permetta aussi deffectuer des imports et exports sans que personne ne puisse se connecter sur la base. Aprs avoir effectus tous les travaux vous pouvez annuler la restriction de session avec la commande suivante et ainsi les utilisateurs pourront se connecter : ALTER SYSTEM DISABLE RESTRICTED SESSION ; - Dmarrer Oracle en utilisant EM Database Control - Dmarrer Oracle en utilisant SQL Plus Vous pouvez dmarrer une base de donnes en utilisant EM database control (utilitaire). Tableau rcapitulatif Commandes STARTUP NOMOUNT pfile=/u10/oracle/[Link] STARTUP MOUNT STARTUP OPEN Description Dmarre oracle en NOMOUNT utilisant fichier [Link] Dmarre oracle en MOUNT utilisant le fichier par dfaut Dmarre oracle en OPEN utilisant par dfaut le fichier pfile ou spfile
Arrter une base de donnes 10g Nous avons vu prcdemment les commandes pour ouvrir une base de donnes. Ci-dessous nous allons voir les commandes pour arrter une base de donnes. SHUTDOWN NORMAL - Le shutdown Normal est larrt par dfaut. Aucune connexion ne sera possible. Les connexions en cours doivent tre coupes pour un arrt de tous les process. Oracle attend que toutes les connexions soient arrtes. SHUTDOWN TRANSACTIONAL - Cest un arrt plus agressif. Aucune connexion nest possible. Aucune nouvelle transaction nest possible. Ds quune transaction est termine, la connexion est interrompue. SHUTDOWN IMMEDIATE - Encore un arrt plus agressif. Aucune connexion nest possible. Toutes les transactions non commites sont RollBakes. Un utilisateur en milieu de transaction a perdu ses donnes. Oracle nattend plus de connexion, toutes les transactions sont rollbackes. SHUTDOWN ABORT Arrt le plus agressif. Aucune connexion possible. Toutes les commandes SQL sont arrtes. Toutes les commandes sont rollbackes. Oracle dconnecte toutes les connexions. - Arrt de la base de donnes en utilisant EM Database Control - Arrt de la base de donnes en utilisant SQL Plus. Nous pouvons arrter la base de donnes en utilisant EM Database Control. Monitorer les fichiers Alert Log de la base de donnes Les fichiers alert log rfrencent et contiennent certaines activits et certaines erreurs de la base de donnes. Ces fichiers contiennent des informations qui peuvent nous aider sur le diagnostic dune base. Le paramtre qui contient le chemin ou se trouve les fichiers dalerte est : BACKGROUND_DUMP_DEST = /u10/app/oracle/admin/PROD/bdump Les fichiers sont ajouts continuellement, il est donc intressant de les purger rgulirement.
Trois types de composants sont distinguer dans une base de donnes Oracle : - la structure mmoire - les processus dtachs - les fichiers Une instance Oracle est lensemble des structures en mmoire : SGA et processus dtachs. Une base de donnes Oracle est constitue par lensemble des fichiers de donnes. La structure mmoire est alloue chaque fois que le serveur Oracle est dmarr. Cest un ensemble de structures contenant des donnes et des informations de contrle. Elle permet de conserver toutes les informations de faon ce quelles puissent tre partages par tous les utilisateurs. SGA : cest un ensemble de buffers contenant la fois les donnes des utilisateurs et les donnes systme (dictionnaire Oracle).
Elle est essentiellement compose de trois types de buffers : - la zone de partage des ordres SQL (Shared Pool), - les buffers DATABASE, - un buffer REDO LOG. PGA : cest une zone mmoire non partage contenant des informations propres chaque utilisateur. Elle est alloue par le noyau Oracle quand un utilisateur se connecte la base. La PGA contient : - une zone pour conserver lenvironnement de la session, - une zone de travail propre lutilisateur. Reprsentation de la structure mmoire qui est constitue de deux zones : Les zones des requtes SQL partages (Shared SQL Areas). Ces zones contiennent chacune linformation pour excuter un seul ordre SQL. Les utilisateurs excutant les mmes requtes SQL partagent ces zones : Le cache du dictionnaire de donnes (Data Dictonary Cache). Le dictionnaire de donnes enregistre toute la structure de la base de donnes :(La dfinition des tables, vues, index, Les utilisateurs et leurs privilges Trois types de processus : Les processus Oracle les processus dtachs les processus serveurs les processus utilisateurs Ces processus cooprent pour grer une instance Oracle. On trouve : - DBWR crit les donnes des buffers du cache dans les fichiers, - LGWR crit les donnes du buffer Redo log dans les fichiers Redo log, - PMON nettoie les connexions termines de faon anormale (libre les verrous, rollback des transactions non valides ), - SMON ralise la restauration automatique dinstance, rcupre lespace des segments temporaires non utiliss ). Un processus serveur est cr chaque tablissement dune connexion. Il utilise la mmoire partage dans la SGA et gre la communication avec lutilisateur. Un processus utilisateur est dmarr lorsquun utilisateur excute un programme applicatif qui reprsente le client : il transmet les ordres SQL au processus serveur et en reoit les rsultats. Le processus listener Le listener est un processus qui coute les demandes de connexion la base Oracle. Aprs dtection dune demande de connexion, le listener active un processus SERVEUR et le met en communication avec le processus UTILISATEUR demandeur de la connexion la connexion est alors tablie entre le client et le serveur. Le listener utilise un fichier de paramtres lui indiquant les bases
de donnes connecter ainsi que les ports dcoute, par dfaut les ports dcoute pour le listener Oracle sont : 1521, 1525, 1526.
Composants SGA
Composants SGA
Liste des composants optionnels Description Un cache qui utilise les objets Java les plus rcents et les codes des applications JVM Un cache utile pour les grosses oprations tel que Recovery Manager (RMAN) backup et la restauration et le partage des composants serveurs. Un cache de donnes associ avec la queue des messages utiliss par Oracle.
Streams Pool
- Oracle utilise un algorithme nomm LRU (Least recently used) pour manager les donnes dans Shared Pool et le Database Buffer Cache. - Oracle garde les requtes SQL les plus frquemment utilises pour amliorer les accs disques et mmoires. La taille des composants peut tre manag de deux faons : manuellement ou automatiquement : Si nous souhaitons manager les composants manuellement nous devons spcifier les valeurs pour chaque composant laugmenter ou le diminuer en fonction des applications. Si les valeurs des paramtres sont manages automatiquement nous devons spcifier une valeur minimum et une valeur maximum autorise pour dfinir la taille de la SGA. Cependant pour les tailles des valeurs qui sont manages manuellement ou automatiquement, Oracle accomplit une allocation dynamique de lespace de la SGA en divisant lespace SGA en granules. Les tailles des granules sont alloues et desalloues automatiquement du Buffer cache, Shared Pool, Large Pool Java Pool en accord avec les demandes faites par les connexions des utilisateurs. Dpendamment des OS et de la taille de la SGA, les granules peuvent avoir une taille de 4MB, 8MB ou 16MB. Il y a deux types de fichiers de paramtrage :
SPFILES (Server Parameter Files) Nous pouvons utiliser les deux types pour dfinir la taille des paramtres de la SGA, mais il y a des diffrences entre ces deux types de fichiers : Comparaison du PFILE et du SPFILE : SPFILE
PFILE
Fichier texte pouvant tre utilis via un diteur Quand nous faisons des changements dans le fichier, linstance doit tre arrte puis redmarre pour prendre en compte les nouvelles valeurs Son nom est init<instance>[Link] Peut tre cr depuis le SPFILE en utilisant la commande : Create pfile from spfile
Fichier binaire qui ne peut pas tre dit directement Certains changements effectus sur le fichier sont pris en compte automatiquement, mme si la base de donnes ouverte est en marche.
Son nom est spfile<instance>[Link] Peut tre cr depuis le PFILE utilisant la commande : Create spfile from pfile
Pour utiliser le management automatique des paramtres de la SGA, il faut utiliser le fichier SPFILE. Les paramtres basiques dinitialisation : Nom du Paramtre Description
CLUSTER_DATABASE
Nom de linstance qui fait parti dun environnement cluster Spcifie le niveau de la release active au niveau du serveur Dsigne la localisation des fichiers Spcifie la taille du bock par dfaut Spcifie le rpertoire ou les fichiers de la base de donnes qui doivent tre crs (si nous utilisons Oracle Management Files). Spcifie le rpertoire ou les fichiers Rdo Log qui doivent tre crs (si nous utilisons Oracle Management Files). Spcifie le nom logique de la base de donnes sur le rseau. Spcifie le nom de la base de donnes qui est monte par linstance. Spcifie le rpertoire ou les fichiers pour le rtablissement qui doivent tre cris (si nous utilisons Flash Recovery). Spcifie la taille de lespace disque utilisable pour lutilisation du Flash Recovery Spcifie un nom unique global pour la base de
COMPATIBLE
DB_CREAT_ONLINE_LOG_DEST_n
DB_DOMAIN
DB_NAME
DB_RECOVERY_FILE_DEST
DB_RECOVERY_FILE_DEST_SIZE
DB_UNIQUE_NAME
donnes dans lentreprise INSTANCE_NUMBER Identifie linstance dans un environnement RAC (Real Application Clusters) Spcifie le nombre de process en arrire plan pour lancer des jobs laide de DBMS_JOBS Spcifie au max 9 rpertoires ou sont archivs les fichiers Rdo Logs pour tre cris LOG_ARCHIVE_DEST_STATE_n Indique comment les rpertoires spcifiques peuvent tre utiliss pour les logs archivs. Spcifie par dfaut la langue de la base de donnes Spcifie par dfaut la rgion ou le territoire de la base de donnes. Dfini le nombre maximum de curseur possible louverture pour une session. Dfinie la valeur maximum de la mmoire que tous les process PGA ont le droit dutiliser. Spcifie le nombre maximum de process system qui peuvent tre connect la base de donnes. Spcifie le nom rseau qui pointe sur ladresse ou la liste dadresse de Oracle Listener distance. Dtermine si linstance utilise un fichier mot de passe et de quel type. Spcifie seulement si le management utilis est automatique ou pas. Dtermine le nombre maximum de sessions qui peuvent tre connect la base de donnes. Dfinit la taille maximum de la SGA dans laquelle lespace est automatiquement alloue pour chaque composant de la base de donnes (quand ils sont manags automatiquement). Spcifie le nombre de process Shared Servers pour dmarrer linstance. Dtermine si loptimiser doit considrer, dmarrer les translations, quand les requtes sont lances. Dtermine si UNDO est automatique ou manuel. Spcifie quel tablespace enregistre le segment UNDO si loption automatique est utilise. V$SGA et
JOB_QUEUE_PROCESSES LOG_ARCHIVE_DEST_n
NLS_LANGUAGE
NLS_TERRITORY
OPEN_CURSORS
PGA_AGGREGATE_TARGET
PROCESSES
REMOTE_LISTENER
REMOTE_LOGIN_PASSWORDFILE
ROLLBACK_SEGMENTS
SESSIONS
SGA_TARGET
SHARED_SERVERS
STAR_TRANSFORMATION_ENABLED
UNDO_MANAGEMENT UNDO_TABLESPACE
Nous pouvons slectionner les informations dans les vues V$SGA_DYNAMIC_COMPONENTS pour percevoir la taille des lments de la SGA.
La vue V$SGA_DYNAMIC_COMPONENTS affiche lensemble de tous les lments compris dans la SGA.
paramtres
des
fichiers
Deux fichiers sont ncessaires pour cette tape soit SPFILE soit PFILE. Oracle recherche : en premier un fichier nomm spfile$ORACLE_SID.ora en second un fichier nomm init$ORACLE_SID.ora
Nous pouvons utilisez EM database tools pour modifier les paramtres des bases de donnes. Par dfaut les fichiers sont mis en place dans le rpertoire sous UNIX : $ORACLE_HOME/dbs sous windows : $ORACLE_HOME%/database Les paramtres : deux types, les courants et les dynamiques Les paramtres courants modifis sont pris en compte aprs un arrt et un redmarrage de la base.
Les paramtres dynamiques la modification d'un paramtre est pris en compte en temps rel dans la base de donnes (uniquement avec les SPFILE)
Sructure de la base de donnes Oracle
Le DB_BLOCK_SIZE est un attribut du [Link] taille dun tablespace de 8 KB 32 [Link] pouvons mettre en OffLine et OnLine un TableSpace. Exemple Create tablespace hr_data datafile d:\oracle\oradata\ora10\hr_data01.dbf size 2G ; Create tablespace hr_index datafile d:\oracle\oradata\ora10\hr_index01.dbf size 2G ;
Voici la liste des TableSpaces pour lensemble d'un projet. Le TableSpace System nomm SYSTEM , sauvegarde lensemble du dictionnaire des objets de la base.
Le dcoupage est le suivant : Un groupe pour le tronc commun Un groupe pour le projet xxxxx Un groupe pour le projet yyyyy Un groupe pour le projet zzzz Dans chaque groupe nous sparons les extents en trois : TBS_DATA_MAG_P P (petit), TBS_DATA_MAG_M M (Moyen), TBS_DATA_MAG_G G (Grand) TBS_DATA_CA_P P (petit), TBS_DATA_CA_M M (Moyen), TBS_DATA_CA_G G (Grand TBS_DATA_ADV_P TBS_DATA_ADV_M TBS_DATA_ADV_G TableSpace des Index Le dcoupage est le suivant : Un groupe pour le tronc commun Un groupe pour le projet xxxxx Un groupe pour le projet yyyyy Un groupe pour le projet zzzz Dans chaque groupe nous sparons les extents en trois : TBS_INDX_MAG_P TBS_INDX_COMMUN_P TBS_INDX_COMMUN_M TBS_INDX_COMMUN_G TBS_DATA_COMMUN_P TBS_DATA_COMMUN_M TBS_DATA_COMMUN_G
TableSpace RollBack ( jusqu' la version 8.1.7) TableSpace RollBack ( partir de la 9i) TableSpace Temporaire
Lorsque la cration des TableSpaces sera tablie, nous dfinirons des valeurs pour la Clause Storage de chaque TableSpace. Ces valeurs seront utilises par dfaut pour les objets (Tables et Index) ds leur cration. Il faut donc rfrencer lensemble des tables des diffrents projets et les affecter un et un seul TableSpace. Exemple Une table va dans TBS_DATA_CA_M, son Index dans TBS_INDX_CA_M Lister des tablespaces de la base avec lordre SQL : SQL> Select TABLESPACE_NAME From dba_tablespace Manager les TableSpaces
Un petit rappel - Revenons au principe de base Le DB_BLOCK_SIZE est un attribut du TableSpace. La taille dun TableSpace est de 8 KB 32 KB. Nous pouvons mettre un TableSpace en OffLine et OnLine. Exemple de script de cration d'une tableSpace : Create tableSpace hr_data datafile d:\oracle\oradata\ora10\hr_data01.dbf size 2G ;
Dfinition des segments, Extents, Block Le tableSpace SYSTEM est utilis pour les donnes du dictionnaire et ne doit pas tre utilis pour enregistrer dautres objets. Le tableSpace SYSAUX est un nouveau tableSpace en Oracle 10g et enregistre les objets associs aux schmas (spactial option, XMLDB). SYSTEM et SYSAUX sont crs dans toutes les bases. SYSAUX est cr quand vous effectu un update vers Oracle 10g. Vous ne devez pas utiliser ces tableSpaces par dfaut. Crer les TableSpaces Commande: CREATE DATABASE or CREATE TABLESPACE Les proprits des TBS sont : bigfile smallfile management local management par dictionnaire temporaire UNDO
Crer un gros TableSpace Dans Oracle 10g nous pouvons crer un grand TBS (bigfile tablespace) dans un seul fichier, maximum 2exp32 block de donnes. Exemple : un grand TBS qui utilise 8KB en DB_BLOCK_SIZE peut faire 32TB en taille. Commande : CREATE BIGFILE /ORADATA/PROD/[Link] size 25G ; TABLESPACE hist2004apr DATAFILE
Un Small TBS (petit TBS) est lancien nom pour les anciens TBS. Chaque TBS peut faire 2exp22 block de donnes. Exemple : pour 8KB un TBS fait 32GB Commande : CREATE TABLESPACE /ORADATA/PROD/[Link] size 25G ; Data2004apr DATAFILE
Travailler avec Oracle Management File Travailler avec OMF (Oracle Management File TableSpace) permet dadministrer les TBS et fichiers. Pour utiliser OMF, le rpertoire de la base de donnes est : DB_CREATE_FILE_DEST. De fait,
ALTER SYSTEM Set DB_CREATE_FILE_DEST=D:\oracle\oradata\ora10\OMF SCOPE=BOTH ; Quand on cre le TBS : CREATE TABLESPACE hr_data ; Oracle cre un TBS utilisant un nom unique tel que 01_MF_HR_DATA_ODW3_.DBF. Ce fichier est en autoextent et fait 100M. Par dfaut pour crer un Bigfile : CREATE BIGFILE TABLESPACE hr_data ;
Choisir le management des extents Local Management ou Dictionnary Management : Dictionnaire implique la gestion par le dictionnaire Oracle (TBS system) Local Management est loption par dfaut. Les extents peuvent tre allous UNIFORM ou AUTOALLOCATE. UNIFORM - Cette option laisse la base allouer les extents dans la base de donnes avec une taille que vous pouvez spcifier (par dfaut la valeur est 1 MB). Cest la valeur par dfaut pour les TBS Temporaires qui ne peut pas tre spcifi dans TBS UNDO. CREATE TABLESPACE HIST2004 DATAFILE HIST2004_01.DBF SIZE 25G EXTENT MANAGEMENT LOCAL UNIFORM 100M;
AUTOALLOCATE - Cette proprit laisse la base grer les extents. Exemple : Sous Windows, linux avec DB_BLOCK_SIZE=8KB, chaque segment dmarre avec 64KB, le premier est de 16 extents et peut augmenter 1MB pour les 63 suivants. La taille augmente 8MB pour les 120 suivants, et 64MB ainsi de suite. Cest un algorithme qui gre cette action. CREATE TABLESPACE HIST2004 DATAFILE HIST2004_01.DBF SIZE 25G EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
Nous pouvons convertir un TBS gr par le dictionnaire, vers un TBS gr localement et vice versa, en utilisant le PL/SQL package. DBMs_SPACE_ADMIN Le TBS system ne peut pas tre gr par la proprit autoallocate. Choisir le management des espaces des segments Pour les TBS grs localement nous pouvons utiliser le management segement automatique ou manuel. Manuel management utilise la compatibilit ascendante et utilise les listes de block avec les paramtres PCT_FREE et PCT_USED pour contrler linsertion des blocks. Aprs chaque ajout et modification la base compare lespace libre avec les segement PCT_FREE. (il peut y avoir ajout dun nouveau segement si pas assez de place).
Commande : CREATE TABLESPACE HIST2004 DATAFILE HIST2004_01.DBF SIZE 25G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL Automatic management, les bitmaps grent les segments libres la place de liste. PCT_FREE et PCT_USED sont ignors. Cette option rduit les cots de management des tablespaces amliore les performances. Cette option nest pas utilisable avec les TBS SYSTEM et temporaires. Commande : CREATE TABLESPACE HIST2004 DATAFILE HIST2004_01.DBF SIZE 25G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
Quand un utilisateur essaie de se connecter une base avec son mot de passe, celle-ci vrifie le nom et le mot de passe. Un nom/mot de passe est la faon la plus commune des authentifications pour tre rfrenc dans une base. La commande : CREATE USER TOTO IDENTIFIED BY TITI ; Exemple : Lutilisateur est TOTO, son mot de passe est TITI.
Externaliser lauthentification des utilisateurs Quand un utilisateur identifi en externe, essaie de se connecter la base, celle-ci vrifie le nom dans la base et a confiance en lOS qui a vrifi lauthentification. Un utilisateur authentifi en externe ne possde pas de mot de passe dans la bas. Les comptes sont souvent rfrencs par OPS$, utiliss comme prfixe. Vous pouvez dans la version Oracle10g configurer dans le fichier SPFILE le paramtre :
Authentification globale des utilisateurs Quand un utilisateur identifi globalement attend une connexion une base, la base vrifie que le nom est valide et passe linformation de la connexion une option avance de scurit pour authentification. Loption avance de scurit supporte plusieurs mcanismes dauthentification, incluant biometrics, certificats X.509, Kerberos et Radius. Les comptes des utilisateurs authentifis globalement nenregistrent pas ou ne valident pas le mot de passe dans la base comme un compte de mot de passe authentifi. Ces comptes relaient une authentification produite par un service, supports travers loption de scurit avance. La syntaxe pour crer un compte : CREATE USER spy_master IDENTIFIED GLOBALLY AS CN=spymaster, OU=tier2, O=security, C=US;
Assigner un Tablespace par dfaut Nous devons assigner lutilisateur un tablespace par dfaut, la syntaxe est : CREATE USER TOTO IDENTIFIED BY TITI DEFAULT TABLESPACE USER; ALTER USER TOTO DEFAULT TABLESPACE USER; Pour changer le tablespace par dfaut dans une base de donnes la commande : ALTER DATABASE DEFAUT TABLESPACE DONNEES ;
Assigner un Tablespace temporaire Pour permettre un utilisateur de lancer des requtes, il est ncessaire que lutilisateur possde un tablespace temporaire : (ORDER BY, GROUP BY, SELECT DISTINCT, MERGE JOIN, CREATE INDEX)
La commande : CREATE USER TOTO IDENTIFIED BY TITI TEMPORARY TABLESPACE TBS_TEMP; ALTER USER TOTO TEMPORARY TABLESPACE TBS_TEMP;
Assigner un Profile un utilisateur Tous les utilisateurs sont assigns un profile : le profil, Un profile sert : - Limiter lutilisation de certaines ressources - Dfinir des rgles de management Le profile par dfaut est nomm DEFAULT. Exemple avec le profile resource_profile , la commande : CREATE USER TOTO IDENTIFIED BY TITI DEFAULT TABLESPACE TBS_DONNTEMPORARY TABLESPACE TBS_TEMPPROFILE resource_profile; ALTER USER TITI PROFILE resource_profile;
Supprimer un utilisateur de la base de donnes La commande : DROP USER TOTO Le mot cl "CASCADE" indique que tous les objets lis lutilisateur TOTO seront supprims.
1. Objets Privilges : permissions sur les objets du schma tel que les tables, vues, squences,
procdures et packages. Pour utiliser un objet dun autre schma, vous devez avoir des droits sur cet objet
3. Rles Privilges : Objets et systmes privilges quun utilisateur obtient travers un rle. Un
rle est un outil pour ladministration des groupes de privilges. INDEX privilge sapplique sur les tables. SELECT privilge sapplique sur les tables, les vues et les squences. Les objets suivants peuvent avoir les droits individuellement, groups par listes, ou par un mot cl ALL qui implicitement donne les droits de tous les objets privilges sur le schma. Droits des Privilges Objets
INDEX privilges sapplique sur les tables, SELECT privilge sapplique sur les tables, vues et squences. Les objets suivants peuvent avoir les droits individuellement, group par liste, ou par un mot cl ALL qui implicitement donne les droits de tous les objets privilges sur le schma.
Privilges objets des tables - les privilges sont : SELECT - INSERT - UPDATE - DELETE - ALTER - DEBUG - INDEX - REFERENCES
Privilges objets des vues - les privilges sont : SELECT - INSERT - UPDATE - DELETE - DEBUG - REFERENCES
Privilges objets des fonctions, procdures, packages et java - les privilges sont : DEBUG - EXECUTE
Cas gnraux - Vous utilisez ltat GRANT pour donner les droits objets un autre utilisateur ou rle en ajoutant les mots cls WITH GRANT OPTION . GRANT SELECT ON CUSTOMER TO sales_manager ; Lutilisateur sale_manager possde les droits de lecture sur CUSTOMER. il peut donner les droits de lecture un autre utilisateur sur cette mme table. GRANT SELECT ON CUSTOMER TO sales_manager WITH GRANT OPTION;
Exemple - Utilisateur Mary effectue la commande suivante : GRANT SELECT ON CLIENT TO ZACHARY WITH GRANT OPTION; Utilisateur Zachary effectue la commande suivante : GRANT SELECT ON [Link] TO REX; Conclusion : MARY, ZACHARY et REX en le droit dutiliser SELECT sur CLIENT. Si nous supprimons ZACHARY alors REX na plus le droit SELECT sur CLIENT. Exemple - Utilisateur Mary effectue la commande suivante : GRANT SELECT ON CLIENT TO ZACHARY WITH GRANT OPTION;GRANT SELECT ON CLIENT TO CHARLIE WITH GRANT OPTION; Utilisateur Zachary effectue la commande suivante : GRANT SELECT ON [Link] TO REX; Utilisateur Charlie effectue la commande suivante : GRANT SELECT ON [Link] TO REX; Conclusion : MARY, ZACHARY, CHARLIE et REX en le droit dutiliser SELECT sur CLIENT. Si nous supprimons ZACHARY alors REX a toujours le droit SELECT sur CLIENT grce CHARLIE. Droits des privilges Systmes En gnral les privilges systmes permettent de donner le droit dexcuter les DDL (Data Dfinition Langage). Tel que CREATE, ALTER ou DROP ou les DML (Data Manipulation Langage). Dans Oracle 10g, il y a 170 privilges systmes, tous sont lists dans la vue SYSTEM_PRIVILEGE_MAP Database - les privilges sont :
Debugging - les privilges sont : DEBUG CONNECTION SESSION - DEBUG ANY PROCEDURE
Job scheduler - les privilges sont : CREATE JOB - CREATE ANY JOB - EXECUTE ANY PROGRAMM - EXECUTE ANY CLASS - MANAGE SCHEDULER
Procdures - les privilges sont : CREATE PROCEDURE - CREATE ANY PROCEDURE - ALTER ANY PROCEDURE - DROP ANY PROCEDURE - EXECUTE ANY PROCEDURE
Profiles - les privilges sont : CREATE PROFILE - ALTER PROFILE - DROP PROFILE
CREATE ROLE - ALTER ANY ROLE - DROP ANY ROLE - GRANT ANY ROLE
Squences - les privilges sont : CREATE SEQUENCE - CREATE ANY SEQUENCE - DROP ANY SEQUENCE - SELECT ANY SEQUENCE
Sessions - les privilges sont : CREATE SESSION - ALTER SESSION - ALTER RESOURCE COST - RESTRICT SESSION
Synonymes - les privilges sont : CREATE SYNONYM CREATE ANY SYNONYM - CREATE PUBLIC SYNONYM - DROP ANY SYNONYM - DROP PUBLIC SYNONYM
CREATE TABLE - CREATE ANY TABLE - ALTER ANT TABLE - DROP ANY TABLE - COMMENT ANY TABLE - SELECT ANY TABLE INSERT ANY TABLE - UPDATE ANY TABLE - DELETE ANY TABLE - LOCK ANY TABLE - FLASHBACK ANY BACK
CREATE TABLESPACE - ALTER TABLESPACE - DROP TABLESPACE - MANAGE TABLESPACE - UNLIMITED TABLESPACE
Triggers - les privilges sont : CREATE TRIGGER - CREATE ANY TRIGGER - ALTER ANY TRIGGER - DROP ANY TRIGGER - ADMINISTER DATABASE TRIGGER
Vues - les privilges sont : CREATE VIEW - CREATE ANY VIEW - DROP ANY VIEW - COMMENT ANY TABLE - FLASHBACK ANY TABLE
Autres - les privilges sont : ANALYSE ANY - GRANT ANY OBJCT PRIVILEGE - GRANT ANY PRIVILEGE - GRANT ANY ROLE - SELECT ANY DICTIONNARY SYSDBA - SYSOPER
Exemple : Grant create user, alter user, drop user to app_dba ; Grant Flashback any table to oublic; Grant index any table to app_dba with grant option; Vous pouvez donnez les droits privilges systmes lutilisateur dont vous donner les droits en utilisant les mots cls suivants : WITH ADMIN OPTION . La gestion sur suppression dun utilisateur intermdiaire est lgrement diffrente. Si on donne un droit privilge systme un utilisateur avec loption WITH ADMIN OPTION lors de la suppression de lutilisateur ayant donn le droit, il ny a pas de suppression des privilges pour lutilisateur ayant reu ce droit.
ATTENTION - Utilisateur Mary effectue la commande suivante : GRANT SELECT ANY TABLE TO ZACHARY WITH ADMIN OPTION; Utilisateur Zachary effectue la commande suivante : GRANT SELECT ANY TABLE TO REX; Conclusion : MARY, ZACHARY et REX ont le droit systme SELECT ANY TABLE. Si nous supprimons ZACHARY et REX, il y a toujours le droit systme SELECT ANY TABLE. Manager les Rles et privilges Oracle
Cette notion confre le droit un groupe systme, objet, et un autre rle privilge.
Un rle regroupe des utilisateurs. Le rle peut tre protg par un mot de passe, si des utilisateurs ont un rle qui leur est affect, ils peuvent lutiliser dans la base de donnes. Crer et manager des rles La commande pour crer un rle: (rle app_dba) CREATE ROLE app_dba ;
Pour rendre actif un rle la commande : SET ROLE app_dba IDENTIFIED BY seekwrit ;
Droits au Rle privilges Comme pour les objets ou systme privilges, vous utilisez GRANT pour confrer les privilges rle sur un autre utilisateur ou rle. Avec loption WITH ADMIN OPTION nous pouvons donner les droits privilges un autre utilisateur ou un autre rle. Exemple : donner le rle OEM_charlie lutilisateur charlie GRANT OEM_charlie TO charlie ;activer_identifier les rles actifs_dsactiver_identifier_
Nous pouvons affecter un rle lutilisateur spcifique PUBLIC comme suit GRANT plustrace TO PUBLIC ; Pour donner le droit INDEX ANY TABLE privilge au rle appl_dba avec le permission de le donner quiconque avec le rle appl_dba pour donner le privilge dautres, la commande GRANT index any table TO appl_dba WITH ADMIN OPTION; - Activer les rles Vous pouvez activer ou dsactiver des rles pour des sessions. Utilisez ltat SET ROLE role_liste pour rendre actif un ou plusieurs rles. La liste peut inclure le mot ALL, qui indique que nous rendons actif tous les rles pour un [Link] pouvez, optionnellement, ajouter la liste de rle exclure de ALL une liste spcifiant ALL EXCEPT exclision_lit Si un rle possde un mot de passe associ, les mots cls IDENTIFIED BY password doivent tre immdiatement suivis par le nom du rle dans la liste_role. Par exemple : Rendre actif le rle HR_ADMIN identifi par un mot de passe, en plus le rle EMPLOYEE non protg : SET ROLE hr_admin IDENTIFIED BY myseekrit, employee;
Pour rendre utilisable tous les rles sauf HR_ADMIN la commande est : SET ROLE ALL EXCEPT hr_admin; Vous pouvez rendre actif plusieurs rles sans dpasser la valeur du paramtre
MAX_ENABLED_ROLES - Identifier les rles actifs Les rles qui sont actifs dans votre session sont lists dans la vue SESSION_ROLE La requte est SELECT * FROM SESSION_ROLE; Ces rles, inclues les rles qui vous sont autoriss, les rles qui ont t autoriss lutilisateur spcial PUBLIC et les rles que vont obtenez par dautres rles. Pour identifier les rles autoriss pour dautres utilisateurs ou lutilisateur spcial PUBLIC la requte est : SELECT granted_role FROM user_role_privsWHERE username IN (USER,PUBLIC);
Le rle du DBA, inclu le rle SCHEDULER_ADMIN, les rles qui ont t valids deux fois dans leur session et qui ont t autoriss directement par vous ou PUBLIC mais pas les rles dont vous hritez, la requte est : SELECT role FROM session_roles INTERSECTSELECT granted_role FROM user_role_privs WHERE username IN (USER,PUBLIC);
- Dsactiver les rles Les rles peuvent tre dsactivs dans la base de donnes par exception ou en masse pour votre session. Utilisez la commande suivante pour dsactiver tous les rles SET ROLE NONE Pour dsactiver des rles excepts certains rles la commande est SET ROLE ALL EXCEPT role_liste. Vous pouvez dsactiver des rles dont vous venez dhriter. - Les rles par dfaut Vous navez pas besoin dun mot de passe pour le rle par dfaut. Pour changer le rle par dfaut vous devez utiliser la commande suivante : ALTER USER DEFAULT ROLE role_list; La liste des rles role_list peut inclure les mots cl suivants ALL, NONE, EXCEPT
Le mot cl EXCEPT implique que le paramtre MAX_ENABLED_ROLES est bien paramtr (Sinon vous aurez une erreur en retour). Contrler l'usage des ressouces par utilisateur
Oracle 10g permet de grer les ressources que les utilisateurs consomment.
Assigner des quotas au TableSpaces Un utilisateur peut crer des objets dans un TableSpace, il peut avoir un quota pour ce TableSpace. Les valeurs extrmes du quota sont limits par lespace de disque consomm par un utilisateur. Par dfaut le quota est nant.
Exemple CREATE USER chip IDENTIFIED BY seekrt QUOTA 100M ON USERS; ou CREATE USER bart QUOTA UNLIMITED ON USERS;
CONNECT_TIME Limite les sessions tablies par un utilisateur ayant un profile qui sera exprim en [Link] une session excde un certain nombre de secondes (time out), le systme de la base de donnes gre automatiquement le Rollback de cette session, ne valide pas la transaction et termine la session avec une gestion d'erreur "connect_time". Le prochain appel de la base de donnes voquera une erreur
dexcption. Vous pouvez utilisez la valeur UNLIMITED pour dire la base de donnes quil ny a pas de limites de temps pour la session. Les commandes - pour un temps de CPU estim de 10 minutes : CREATE PROFILE agent LIMIT CONNECT_TIME 10 ;
CPU_PER_CALL Limite le temps CPU qui a t consomm pour chaque appel dans un simple appel de base dans une session tablit par un utilisateur ou un profile. La valeur spcifie est en "centime de secondes" et est applique pour un parse, une excution ou un appel. Quand la limite est dpasse la commande tombe et est Rollbacke automatiquement, puis une erreur est remonte (Raised erreur). Lutilisateur peut alors valider ou invalider des changements dans la transaction. Les commandes - pour un temps de 3000 millisecondes : CREATE PROFILE agent LIMIT CPU_PER_CALL 3000 ;
CPU_PER_SESSION Limite le temps CPU qui a t consomm pour une session tablit par un utilisateur ou un profile. La valeur spcifie est en millisecondes. Lutilisateur peut valider ou invalider des changements non valids dans la transaction avant de se dconnecter. Les commandes - pour un temps de 30000 millisecondes : CREATE PROFILE agent LIMIT CPU_PER_SESSION 30000;
IDLE_TIME Limite le temps entre deux appels de la base de donnes, ce nombre est spcifi en minutes. Si un utilisateur ayant ce profile excde cette configuration, le prochain tat sera inactif et lutilisateur devra valider ou invalider les changement avant de se dconnecter. Les commandes : - pour un temps de 10 minutes : CREATE PROFILE agent LIMIT IDLE_TIME 10;
LOCAL_READS_PER_CALL Calcule le nombre de travail quun appel individuel dune base effectue pour un nombre spcifique de lectures logiques. Les appels de la base de donnes peuvent tre des parses, excutions, ou des fetchs. Si la limite est dpasse, la base RollBacke, ltat retourne une erreur au programme appelant. Les lectures logiques sont calcules sur la somme des appels consistants + les appels courants. Les commandes : CREATE PROFILE agent LIMIT LOGICAL_READS_PER_CALL 2500 ; data_analyst LIMIT LOGICAL_READS_PER_CALL 1000000; ALTER PROFILE
LOGICAL_READS_PER_SESSION Limite le nombre de travail sur une base quune session dutilisateur peut consommer pour un nombre spcifi de lecture logique. Si la limite est atteinte, ltat courant tombe et une exception est remonte, et lutilisateur doit valider ou invalider la transaction avant de sortir de la session. Les lectures logiques sont calculs comme la somme des appels consistants+ les appels courants. Les commandes : CREATE PROFILE agent LIMIT LOGICAL_READ_PER_SESSION 250000; ALTER PROFILE data_analyst LIMIT LOGICAL_READ_PER_SESSION 35000000;
PRIVATE_SGA
Limite la taille de la SGA en octets quun utilisateur connect en mmoire partag, peut allou pour un espace persistant dans le PGA. Les commandes : CREATE PROFILE agent LIMIT PRIVATE_SGA 2500; ALTER PROFILE data_analyst LIMIT PRIVATE_SGA UNLIMITED;
SESSIONS_PER_USER Restreint un utilisateur avec ce profile pour un nombre de sessions dans la base. Les commandes : CREATE PROFILE agent LIMIT SESSIONS_PER_USER 2; ALTER PROFILE data_analyst LIMIT SESSIONS_PER_USER 6;
COMPOSITE_LIMIT Limite le nombre dunit de services qui peuvent tre consomms durant une connexion dutilisateur. Les units de services sont calcules en effectuant la somme de : CPU_PER_SESSION, LOGICAL_READS_PER_SESSION, CONNECT_TIME et PRIVATE_SGA.
Les poids sont tablis avec la commande ALTER RESOURCE COST et peuvent avoir une vue sur le dictionnaire RESOURCE_COST. Ce paramtre COMPOSITE_LIMIT nous permet de juger la consommation de ressource dun groupe dutilisateur dans un systme complexe ou une ressource est limite ; Les commandes : CREATE PROFILE admin_profil LIMIT COMPOSITE_LILIT data_analyst LIMIT COMPOSITE_LIMIT 100000; UNLIMITED;ALTER PROFILE
Pour forcer les limites des resources tablies avec les profiles, vous devez placer le paramtre dinitialisation RESOURCE_LIMIT = TRUE. La valeur par dfaut est FALSE. La commande : ALTER SYSTEM SET resource_limit = TRUE SCOPE BOTH;
Le principe du plus petit tat de privilge quun utilisateur doit avoir, lui donne juste les droits dont il a besoin.
Protger le dictionnaire des donnes : Sassurez que les utilisateurs ayant le privilge SELECT ANY TABLE ne puissent pas accder aux tables dont le dictionnaire des donnes est prt grce au paramtre 07_DICTIONARY_ACCESSIBILITY=FALSE. Ne pas Rvoquer ncessairement les privilges de PUBLIC : Par dfaut plusieurs packages et rles sont autoriss pour lutilisateur PUBLIC. Revoir ces privilges et rvoquer les privilges EXECUTE pour lutilisateur PUBLIC si cela nest pas ncessaire. Plusieurs de ces packages donnent le privilge : UTL_TCP : Permet dtablir des connexions rseau via TCP/IP, si votre organisation nen a pas besoin, rvoquer le droit sur ce package. UTL_SMTP : Permet denvoyer des mails. Si votre organisation nen a pas besoin, rvoquer le droit sur ce package. UTL_HTTP : Permet denvoyer ou de recevoir des donnes via le protocole http. Si votre organisation nen a pas besoin, rvoquer le droit sur ce package. UTL_FILE : Permet de lire et dcrire dans des fichiers sur le systme. Si votre organisation nen a pas besoin, rvoquer le droit sur ce package. DBMS_OBFUSCATION et DBMS_CRYPTO : Permet de crypter les informations, si la cl est perdue les donnes ne peuvent pas tre dcryptes. Si votre organisation nen a pas besoin, rvoquer le droit sur ce package. Les commandes sont les suivantes : REVOKE EXECUTE ON utl_tcp FROM PUBLIC; REVOKE EXECUTE ON utl_smtp FROM PUBLIC; REVOKE EXECUTE ON utl_http FROM PUBLIC; REVOKE EXECUTE ON utl_file FROM PUBLIC; REVOKE EXECUTE ON dbms_obfuscation FROM PUBLIC; REVOKE EXECUTE ON dbms_crypto FROM PUBLIC; La requte qui permet de voir dans le dictionnaire des donnes, quels sont les packages qui doivent tre locks et dont le privilge EXECUTE doit tre rvoquer de lutilisateur PUBLIC est :
SELECT table_name FROM dba_tab_privs p ,dba_objects o WHERE [Link] = [Link] AND p.table_name = o.objetc_name AND [Link] = SYS AND [Link] = EXECUTE AND [Link] = PUBLIC AND o.objetc_type = PACKAGE;
Limitez les utilisateurs qui ont des privilges administratifs, donner occasionnelle des privilges administratifs aux utilisateurs. SYSDBA : Cest le plus haut privilge. Tous les privilges de scurit. Il ny a pas de raison de donner ce privilge un utilisateur classique. DBA : Cela permet dassigner des privilges et de manipuler des donnes travers la base. Les ANY system privilges : SELECT ANY TABLE, GRANT ANY ROLE, DELETE ANY TABLE permettent de donner les droits de manipuler. Ne pas rendre actif REMOTE OS_AUTHENT Par dfaut cette valeur est initialise REMOTE_OS_AUTHENT = FALSE. Si cette valeur est TRUE, ce paramtre demande la base didentifier les comptes de manire externe.
Les comptes SYS et SYSTEM sont toujours gnrer par Oracle 10g. Additionnement, les comptes SYSMAN et DBSNMP sont conus la cration de la base de donnes. D'autres comptes peuvent tre crer pour supporter les produits installs, tel que RMAN ou XMLDB. SYSMAN et DBSNMP sont utiliss par Entreprise Manager. Les comptes qui ne sont pas loqus sont : SYS, SYSTEM, SYSMAN, DBSNMP
Si votre base de donnes est cre par un autre moyen que DBCA, il faut s'assurer que des comptes soient loqus et expirent. Pour loquer et expirer les comptes ALTER USER mdsys PASSWORD EXPIRE ACCOUNT LOCK;
Indpendamment des fonctionnalits installes, plusieurs comptes doivent tre loqus et expirs,
ceux sont :
csmig, ctxsys, dbsmnp, demo, dip, dmsys, exfsys, lbacsys, mddata, mdsys, oas_public, odm, odm_mtr, olapsys,ordplugins, ordsys,outln, perfstat, rman, scott, si_informtn_schema, sys, sysman, system, tracsvr, websys,wkproxy, wksys, wk_test, wmsys, xdb, sdm