You are on page 1of 97

Plan Gnral

1. Introduction
1.1 Objectifs du cours 1.2 Les tches de l'administrateur 1.3 L'offre Oracle 1.4 Oracle 10G Prsentation Gnrale 2.1 Architecture Gnrale 2.2 La notion d'instance 2.3 Structure de la mmoire d'Oracle 2.4 La SGA 2.5 La PGA 2.6 La Zone de tri 2.7 Diffrentes configurations d'Oracle 2.8 Les process autour d'Oracle 2.9 Les process utilisateurs 2.10 Les Processus Serveurs 2.11 Les Process tches de fond 2.12 Autres process 2.13 Mcanismes de lecture et criture 2.14 Mcanisme de validation et invalidation

2. Architecture dOracle

Administration Oracle 10G Partie I

G. Mopolo-Mok prof. MBDS / UNSA NICE 2005/ 2006

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Plan Gnral
I

Plan Gnral
4.2 Structure logique d'une Base de donnes Oracle
I 4.2.1 Les Tablespaces 4.2.2 Les Segments et leurs composants 4.2.3 Les Segments de donnes de type table 4.2.4 Les Segments de donnes de type cluster 4.2.5 Les Segments d'index 4.2.6 Les Segments temporaires 4.2.7 Les Segments rollback

3 Tches d'administration de base


3.1 Installation du noyau et des outils Oracle 3.2 Etats d'une base 3.3 Privilges utiles 3.4 Cration d'une base 3.5 Le fichier d'initialisation init.ora 3.6 Dmarrage d'une base 3.7 Arrt d'une base 3.8 Le dictionnaire de donnes d'Oracle

5. Gestion de la scurit et des ressources


5.1 Gnralits 5.2 Les Privilges 5.3 Les rles 5.4 Les profiles 5.5 Les utilisateurs 5.6 L'audit

4. Structure dune Base de Donnes Oracle


4.1 Structure Physique d'une Base de Donnes Oracle
4.1.1 Les fichiers de donnes 4.1.2 Les Fichiers Redo-Log 4.1.3 Les Fichiers d'Archives 4.1.4 Les fichiers de contrle

6 Sauvegarde et restauration
6.1 Gnralits 6.2 Sauvegarde en Noarchivelog

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Plan Gnral
6.3 Sauvegarde en mode Archivelog 6.4 Restauration d'une Base
I I

Plan Gnral
8. Loption procdurale
8.1 Gnralits 8.2 Procdures et fonctions

7. Outils dadministrations et les NLS


7.1 Export/Import
7.1.1 Gnralits 7.1.2 Export 7.1.3 Import

7.2 Sqlloader 7.3 Sqlplus 7.4 Les NLS 7.5 Oracle Entreprise Manager(OEM)
7.5.1 Objectifs 7.5.2 Rappel sur les outils d'administration Oracle 7.5.3 L'Architecture de OEM 7.5.4 Les composants OEM
7.5.4.1 La console OEM 7.5.4.2 Les services communs de OEM 7.5.4.3 Outils d'administration bases de donnes OEM 7.5.4.4 Le Performance Pack OEM

7.5.5 Utilisation de OEM

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Plan Gnral
8.2 Procdures et fonctions 8.3 Packages 8.4 Les triggers Base de donnes
I

1. Introduction
I

Plan
1.1 Objectifs du cours 1.2 Les tches de l'administrateur 1.3 L'offre Oracle 1.4 Oracle 10G prsentation gnrale
les versions d'Oracle les options d'Oracle les architectures d'Oracle

9. Optimisation de requtes sous Oracle


Gnrailits Les chemins daccs Les mthodes daccs Les outils Loptimiseur statistique

I I

10. Exercices 11. Annexes


12. Exercices Corrigs

A1. Arborescence d'Oracle sous UNIX A2. Arborescence d'Oracle sous Windows NT A3. Les paramtres d'initialisation A4. Les vues du dictionnaires A5. Les vues de performance A6. Les privilges systmes A7. Scripts de cration d'une base et fichiers d'initialisation A8. Diffrences entre les Versions d'Oracle A9. Schma de la base de travail A10. Dimensionnement de segments

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

1.1 Objectifs du cours


I

1.2 Les tches de l'administrateur


I

Comprendre le fonctionnement du moteur Oracle 10G Comprendre larchitecture logique et physique dune BD Oracle Effectuer les tches d'administration de base Administrer la scurit (utilisateurs, rles, profiles,...) Grer l'intgrit de donnes Grer les procdures stockes et les alertes Manipuler et administrer des donnes rparties Faire une introduction loptimisation dOracle
Copyright G. Mopolo-Mok Administration Oracle 10G

installer et upgrader Oracle allouer des espaces systmes et planifier des besoins futurs crer des objets des schmas grer la scurit et les ressources planifier l'archivage de donnes sauvegarder et restaurer les donnes arrter et dmarrer la base contrler et optimiser les performances

I I

I I I I

Page

Page 10

Copyright G. Mopolo-Mok

Administration Oracle 10G

1.3 Loffre Oracle


I

1.4 Oracle 10G Prsentation Gnrale


I
Outils de DWH
Discover Express Darwin

LOffre Oracle

Conception dapplications
Designer : - case designer - case dictionary - case generator

Le noyau de base dOracle 10G


Moteur SQL Moteur PL/SQL (option procdurale intgre depuis la version 7.1), Moteur Java Verrouillage en ligne

Progiciels
Oracle General Ledger Oracle Purchasing Oracle Payables Oracle Assets

oracle 10G (sql): - standard et PLSQL - parallle - parallle Query - distribu - Cartridge - Java VM - ORB -IAS Oracle Vido Server

Administration et interconnexion
. Administration : sqlloader, Sqlplus, import/export, Entreprise Manager . Interconnexion : Sqlnet, Sqlconnect, Oracle Gateway IIOP (ORB) . Oracle Application Server

Les Versions dOracle


Version Oracle 7.X.X.X.X, 8.X.X.X.X Version Oracle 10.0.1.1.1 Exemple 10.0.1.1.1.1 => Version 10, New Features Realese number 0, Maintenance release Number 1, Patch release number 1, Generic patch set number 1, plateform specific patch set number 1
SELECT * FROM PRODUCT_COMPONENT_VERSION ou V$version

Outils Groupware et Multimdia Oracle office Context Oracle mail Oracle Media Object Developper : . Forms,reports,Graphics, . . Programmer : . pro*C/C++, Pro*Cobol, ... Autres : . SQLJ,Jdevelopper, Webdb,...

Dveloppement d''applications
Page 12

Page 11

Copyright G. Mopolo-Mok

Administration Oracle 10G

Copyright G. Mopolo-Mok

Administration Oracle 10G

1.4 Oracle 10G Prsentation Gnrale


I

1.4 Oracle 10G Prsentation Gnrale


I

Les Options dOracle


Oracle cluster
accs une mme base par des machines en cluster accs par plusieurs instances aux donnes d'une mme base pas de partage de la mmoire central

Les Architectures dOracle


Architecture standard
une SGA des process tche de fond un process serveur par process utilisateur Machine virtuelle java ORB(Object Request Brocker) intgr Sqlnet

Option parallle (Oracle Parallle Query : Oracle PQ)


excution d'une mme requte par plusieurs processeurs

Oracle Replication

Architecture multithread
une SGA des process tche de fond un process serveur pour plusieurs process utilisateurs Machine virtuelle java ORB(Object Request Brocker) intgr partir de SQLNET

Option distribue
Interrogation distribue (y compris via des Gateways) Mise jour distribue rplication de donnes COMMIT deux phases

Option objet relationnel


Page 13 Copyright G. Mopolo-Mok Administration Oracle 10G Page 14 Copyright G. Mopolo-Mok Administration Oracle 10G

1.4 Oracle 10G Prsentation Gnrale


I

1.4 Oracle 10G Prsentation Gnrale


I

Intgration de la technologie Java


une machine virtuelle Java dans le serveur fourniture de deux types de drivers JDBC (OCI, un Driver pour les applets Java) Support d'une extension Java SQL (JSQL)
JSQL code->Prprocesseur JSQL -> Code Java avec des appels JDBC -> Compilateur Java -> Code Java

Plate forme ouverte, en rsum

Support des Java Beans Utilitaire d'import / export de programmes Java


I

Services: Transactions, Message, Queue de messages, Evnements

Intgration dans l'environnement CORBA


Support du protocole IIOP accs transparent aux objets stocks dans une base Oracle

JAVA VM

SQL

PL/SQL

SERVER MULTITHREAD

Extensibilit du moteur Oracle via des cartouches


cartouches de base : spatial, Image, Time, Text, Audio, Video Possibilit d'introduire de nouveaux mcanismes d'indexation reconnus par l'optimiseur statistique d'Oracle

Cartouches de donnes

Objet Relationnel

Relationnel

Disques

Page 15

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 16

Copyright G. Mopolo-Mok

Administration Oracle 10G

2. Architecture dOracle
I

2.1 Architecture Gnrale


I

Plan
2.1 Architecture gnrale 2.2 La notion d'instance 2.3 Structure de la mmoire d'Oracle 2.4 La SGA 2.5 La PGA 2.6 La Zone de Tri 2.7 Diffrentes configurations d'Oracle 2.8 Les process autour Oracle 2.9 Les process utilisateurs 2.10 Les Process Serveurs 2.11 Les Process tches de fond 2.12 Autres process 2.13 Mcanismes de lecture et criture 2.14 Mcanisme de validation et invalidation

Reprsentation schmatique
Process utilisateur Listener Process utilisateur Serveur ddi

Dispatchers

Request queue

Response queue Q1 Q2

Serveurs partags

SHARED POOL AREA (requtes SQL, procdures stockes, cache du dictionnaire) JAVA POOL LARGE POOL(mmoire Additionnelle pour la gestion des session: process server, io, xa, parallle, )

SMON

PMON RECO DATABASE BUFFER CACHE REDO LOG BUFFER

DBWx

CKPT

LGWR

ARCH

Fichiers de donnes Page 17 Copyright G. Mopolo-Mok Administration Oracle 10G Page 18

Fichiers de contrles

Fichiers Redo Log

Fichiers d'archives

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.2 La notion dinstance


I

2.3 Structure de la mmoire d'Oracle


I

Une instance Oracle correspond :


une SGA (System Global Ara) des Background Process des Process Serveurs
BACKGROUND PROCESS
(SMON, PMON, RECO, LGWR, DBWR, CKPT, ARCH, ...)

Principales composantes :
la SGA (System Global Area) la PGA (Program Global Area) la zone de Tri (Sort Area Size) Java Pool Large Pool

Database Buffer

Redo log Buffer

Grer essentiellement selon le principe dit LRU (Last Recent Used) La taille de ces zones est dtermine grce des paramtres d'initialisation Un sous-dimensionnement peut entraner des pertes importantes de performances

Java Pool

Large Pool

I
Shared Pool Area PGA Stack Session utilisateur Etat des curseurs Dispatcher Stack

SGA

User Session info & tats des curseurs (Serveur Multithread) PGA

Serveurs partags Utilisateur SERVEUR DEDIE Page 19 Utilisateur Utilisateur SERVEUR MULTITHREAD Copyright G. Mopolo-Mok Administration Oracle 10G Page 20 Copyright G. Mopolo-Mok Administration Oracle 10G

2.4 La SGA
I

2.4 La SGA
I

La figure ci-dessous reprsente les principales composantes de la SGA (System Global Area)

Buffers de donnes
Zone de chargement et de mise jour en mmoire des blocs de donnes (blocs les plus rcemment utiliss) Ces blocs proviennent des fichiers de donnes Les blocs concerns peuvent tre :

Database Buffer (Buffer De donnes) Java Pool Shared Pool Area(zone Des requtes partages)

Redo log Buffer(Buffer Redolog) Large Pool User Session info & tats des curseurs (Serveur Multithread)

des blocs de tables et clusters des blocs d'index (B-tree, Bitmap, Reverse Key, ) des blocs des rollback segments

SGA

Le buffer de donnes est gr selon le mcanisme LRU (Last Recent Used). Seul les blocs les plus rcemment utiliss sont maintenus en mmoire. Les blocs les moins rcemment utiliss sont jects du Buffer de donnes, ceux modifis crits dans les fichiers de donnes

Page 21

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 22

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA
I

2.4 La SGA
I

Buffers de donnes (suite)


Paramtres d'initialisation influenant sa taille
DB_BLOCK_BUFFERS : nombre de blocs jusqu Oracle 8 DB_CACHE_SIZE : nombre de blocs du buffer de donnes par dfaut. DB_BLOCK_SIZE taille du bloc par dfaut DB_16K_CACHE_SIZE : nombre de blocs du buffer de donnes de blocs de 16K DB_2K_CACHE_SIZE : nombre de blocs du buffer de donnes de blocs de 2K DB_32K_CACHE_SIZE : nombre de blocs du buffer de donnes de blocs de 32K DB_4K_CACHE_SIZE: nombre de blocs du buffer de donnes de blocs de 4K DB_8K_CACHE_SIZE : nombre de blocs du buffer de donnes de blocs de 8K Oracle peut grer plusieurs buffers de donnes avec des tailles de blocs diffrents si DB_CACHE_SIZE et au moins un DB_xK_CACHE_SIZE sont poss DB_CACHE_SIZE et DB_xK_CACHE_SIZE sont modifiables dynamiquement via ALTER SYSTEM

Buffers de donnes (suite)


Les Buffers Pools multiples (3 pools)
Les paramtres dinitialisations BUFFER_POOL_KEEP et BUFFER_POOL_RECYCLE permettent de dfinir deux buffers pools supplmentaires. Le premier tant celui par dfaut La zone dfinie par BUFFER_POOL_KEEP permet de dfinir un espace ou fixer les objets en mmoire La zone dfinie par BUFFER_POOL_RECYCLE permet de dfinir un espace ou fixer les objets qui sy trouvent librs aussitt quon ne les utilisent plus NOTE: Seule le buffer de donnes par dfaut dfinit par le paramtre dinitialisation DB_CACHE_SIZE peut tre gr de la sorte.

Page 23

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 24

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA
I

2.4 La SGA
I

Buffers de donnes (suite)


Les buffers de donnes sont organiss en deux listes : la dirty list et la LRU list. La Dirty List contient la liste des blocs en modification. La connaissance de cette Liste permet dacclrer lcriture des blocs modifis dans les fichiers de donnes

Buffers de donnes (suite)


les performances sont bonnes si le ratio R est >= 60 ou 70% Physical read R= 1 - ------------------------------------db block gets + consistent gets
Physical read : nombre de lecture sur disque db block gets + consistent gets : nombre total de lecture sur disque ou en mmoire.

Database Buffer (Buffer De donnes) Java Pool Shared Pool Area(zone Des requtes partages)

Redo log Buffer(Buffer Redolog) Large Pool User Session info & tats des curseurs (Serveur Multithread)

SGA

La table v$sysstat contient les statistiques utiles : SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets', 'physical reads'); Name db block gets consistent gets physical reads Value 85792 278888 13182

FICHIERS DE DONNEES

Page 25

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 26

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA
I

2.4 La SGA
I

Zone de partage des ordres SQL


se compose des donnes suivantes :
les plans d'excution et les rsultats d'analyse des ordres venant des processus utilisateurs les procdures stockes (PL/SQL) les requtes rcursives (requtes sur le dictionnaire)

Zone de partage des ordres SQL (suite)


Informations sur les requtes
v$sqlarea (texte des requtes) v$librarycache (tuning de requtes partages) v$rowcache (tuning du dictionnaire d'Oracle)

Optimisation du cache de la librairie Condition de partage


le plan d'excution et les rsultats d'analyse sont encore dans le buffer les objets composants la requte n'ont pas volus le texte de la requte est identique au caractre prt y compris le code PL/SQL Exemple: SELECT * FROM DEPT est diffrent de Select * FROM DEPT ou SELECT * FROM . DEPT est diffrent de SELECT * FROM .. DEPT NOTE : le dba peut nettoyer le buffer via la commande Alter System Flush Shared Pool
SELECT sum(pins) "Executions", sum(reloads) "Dfaut de cache", sum(reloads) / (sum(pins) + sum(reloads))*100 "R" FROM v$librarycache ; reloads : dfaut de lecture dans le cache de librairie d'excutions pins : nombre d'excutions sans dfaut de cache si R >= 1% alors augmenter SHARED_POOL_SIZE

Optimisation du cache du dictionnaire


SELECT sum(gets) "DC Gets", sum(getmisses) "DC cache get Misses", sum(getmisses) / (sum(gets)+sum(getmisses))*100 "R" FROM v$rowcache ; R doit tre <= 10% ou 15% sinon accroitre SHARED_POOL_SIZE

Page 27

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 28

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA
I

2.4 La SGA
I

Le Buffer REDO LOG


Tampon contenant les informations en cours de modification dans les blocs de donnes :
donnes avant et donnes aprs

Buffer Redo log (suite)


un buffer Redo log trop petit entrane des attentes Optimisation du buffer Redo log
la table des performances v$sysstat contient les information utiles SELECT name, value FROM v$sysstat WHERE name = 'redo log space requests' ; name : value : interprtation Si value est trs proche de 0 alors OK Si value croit souvent alors il y a attente : augmenter LOG_BUFFER par palier de 5% nom de la statistique valeur de la statistique

sa taille est dtermine par le paramtre


LOG_BUFFER
Database Buffer (Buffer De donnes) Java Pool Shared Pool Area(zone Des requtes partages) Redo log Buffer(Buffer Redolog) Large Pool User Session info & tats des curseurs (Serveur Multithread)

SGA

Fichier de donnes

FICHIERS REDO

Page 29

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 30

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA
I

2.4 La SGA
I

Large Pool
Le DBA peut configurer une zone de la SGA appel Large Pool pour soulager le Buffer de donnes ou la Zone des requtes partags pour certaines oprations gourmandes en mmoire Que peut fournir la Large pool ? :
Lespace mmoire ncessaire pour les sessions grs par les serveurs partags Lespace mmoire pour les transactions XA (moniteur transactionnel) Lespace mmoire pour effectuer les Backup et Restauration Lespace mmoire pour le traitement des requtes parallles si paramtre AUTOMATIC_TUNING=TRUE

Java POOL
Zone de mmoire ncessaire pour la machine virtuelle Java intgr dans Oracle Cette zone permet dexcuter le code Java stock dans le noyau Oracle Dimensionnement de la Java POOL
java_pool_size=33554432

Maintenir la SGA en mmoire centrale


LOCK_SGA : ce paramtre vaut par dfaut FALSE, le poser TRUE si lon souhaite que la SGA soit dfini en mmoire centrale uniquement (pas en mmoire virtuelle)

Dimensionnement de la Large POOL


Large_pool_size=valeur

Page 31

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 32

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.5 La PGA
I

2.5 La PGA
I

Buffer contenant des donnes et des informations de contrle pour un process serveur La PGA est une zone de mmoire prive Les tables v$sesstat, v$statname, permettent de dterminer la taille de la PGA pour une session
Select ss.sid, ss.value, sn.name FROM v$sesstat ss, v$statname sn, v$session se WHERE ss.statistic#=sn.statistic# and sn.name in ('session pga memory') and se.sid=ss.sid and type != 'BACKGROUND';

Contenu de la PGA selon le type de Serveur


SERVEUR DEDIE PGA stack space Informations de session stack space SERVEUR MULTITHREAD PGA

SGA

SGA informations de session

Zone des requtes partages (Sql area)

Zone des requtes partages (Sql area)

STACK SPACE (zone mmoire contenant) : . des variables de sessions . des tableaux . ... Informations de session : . en SGA avec le serveur Multithread . contient la sql private area Page 33 Copyright G. Mopolo-Mok Administration Oracle 10G Page 34 Copyright G. Mopolo-Mok Administration Oracle 10G

2.5 La PGA
I

2.6 La Zone de tri


I

La taille maximum de la PGA est influence en plus par les paramtres d'initialisations suivants :
sort_area_size hash_area_size bitmap_merge_area_size and create_bitmap_area_size

Une zone de tri est associe un Serveur (ddi ou non) pour traiter des ordres ncessitant des tris (Group by, Order by, Join, ...) la taille de la zone de tri est dtermine par le paramtre SORT_AREA_SIZE (en bytes)
Par dfaut cette taille est de 65000 bytes Si cette zone est pleine un Segment temporaire est gnr

Dautres paramtres influence aussi la taille de la PGA dune session


OPEN_LINKS : nombre de databases link ouverts DB_FILES : nombre de fichiers de donnes pouvant tre ouverts
I

SORT_AREA_RETAINED_SIZE (exprime en byte, 0 min, Sort_area_size par dfaut et max) : espace ne pas librer en cas d'criture dans le segment temporaire tuning de la zone de tri ; table v$sysstat
SELECT name, value FROM v$sysstat WHERE name in ('sorts (memory)', 'sorts (disk)'); NOTE : Si le nombre de tris sur disque croit, augmenter Sort_area_size. Maisattention au Swapping de l'OS.

En mode serveur ddi il est difficile de grer lallocation des paramtres *_area_size. Depuis la 9i le DBA peut fixer sa PGA maximale grce au paramtre :
PGA_AGGREGATE_TARGET

Page 35

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 36

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.7 Diffrentes configurations d'Oracle


I

2.7 Diffrentes configurations d'Oracle


I

Trois approches
Single task Oracle Serveur ddi Serveur Multithread

Single task Oracle


Combinaison du code du process serveur et du process utilisateur plus rapide (par exemple lors d'un import massif) par contre le systme d'exploitation doit permettre une sparation tanche entre le code de l'application et le code Oracle (exemple VAX VMS ) Architecture
Process utilisateur 1 Code Applicatif Code du serveur Oracle Process utilisateur N Code Applicatif Code du serveur Oracle

SGA (System Global Area)

Page 37

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 38

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.7 Diffrentes configurations d'Oracle


I

2.7 Diffrentes configurations d'Oracle


I

Serveur ddi
code du process utilisateur spar de celui du process serveur un process utilisateur est associ un process serveur

Serveur Multithread
Permet une meilleure exploitation des ressources SQL*NET V2 au moins est un pr requis

Process utilisateur

configuration aussi appele TWO - TASK


Process utilisateur 1 Code Applicatif TCP/IP, SPX/IPX, PIPES, ... Code du serveur Oracle Code du serveur Oracle Process utilisateur n Code Applicatif

Listener

Process utilisateur Serveur ddi

Dispatchers

Request queue

Response queue Q1 Q2 Autres Zones

Serveurs partags

SHARED POOL AREA (requtes SQL, procdures stockes, cache du dictionnaire)

DATABASE BUFFER CACHE

REDO LOG BUFFER

SGA (System Global Area)

Page 39

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 40

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.8 Les process autour dOracle


I

2.9 Les process utilisateurs


I

Deux classes de process autour dOracle


Les process utilisateurs (lis l'excution d'un outil, d'un programme d'application, ...) Les process Oracle

Process client excutant le code d'une application (PRO*C, FORMS, ...) ou dun Outil Oracle (SQL*PLUS, ENTREPRISE MANAGER, ...) Process souvent excut sur une machine diffrente de celle ou rside le serveur Oracle process qui tablit une communication avec Oracle via un protocole de communication et SQLNET La communication est gre via le User Programme Interface (UPI)

Process Oracle
Les process tches de fond (SMON, PMON, LGWR, DBWR, CKPT, ARCH, RECO, ...) Les process serveurs autres process

NOTE : Certains de ces process sont facultatifs (ARCH, CKPT)

Page 41

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 42

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.10 Les Processus Serveurs


I I I

2.11 Les Process tches de fond


I

Un process serveur peut tre ddi ou non Il est aussi appel shadow process Son rle consiste :
assurer la communication directe ou indirecte avec les process utilisateurs analyser et excuter les requtes lire les blocs de donnes dans les fichiers de donnes restituer directement ou indirectement le rsultat au process utilisateur dplacer les blocs modifis dans la DIRTY LIST

Le process Database Writer (DBWn)


Ecrit les blocs de donnes modifis de la SGA vers les fichiers de donnes est optimis pour minimiser les accs disques il peut avoir un ou plusieurs DBWn (DB_WRITER_PROCESSES=n allant de 0 9) Quand sactive DBWn ?
Lors d'un CHECKPOINT (LGWR ou CKPT l'avertit) pour librer de la place dans le Buffer de donnes la demande du process serveur sur un TIMEOUT (toute les 3s)

Exemple de serveur en mode ddi


process utilisateur Buffer de donnes SGA

Process serveur ddi Fichier de donnes Page 43 Copyright G. Mopolo-Mok Administration Oracle 10G Page 44 Copyright G. Mopolo-Mok Administration Oracle 10G

2.11 Les Process tches de fond


I

2.11 Les Process tches de fond


I

Le Process LOG WRITER (LGWR)


trace le contenu du buffer REDO LOG dans les fichiers REDO LOG en cas de checkpoint (CKPT absent) LGWR rveille DBWR et modifie l'entte des fichiers de donnes et de contrles quand sactive LGWR ?
Si un COMMIT t pass Sur un time out toute les 3 secondes Si le buffer REDO LOG est plein au 1/3 quand DBWR libre des blocs de donnes du buffer de donnes(en cas de TIMEOUT ou de checkpoint)

Le Process CHECKPOINT (CKPT)


s'obtient en fixant le paramtre CHECKPOINT_PROCESS=TRUE Si prsent informe DBWR qu'un CHECKPOINT est intervenu note le Checkpoint dans l'entte des fichiers de donnes et de contrles Un checkpoint intervient :
si le TIMEOUT a t atteint (LOG_CHECKPOINT_TIMEOUT : 0 par dfaut) si la fin d'un groupe de fichiers Redo log est atteint si une taille correspondant LOG_CHECKPOINT_INTERVAL (en blocs OS) a t crite dans le fichier REDO LOG si les commandes suivantes sont passes :
ALTER SYSTEM CHECKPOINT (pas de changement de REDO LOG) ALTER SYSTEM SWITCH LOGFILE

Optimisation
activer le process CHECKPOINT (CKPT)

Optimisation
Favoriser le recouvrement ou les performances en dimensionnant mieux LOG_CHECKPOINT_INTERVAL et LOG_CHECKPOINT_TIMEOUT

Page 45

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 46

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.11 Les Process tches de fond


I

2.11 Les Process tches de fond


I

Le Process CHECKPOINT (CKPT) et Intrt dun checkpoint


permet de forcer lcriture dans les fichiers de donnes des blocs de donnes restant en mmoire car frquemment modifis (Mcanisme LRU) permet dacclrer le recouvrement de donnes : les donnes avant le checkpoint dans le fichier Redo log ne seront plus appliques au fichiers de donnes car elles y sont dj prsentes.

Le Process ARCH
sauvegarde le fichier REDO LOG lorsqu'il est plein c'est un process facultatif. Jusqu 10 process : ARC010 peuvent tre activs.
Le paramtre log_archive_max_processes permet fixer le nombre maximum. Il est conseill de garder la valeur par dfaut car Oracle alloue lui-mme de nouveaux process en cas de besoin

Les archives peuvent tre rediriges sur une bande La base doit tre dmarre en mode avec Archive

Page 47

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 48

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.11 Les Process tches de fond


I

2.11 Les Process tches de fond


I

Le Process ARCH
Activation et configuration de ARCH sous UNIX :
log_archive_start = TRUE # activation des process ARCn log_archive_dest = /dev/rmt0:100M ou /backup/DB1/COURSarch
Destination des archives jusqu la version 8 dOracle

System Monitor(SMON)
Rpare linstance au dmarrage en cas d'arrt brutal Libre les segments temporaires compacte les extensions libres pour les rendre contigus (Alter Tablespace nomtablespace Coalesce) recouvre les process suspendus suite un crash

log_archive_format = %t_%s.arc ou t : THREAD, s : Squence number log_archive_duplex_dest : destination alternative jusqu la version 8 dOracle log_archive_min_succeed_dest=1 5 depuis la version (1 2 avant).Ce paramtre indique le nombre de copie faire lors de larchivage dun fichier Redo log log_archive_dest_state_n (n de 1 10) = enable ou Defer. Permet de grer ltat dune destination de sauvegarde log_archive_dest_n log_archive_dest_n (n de 1 10)=/backup/DB1/COURSarch standby_archive_dest : destination des archives pour une base en Standy
Page 49 Copyright G. Mopolo-Mok Administration Oracle 10G

Process Monitor (PMON) Fait le mnage en cas de disparition brutale d'un process utilisateur.
Supprime au niveau Oracle les process en erreur Annule les transactions en cours Libre les verrous contrle les process dispatchers et serveurs. S'ils ne sont plus prsents, il les redmarre.

Page 50

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.11 Les Process tches de fond


I

2.12 Autres process


I

Recover (RECO)
Sert uniquement si option distribue termine les transactions distribues en suspens d une erreur rseau ou systme se rveille par intervalles rguliers pour finir ou annuler des transactions suspendues

tnslnr : permet la connexion de client SQL*NET protocole TCP/IP dnslnr : permet la connexion de client SQL*NET protocole DECNET Jn (J000 J999): Job queue Processes
Permet de traiter des tches Batch programmes dans Oracle Un process coordinateur CJQ0 est le seul au dpart dmarr. Cest lui qui dmarre automatiquement les process Jnnn et leur affecte des tches Les tches peuvent tre aussi des tches de rplication entre bases Oracle Avant Oracle 10G on parlait de SNP0 SNP36

Dispatcher (Dnnn)
rceptionne les requtes des process utilisateurs et les met disposition d'un process serveur lit les rsultats d'une requte et les redirige vers le process utilisateur concern au moins un dispatcher par type de protocole rseau permet de partager les process serveurs

LOCK (LCKn)
Utile avec l'option parallle jusqu' 10 Lock process peuvent tre dmarrs

Queue Monitor (QMNn avec n de 0 9) : ces process servent au monitoring des queues de messages en cas de gestion de queues de messages avance
Copyright G. Mopolo-Mok Administration Oracle 10G

Page 51

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 52

2.13 Mcanismes de lecture et criture


I

2.13 Mcanismes de lecture et criture


I

Interrogation des donnes (SELECT)


Le process Serveur recherche la donne en SGA Donne prsente en SGA ? OUI NON Lecture en mmoire scondaire Donne en modification ? OUI Donne valide ? NON OUI Lecture dans le buffer ou fichiers de donnes NON

Mise jour (UPDATE)


UPDATE

1. Association d'un Rollback Segment ou dun undo tablespace ou dun undo tablespace la transaction 2. Verrouillage exclusif des lignes modifier

3. Modification des donnes dans le buffer de donnes

Lecture dans le RBS

4. L'tat avant est mis dans le Rollback Segment

Un SELECT en cours peut - t - il accder des donnes valides (COMMIT) par une autre transaction ?

5. L'tat avant et aprs est mis dans le buffer Redo Log

Page 53

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 54

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.14 Mcanisme de validation et invalidation


I

3 Tches d'administration de base


I

COMMIT
Un enregistrement contenant le COMMIT est crit dans le buffer Redo Log par le process Serveur Le contenu du buffer Redo Log est trac dans le fichier Redo Log par le process LGWR Les donnes valides sont considres comme tant "Propres" L'utilisateur reoit le message "COMMIT COMPLETED"

Plan
3.1 Installation du noyau et des outils Oracle 3.2 Etats d'une base 3.3 Privilges utiles 3.4 Cration d'une base 3.5 Le fichier d'initialisation init.ora 3.6 Dmarrage d'une base 3.7 Arrt d'une base 3.8 Activation de la base en mode priv pour le DBA 3.9 Suspension et ractivation de la base 3.10 Le Dictionnaire de donnes d'Oracle

ROLLBACK
Un enregistrement contenant le ROLLBACK est crit dans le buffer Redo Log par le process Serveur Le contenu du buffer Redo Log est trac dans le fichier Redo Log par le process LGWR Les donnes modifies sont remises dans leur tat ancien L'utilisateur reoit le message "ROLLBACK COMPLETED"

Lespace allou dans le ROLLBACK SEGMENT est - t - il dsallou immdiatement ?

Page 55

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 56

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.1 Installation du noyau et des outils Oracle


I

3.1 Installation du noyau et des outils Oracle


I

Tches avant installation Installation Tches aprs installation

Tches avant installation


Etudier le manuel dinstallation d'Oracle ou du produit prparer l'OS et la machine
Cas Unix : cration d'un compte Oracle, cration d'un groupe dba, Modification du noyau si utile UNIX : ajout de smaphore, Cas NT : se connecter sur la machine comme administrateur de la celle-ci

estimer lespace disque ncessaire pour les produits installer et la base de dpart choisir le type de fichiers (fichiers OS ou Raw Device) Positionner si utile (UNIX) les variables denvironnement ORACLE_HOME et ORACLE_SID, ...

Page 57

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 58

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.1 Installation du noyau et des outils Oracle


I

3.1 Installation du noyau et des outils Oracle


I

Installation 1. lancer lexcutable fournit avec la distribution : - sous UNIX : dans lenvironnement motif lancer oracleInstaller - sous NT : lancer SETUP depuis le premier CD 2. choix de la HOMEDIR dOracle 3. choix d'un type d'installation (complete, custom, minimal, ...) 4. Choix du ou des produits installer ou upgrader 5. Saisie des informations lies la base de dpart (si premire installation)

Tches aprs installation


Vrifier le fichier de trace (oraInstall.err et oraInstall.out ). Windows platform: c:\temp\oraInstall\ , UNIX: /temp/oraInstall Excuter si ncessaire le fichier "root.sh" en tant que root pour modifier les permissions(sous Unix) Vrifier et modifier les paramtres d'initialisation de la base : fichier "init.ora" diter le fichier "oratab" pour y dclarer une instance : utile(sous UNIX ) Permettre aux utilisateurs de lancer oraenv (sous UNIX) Mettre dans rc.local dbstart et dbshutdown (sous UNIX) Crer de nouvelles bases

Page 59

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 60

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.2 Etats dune base


I

3.3 Privilges utiles


I

Une Base de donnes comporte les tats suivants


BASE FERMEE

Privilges ncessaires pour crer, dmarrer ou arrter une base (UNIX ou NT)
SYSDBA (arrt, dmarrage, modification, cration dune base, ) SYSOPER(arrt dmarrage dune base, modification)

NOMOUNT . Instance monte . Utilisation : cration d'une base, crer un fichier de contrle

Rles attribuables partir de l'OS (si support)


Rles attribuer
OSOPER (shutdown, alter database) OSDBA (create database, osoper, + tous les privilges systme) autres rles Oracle

MOUNT . Instance dmarre et fichiers de contrle ouverts . Utilisation : tches de maintenance tels que renommer les fichers (donnes, rdos, ...), activer/dsactiver le mode avec archive, recouvrer les donnes, ...

OPEN . Instance dmarre fichiers de contrle et de donnes ouverts . Utilisation : mode de fonctionnement normal

Activation
OS_ROLE = TRUE # dans init.ora ORA_SID_ROLE_D(default)/A(with admin option) nom d'un groupe dans le fichier /etc/group
Exemple ORA_COURS_OSOPER_D :none:3:clement ORA_COURS_OSDBA_A:mopolo, miranda

Page 61

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 62

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base


I

3.4 Cration d'une base


I

Variables denvironnement positionner


ORACLE_SID=nom_de_instance ORACLE_HOME=home_oracle ORACLE_BASE=home_des_bases_Oracle

Fichier dinitialisation init.ora


Permet de fixer un certain nombre de paramtres
# Cache et E/S
db_block_size=4096 db_cache_size=33554432

Outils de lancement des commandes


Sqlplus (Server Manager jusqu la version 8) Le Database Configuration Assistant. Outil graphique permettant de crer et modifier les bases implicite lors de linstallation du serveur Oracle

# Configuration du fichier
control_files=("C:\oracle\oradata\DBTEST\CONTROL01.CTL", "C:\oracle\oradata\DBTEST\CONTROL02.CTL", "C:\oracle\oradata\DBTEST\CONTROL03.CTL")

# Curseurs et cache de bibliothque


open_cursors=300

# Diagnostics et statistiques
background_dump_dest=C:\oracle\admin\DBTEST\bdump core_dump_dest=C:\oracle\admin\DBTEST\cdump timed_statistics=TRUE user_dump_dest=C:\oracle\admin\DBTEST\udump

# Distribu, rplication et clich


db_domain=CERAM.FR remote_login_passwordfile=EXCLUSIVE

# Divers
compatible=9.0.0 db_name=DBTEST

# Inscription rseau
instance_name=DBTEST

Page 63

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 64

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base


I

3.4 Cration d'une base


I

Fichier dinitialisation init.ora


Permet de fixer un certain nombre de paramtres
# MTS
dispatchers="(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"

Etapes suivre pour crer une base avec le Database Configuration Assistant
1. Dmarrer lassistant start->programme->OracleHome->Configuration and Migration Tools->Database Configuration Assistant 2. Choisir crer une base 3. Choisir un template (modle) de base 4. Donner le nom global de la base (exemple DBTEST.CERAM.FR) ainsi que le SID (DBTEST) 5. Slectionner le mode de dploiement de la base (mode ddi) ou (mode serveurs multithreads) 6. Fixer la taille de la SGA(buffer cache, shared pool, large pool, java pool) 7. slectionner le mode darchivage de la base (Archivelog ou noarchivelog).Localiser les fichiers darchive 8. Fixer la taille maximale de la zone de tri ainsi que les caractres sets 9. Localiser les fichiers de contrles, de donnes et redo log 10. Modifier tout moment les paramtres ditialisation supplmentaires et dmarrer la cration de la base

# Pools
java_pool_size=33554432 large_pool_size=1048576 shared_pool_size=33554432

# Processus et sessions
processes=150

# Segments dannulation (Undo et Rollback) grs par le systme


undo_management=AUTO undo_tablespace=UNDOTBS

# Tri, jointures par hachage, index bitmap


sort_area_size=524288

NOTE :se rfrer la description de chaque paramtre pour plus de dtails (vue : V$PARAMETER ou Utiliser Entreprise Manager)

Page 65

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 66

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base


I

3.4 Cration d'une base


I

Etapes suivre pour crer une base manuellement


1. Dfinir larborescence de la base ora9data->dbtest->admin, tssys, tsusers, tstemp, tsrbs, 2. Dfinir les scripts de cration de la base(crDBTEST.sql) 3. Dfinir le fichier dinitialisation (initDBTEST.ora) 3. Si NT : Crer le service NT pour la base. C:\>oradim new sid dbtest intpwd manager startmode auto pfile c:\ora9data\dbtest\admin\initDBTEST.ora 4. Lancer Sqlplus c:\> sqlplus username:sys as sysdba password:manager 5. Excuter les commandes contenues dans crDBTEST.sql - dmarrer une instance - excuter CREATE DATABASE - excuter catalog.sql (pour les vues du dictionnaires) - ajouter des tablespaces supplmentaires pour une meilleure orgainisation tstemp, tsrbs, tsutil - ajouter des rbs supplmentaires si mode de gestion dannulations manuelles - excuter catproc.sql (pour loption procdurale) - excuter les scripts supplmentaires suivants : catdbsyn.sql - fixer le tablespace temporaire des users SYS et SYSTEM vers le tablespace temporaire Voir Annexes pour plus de dtails sur initSid.ora et crsid.sql

Syntaxe gnrale

CREATE DATABASE [nombase] [CONTROLFILE REUSE] [LOGFILE {[GROUP entier] logFileSpec, }] [MAXLOGFILES entier] [MAXLOGMEMBERS entier] [MAXLOGHISTORY entier] [MAXDATAFILES entier] [MAXINSTANCES entier] [{NOARCHIVELOG | ARCHIVELOG}] [CHARACTER SET nomCaracterSet] [NATIONAL CHARACTER SET nomCaracterSet] [DATAFILE {dataFileSpec [ClauseAutoExtend], }] [default_temp_tablespace] [undo_tablespace_clause] [SET STANDBY DATABASE {PROTECTED UNPROTECTED}] [set_time_zone_clause]

Page 67

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 68

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base


I Syntaxe gnrale logFileSpec ::=

3.4 Cration d'une base


Description des mots cls et des paramtres
Mot cl ou paramtre nombase Description nom de la base (8 caractres max) Default (Max)

{ Nomfichier | (Nomfichier [, Nomfichier] ...)} [SIZE entier [K|M] ] [REUSE] dataFileSpec ::= Nomfichier [SIZE entier [K|M] [REUSE]

CONTROLFILE REUSE rutiliser les fichiers de contrle existant en cas de recration de la base LOGFILE GROUP entier MAXLOGFILES entier MAXLOGMEMBERS entier MAXLOGHISTORY permet de spcifier les fichiers Redo log Group de fichiers redolog en miroir nombre maximum de fichiers Redo log nbre max de membres dans un groupe Redo log 16 (255)* 2 (5)*

ClauseAutoExtend ::= {OFF | ON [NEXT entier [K | M]] [MAXISZE {UNLIMITED | entier [K|M]}] } default_temp_tablespace::= [DEFAULT TEMPORARY TABLESPACE tablespace [TEMPFILE filespec] temp_tablespace_extent_clause] temp_tablespace_extent::= EXTENT MANAGEMENT LOCAL UNIFORM SIZE integer [K | M] [undo_tablespace_clause::= UNDO TABLESPACE tablespace [DATAFILE filespec1 [autoextend_clause1], ]]
Page 69 Copyright G. Mopolo-Mok Administration Oracle 10G

Nbre maximum de fichier d'archive noter dans le fichier de contrle pour recouvrement automatique si BD parallle 30(65533)* 63 (63)*

MAXDATAFILES entier Nbre maximum de fichiers de la bas MAXINSTANCES entier Nbre max d'instances actives sur cette base NOARCHIVELOG | ARCHIVELOG CHARACTER SET
NATIONAL CHARACTER SET

Base cre en mode sans archive(avec archive) noarchivelog Langage de stockage des donnes Langage nationale de stockage des donnes (type NCHAR, NVARCHAR2, ) us7ascii

DATAFILE dataFileSpec Fichiers de donnes du tablespace System * Dpendent de l'OS Page 70 Copyright G. Mopolo-Mok Administration Oracle 10G

3.4 Cration d'une base Description des mots cls et des paramtres
Mot cl Description ou paramtre default_temp_tablespace permet de dfinir le TS temporaire par dfaut. undo_tablespace_clause permet de dfinir le TS des donnes Rollback par dfault SET STANDBY DATABASE li une base en standby set_time_zone_clause fixer lhorloge Default (Max)

3.4 Cration d'une base


I

Spcification des fichiers Exemple


Create database DBCOURS CHARACTER SET us7ascii MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGFILES 24 MAXLOGMEMBERS 3 NOARCHIVELOG datafile oracle/oradata/DBCOURS/tssys/sys1dbcours.dbf size 110 M, oracle/oradata/DBCOURS/tssys/sys2dbcours.dbf size 110 M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED logfile oracle/oradata/DBCOURS/disk1/log1adbcours.dbf size 500K, oracle/oradata/DBCOURS /disk1/log2adbcours.dbf size 500K, oracle/oradata/DBCOURS/disk1/log3adbcours.dbf size 500K DEFAULT TEMPORARY TABLESPACE temp_ts TEMPFILE oracle/oradata/DBCOURS/tstemp/temp1dbcours.dbf size 110 M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED UNDO TABLESPACE undo_ts datafile oracle/oradata/DBCOURS/tsrbs/rbs1dbcours.dbf size110 M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED SET TIME_ZONE = +02:00;

Page 71

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 72

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base


I

3.5 Le fichier dinitialisation init.ora


I

Rsultat de la cration d'une base


Cration ou rutilisation de Fichiers de contrles Cration ou rutilisation de Fichiers Redo log Cration du tablespace SYSTEM Cration du rollback segment SYSTEM Cration du dictionnaire de donnes de base (sql.bsq) Cration dau moins deux utilisateurs SYS et SYSTEM Cration dun tablespace pour les segments temporaires temp_ts Cration dun tablespace (undo_ts) pour les donnes Rollback. Cration de 10 RBS implicite pour ce RBS

Les paramtres
environ 250 paramtres dont la plupart sont renseigns par dfaut trois classes de valeurs de paramtres
les boolens (TRUE, FALSE) des chanes de caractres et des entiers.

ils sont regroups par catgorie


db_* : paramtres lis la base log_* : paramtres lis au REDO LOG distributed_* : paramtres lis l'option distribue mts_* : paramtres lis l'architecture Multithread gc_* : paramtres lis l'option parallle nls_ *: paramtres lis au National Language Support sort_*: paramtres lis au tri ... non classs (processes, sessions, ...)
Voir Annexes A3 et A7

Travail complmentaire (scripts excuter)


cration des vues et synonymes publics (CATALOG.SQL) Installation de l'option procdurale(CATPROC.SQL) cration des synonymes publics pour les tables virtuelles (UTLMONTR.SQL) Cration des Synonymes sur les vues dba_* du dictionnaire (CATDBSYN.SQL) pour le DBA

Page 73

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 74

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.6 Dmarrage d'une base


I

3.6 Dmarrage d'une base


I

Procdure Gnrale
Positionner les variables d'environnement ORACLE_SID et ORACLE_HOME dmarrage de la base possible par paliers (startup nomount, startup mount, et startup open) possder les privilges appropris (SYSDBA, SYSOPER, OSDBA ou OSOPER, ...) indiquer si ncessaire le fichier des paramtres dmarrer la base sous sqlplus (Unix et NT) ou via les services(NT) ou Oradim (NT), travers Entreprise Manager: database administration assistant (NT ou Unix)

Description des mots et paramtres


FORCE Si instance ouverte, Fermeture puis dmarrage

RESTRICT sert des tches de maintenance. Il faut avoir le privilge Restricted Session PFILE OPEN MOUNT = Indique le fichier des paramtres dmarrer et ouvrir les fichiers de la base Instance dmarre fichier(s) de contrle ouvert(s)

NOMOUNT Seule l'instance est dmarre ALTER DATABASE permet le dmarre par paliers aprs un startup NOMOUNT ou MOUNT

Syntaxe de la commande
STARTUP [FORCE] [RESTRICT] [PFILE=fich_param] [OPEN | MOUNT | NOMOUNT] ALTER DATABASE [nom_base] MOUNT | OPEN

Page 75

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 76

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.6 Dmarrage d'une base


I

3.7 Arrt d'une base


I

Exemple
Variables denvironnement (sous UNIX) $ export ORACLE_SID = COURS $ export ORACLE_HOME=/user/oracle/v9 Lancer SQLPLUS $sqlplus username : sys as sysdba password : manager #dmarrer et ouvrir les fichiers de la base SQL >startup ; idem SQL>startup OPEN pfile= /user/oracle/v9/dbs/initCOURS.ora #dmarrer la base par paliers $ SQLPLUS
username : sys as sysdba password : manager # Instance dmarre, fichiers de contrles ouverts SQL >startup mount ; #En plus les fichiers de donnes sont ouverts SQL > alter database open ;

Procdure Gnrale
Possder les privilges OS (osdba, osoper) positionner les variables d'environnement (ORACLE_SID et ORACLE_HOME) Lancer l'outil SQLPLUS

Syntaxe de la commande
SHUTDOWN [NORMAL | IMMEDIATE | ABORT | TRANSACTIONAL]
NORMAL attend la dconnexion de l'ensemble des utilisateurs IMMEDIATE Invalide les transactions en cours et dconnecte les users ABORT Arrt violent de l'instance (recouvrement utile : SMON) TRANSACTIONAL Contrairement IMMEDIATE, laisse finir les transactions en cours

Page 77

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 78

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.7 Arrt d'une base


I

3.8 Passage de la base en mode restreint pour le DBA


I

Exemple
Positionner les variables d'environnement (UNIX)
$export ORACLE_SID=COURS $export ORACLE_HOME=/users/oracle/v9

Afin de permettre au DBA doprer des tches incompatibles avec la concurrence daccs tels que : la modification du schma, la suppression / recration dindex, il est possible de passer la base en mode QUIESCED alors quelle est ouverte normalement. Le passage en mode QUIESCED est obtenu base en ligne
SQL> ALTER SYSTEM QUIESCE RESTRICTED

Lancer SQL $SQL username : sys as sysdba

password : manager
I

# arrt normal avec attente de dconnexion SQL>shutdown ou # Arrt immdiat : Annulation des transactions en # cours et dconnexion . # Les utilisateurs ont le message suivant : # ORA-03113 : end-of-file on communication channel SQL>shutdown immediate ; ou # Arrt brutal (pas dattente de dconnexion, pas # d'invalidation de transactions en cours) SQL >shutdown abort;

Le retour en mode normal est obtenu comme suit :


SQL>ALTER SYSTEM UNQUIESCE

La vue V$INSTANCE permet davoir les information le mode dactivation dune instance NOTE :
Le mode QUIESCE peut tre aussi obtenu en dmarrant la base en mode RESTRICTED SESSION Seul les utilisateur SYS et SYSTEM peuvent activer ce mode

Page 79

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 80

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.9 Suspension et ractivation de la base


I

3.10 Le dictionnaire de donnes d'Oracle


I

Afin de permet une sauvegarde base en ligne sans activit de mise jour dans les fichiers de donnes il est possible maintenant de suspendre lactivit de mise jour Commande excuter pour suspendre la base
SQL>ALTER SYSTEM SUSPEND

un dictionnaire par base de donnes Ensemble de tables, vues et synonymes permettant la gestion des objets d'une base (proprit de l'utilisateur SYS) Il est accessible via des ordres SQL Il est modifi indirectement via des ordres dits DDL Il ne doit tre modifi directement Contient des informations persistantes (objets crs tels que les tables, les index, les clusters, ...) et des informations dynamiques (tels les sessions ouvertes, les E/S effectues, ...)

Commande excuter pour revenir en mode normal


SQL>ALTER SYSTEM RESUME

I I

NOTE : les rgles de sauvegarde base ouverte doivent tre respectes (voir le chapitre Sauvergarde et Restauration)

Page 81

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 82

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.8 Le dictionnaire de donnes d'Oracle


I

4. Structure dune Base de Donnes Oracle


I

Contenu du dictionnaire
des tables de base du dictionnaire stockes en cluster et finissant par $. Exemple tab$, ind$, obj$, seg$, ... (script les contenant : sql.bsq) les vues de performances exemple :
v_$process, v_$session, v_$syststat, v_$sesstat, ...

PLAN
4.1 Structure Physique d'une Base de Donnes Oracle
4.1.1 Les fichiers de donnes 4.1.2 Les fichiers Redo log 4.1.3 Les fichiers d'Archives 4.1.4 Les fichiers de Contrle

des vues sur le dictionnaire de base commenant par :


all_* : informations sur les tous les objets accessibles par l'utilisateur connect user_* : information sur tous les objets dont l'utilisateur connect est propritaire dba_* : information sur tous les objets de la base. Il faut avoir le privilge SELECT ANY TABLE pour y accder

4.2 Structure logique d'une Base de donnes Oracle


4.2.1 Les tablespaces 4.2.2 Les segments et leurs composants 4.2.3 Les segments de donnes de type table 4.2.4 Les segments de donnes de type cluster 4.2.5 Les segments d'index 4.2.6 Les segments temporaires 4.2.7 Les segments rollback (manuels ou automatiques)

des synonymes sur les vues pour simplifier. Exemple:


v$process, v$session, v$systat, v$sesstat, ...

Voir aussi les Annexes A4 et A5

Page 83

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 84

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1 Structure Physique dune Base de Donnes Oracle


I

4.1.1 Les fichiers de donnes


I

Physiquement, une base de donnes Oracle est compose d'un certain nombres de fichiers :
des Fichiers de donnes des fichiers REDO LOG des fichiers de contrle des fichiers d'Archivage (si fonctionnement avec Archive) SGA
Shared Pool Area

Ils contiennent toutes les donnes relatives une base de donnes (dictionnaire Oracle, Tables, index, clusters, rollback segments, segment temporaires) Ces fichiers sont lus par les process Serveurs et modifis par DBWn L'unit de dcoupage est le bloc (2K, 4K, 8K, 16K, 32K) selon l'OS Ces fichiers sont de taille fixe et optionnellement variables depuis la 7.2 Ils appartiennent une et une seule base
Que se passe - t - il si MAXDATAFILES est atteint ? Que se passe - t - il si DB_FILES est atteint ? Quelles sont les mesures prendre ?

Process Serveur

I
Fichiers de donnes Fichiers de donnes Database Buffer

Redo log Buffer

DBWR CKPT

LGWR FICHIERS REDO

Fichier de donnes Fichiers de contrles

Fichier de donnes Fichiers archives

ARCH

Page 85

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 86

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers Redo-Log


I

4.1.2 Les Fichiers Redo-Log


I

Ces fichiers contiennent la trace de lactivit en terme de mise jour sur la base deux groupes au moins avec chacun au moins un fichier sont obligatoires ils doivent tre multiplexs pour plus de scurit ne sont utiles quen cas de perte des fichiers de donnes ou d'arrt anormal de la base Fonctionnent de faon cyclique

Configuration minimale (au moins 2 groupes avec au moins un fichier chacun) En cas de Log Switch => changement de groupe Un checkpoint intervient si : fin de fichier, TIMEOUT, intervalle en taille atteinte, Begin Backup, shutdown normal ou immediate, ... Configuration minimale (sans multiplexage)

Groupe 1 LOG SWITCH

F1a

LGWR LOG SWITCH LGWR

Groupe 2

F2a

Page 87

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 88

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers Redo-Log


I

4.1.2 Les fichiers REDO LOG


I

Utilisation en mode multiplexs (au moins deux groupes)


Un groupe au moins 2 fichiers qui sont identiques et mis jour simultanment il est conseill de stocker chaque fichier d'un mme groupe sur des disques diffrents il est conseill d'avoir un mme nombre de membres par groupe
Disque 1 Disque 2

Ajout et suppression de fichiers REDO


Ajout d'un groupe de fichiers ALTER DATABASE [database ] ADD LOGFILE [THREAD integer ] [ GROUP integer ] filespec [, [ GROUP integer ] filespec... Ajout d'un membre dans un groupe connaissant son Numro ou le nom d'un fichier ALTER DATABASE [database ] | ADD LOGFILE MEMBER 'filename' [ REUSE ] [,'filename' [REUSE]]... TO { GROUP integer | ( 'filename'[REUSE] [,'filename']... ) | 'filename' [REUSE]} [TO { GROUP integer | ( 'filename'['filename']...) | 'filename'} ]...

Groupe 1 F1a Fichier1a LOG SWITCH F1a Fichier1b LOG SWITCH

Groupe 2

F1a Fichier2a

F1a Fichier2b

Page 89

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 90

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG


I

4.1.2 Les Fichiers REDO LOG


I

Ajout et suppression de fichiers REDO (suite)


ALTER DATABASE [database ] DROP LOGFILE { GROUP integer | ('filename'[,'filename']...) | 'filename'} [, { GROUP integer | ('filename'[,'filename']...) | 'filename'}]... | DROP LOGFILE MEMBER 'filename'[,'filename']...

Forcer un checkpoint
pour rendre le groupe courant inactif en cas de problme pour des besoins de maintenance pour provoquer un archivage immdiat si le REDO LOG est trop grand Commande excuter (privilge requis : ALTER SYSTEM)
ALTER SYSTEM SWITCH LOGFILE ;

Exemple
ALTER DATABASE DBCOURS ADD LOGFILE GROUP 4 (' /oracle/oradata/DBCOURS/disk1/log4adbcours.dbf') size 500K; ALTER DATABASE DBCOURS ADD LOGFILE MEMBER /oracle/oradata/DBCOURS/disk2/log4bdbcours.dbf' TO GROUP 4; ALTER DATABASE DBCOURS ADD LOGFILE MEMBER /oracle/oradata/DBCOURS/disk1/log4adbcours.dbf' TO /oracle/oradata/DBCOURS/disk3/log4cdbcours.dbf'; I

Forcer un Checkpoint sans Switch


LGWR continue d'crire dans le REDO LOG courant La commande excuter est :
ALTER SYSTEM CHECKPOINT ;

Informations sur les REDO LOG


v$log , v$logfile, v$log_history, v$thread
Si un fichier Redo dun groupe ou un groupe entier est perdu, que se passe - t - il pour linstance qui tourne ?

Page 91

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 92

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG


I

4.1.2 Les Fichiers REDO LOG


I

Informations sur les REDO LOG

Informations sur les REDO LOG

v$logfile : table contenant les noms des fichiers Redo Log et leur tat. Name GROUP# STATUS Type NUMBER VARCHAR2(7) Description Numro du groupe redo Log INVALID: fichier inaccessible STALE : contenu incomplet DELETED : fichier supprim blanc : En utilisation ONLINE : actif, Nom du fichier membre

TYPE MEMBER

VACHAR2(7) VARCHAR2(513)

Select group, status, member From v$logfile; Group# Status 1 1 2 STALE 2 STALE 3 3 6 rows selected. MEMBER C:\ORADATA\DBCOUR\DISK1\LOG1ACOUR.DBF C:\ORADATA\DBCOUR\DISK2\LOG2ACOUR.DBF C:\ORADATA\DBCOUR\DISK1\LOG1BCOUR.DBF C:\ORADATA\DBCOUR\DISK2\LOG2BCOUR.DBF C:\ORADATA\DBCOUR\DISK1\LOG1CCOUR.DBF C:\ORADATA\DBCOUR\DISK2\LOG2CCOUR.DBF

v$log : Vue contenant les informations issues du fichier de contrle sur les fichiers Redo Log. Name Type Description GROUP# NUMBER Numro de groupe de redo log THREAD# NUMBER Numro du Thread d'un fichier log Sequence# NUMBER Numro de squence d'un fichier log BYTES NUMBER Taille du fichier log en bytes MEMBERS NUMBER Nombre de membre dans un group de Log ARCHIVED Varchar2 Fichier en Archivage ? :YES, NO STATUS Varchar2 UNUSED : Fichier non utilis (il vient d'tre ajout, il ya eu un resetlogs) CURRENT :Fichier courant et actif ACTIVE : log actif mais pas courant CLEARING : Recration la suite d'un Alter Database Clear Logfile CLEARING_CURRENT : effacement du log courant INACTIVE : log non utile pour le recouvrement first_change# NUMBER Plus petit SCN dans le fichier Log First_time DATE Date du 1er SCN dans le fichier Log

Page 93

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 94

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG


I

4.1.2 Les Fichiers REDO LOG


I

Informations sur les REDO LOG

Informations sur les REDO LOG

v$log_history : Vue contenant les informations sur lhistorique des fichiers Log Name Type Description THREAD# NUMBER Numro de thread du log archiv Sequence# NUMBER Numro de squence du log archiv First_time DATE Date du plus petit SCN dans le fichier Log first_change# NUMBER Plus petit SCN dans le fichier log next_change# NUMBER Plus grand SCN dans le fichier log. RECID NUMBER Nr. d'enregistrement dans le fichier de controle STAMP NUMBER Controlfile record stamp

V$THREAD: vue contenant des informations issues du fichier de contrle sur les Log Thread. Name Type THREAD# NUMBER STATUS Varchar2 ENABLED Varchar2 ENABLE_ CHANGE# NUMBER ENABLE_TIME DATE disable_change# Number DISABLE_TIME DATE GROUPS NUMBER INSTANCE Varchar2 OPEN_TIME DATE Current_group# Number SEQUENCE# NUMBER CHECKPOINT _CHANGE# Number Cheickpoint_time DATE Description numro du Thread status du Thread: OPEN, CLOSED Enabled status: DISABLED, (enabled) PRIVATE, or (enabled) PUBLIC SCN at which thread was enabled Time of enable SCN SCN at which thread was disabled Time of disable SCN Nombre de groupe redo affectes ce thread Nom de l'instance Dernire date de lancement du thread Groupe Redo Log courant Nr. De squence du fichier Log courant SCN du dernier checkpoint Date du dernier checkpoint

Page 95

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 96

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.3 Les Fichiers dArchives


I I

4.1.3 Les Fichiers dArchives


I

prsents si mode avec Archives contiennent l'archivage des fichiers Redo log plein la mme taille que le fichier REDO LOG correspondant

Localisation des fichiers dArchives


log_archive_dest = /dev/rmt0:100M ou /backup/DB1/COURSarch
(jusqu Oracle8)

ARCH F1a Fichier1a F1a F1a Fichier1b COURSarch_123.arc 123 = Nr. de squence

Groupe 1

log_archive_format = %t_%s.arc ou t : THREAD, s : Squence number log_archive_duplex_dest : destination alternative jusqu la version 8 dOracle log_archive_min_succeed_dest=1 5 depuis la version (1 2 avant).Ce paramtre indique le nombre de copie faire lors de larchivage dun fichier Redo log log_archive_dest_state_n (n de 1 10) = enabled ou Deffered ou Alternate. Permet de grer ltat dune destination de sauvegarde log_archive_dest_n log_archive_dest_n (n de 1 10)=/backup/DB1/COURSarch

Si un groupe REDO LOG est plein ou si un CHECKPOINT est intervenu alors ARCH se met action.

Que fait Oracle lorsque LGWR tente d'craser un fichier en cours d'Archivage ?
Page 98 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 97

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.4 Les fichiers de contrle


I

4.1.4 Les fichiers de contrle


I

Un fichier de contrle contient des informations de contrle d'une base de donnes Oracle Le contenu de ce fichier est :
nom de la base date (timestamp) de cration de la base noms et localisation des fichiers de donnes et redo log numro de squence du fichier redo log courant informations sur les CHECKPOINT

Ajout de copies supplmentaires de fichiers de contrles


1. Arrter la base et sortir du logiciel d'Administration (Sqlplus) 2. dupliquer sous l'OS le fichier de contrle 3.relancer le logiciel d'administration et redmarrer la base.

Backup d'un fichier de contrle


Sauvegarde en dupliquant un fichier de contrle ALTER DATABASE BACKUP CONTROLFILE TO arch_ctl.dbf; Sauvegarde sous forme de requte SQL dans le fichier de trace (ora_xxx.trc) ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Oracle recommande de mettre les fichiers de contrle en miroir et de les localiser sur des disques diffrents. Attention aux performances
Comment est nomm un fichier de contrle ? Si les fichiers de contrle sont en miroir lequel Oracle lit - t - il ? Que se passe - t - il si Oracle perd un des fichiers en miroir ?

Page 99

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 100

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.4 Les fichiers de contrle


I

4.1.4 Les fichiers de contrle


I

Cration d'un nouveau Fichier de contrle


pour augmenter MAXLOGFILES et MAXDATAFILES en cas de perte de tous les fichiers REDO LOG

Informations sur les fichiers de contrle


Vues : v$controlfile, v$parameter, v$controlfile_record_section Sql>select name, status from v$controlfile;
NAME STATUS C:\ORACLE\ORA9DATA\DBGM\DISK1\CONTROL01.CTL C:\ORACLE\ORA9DATA\DBGM\DISK2\CONTROL02.CTL C:\ORACLE\ORA9DATA\DBGM\DISK3\CONTROL03.CTL

Les tapes
1. Lister les fichiers sauvegarder
Les fichiers de donnes (vue dba_data_files) les fichiers redo log (vues v$logfile)

2. Arrter la base et faire une sauvegarde complte dmarrer une nouvelle instance en NOMOUNT crer un nouveau fichier fichier de contrle Modifier le fichier des paramtres de la base Recouvrer la base si utile et redmarrer

Sql>select name, value from v$parameter where name =control_files Sql>Select * from v$controlfile_record_section;

La commande
CREATE CONTROLFILE [REUSE][RESET] DATABASE nombase LOGFILE ... DATAFILE ...

Page 101

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 102

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2 Structure logique dune Base de donnes Oracle


I

4.2.1 Les tablespaces


I

Les structures logiques servent organiser le stockage et la gestion des donnes d'une base Oracle Corrlation entre les concepts logiques
Base de donnes comprend est li appartient Tablespace comprend appartient Segment table d'Index Cluster rollback temporaire comprend comprend Bloc

Gnralits
Un Tablespace est l'espace de stockage logique des donnes Une Base de donnes Oracle comprend 1 N Tablespaces. Un tablespace est compos de 0 ou N Fichiers OS Un Tablespace peut tre mis OFFLINE. Toutefois le Tablespace SYSTEM ne peut tre mis OFFLINE Un tablespace peut tre TEMPORARY ou PERMANENT (mode par dfaut). Un tablespace temporaire contient des donnes temporaires lis au TRI par exemple Il maintenant possible de crer des tablespaces pour contenir les tables temporaires. CREATE TEMPORARY TABLESPACE nom_tablespace TEMPFILE .Il peut aussi contenir les donnes de tri sil est affect un utilisateur Un tablespace peut tre rserv contenir des donnes Rollback : UNDO TABLESPACE

Fichier du SE se dcompose en appartient

appartient comprend

Extension

appartient

Page 103

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 104

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les tablespaces


I

4.2.1 Les tablespaces


I

Gnralits
Un tablespace peut maintenant tre gr localement. Pas de donnes dans le dictionnaire lors de la cration de segment (mot cl LOCAL) : ATTENTION ! OPTION PAR DEFAUT Un tablespace peut aussi tre depuis la Oracle 8 transportable en bases de donnes Deux TABLESPACES peuvent depuis Oracle 10G avoir des blocs de taille diffrente. Grs dans des segments de SGA diffrents (Voir le chapitre concernant la SGA)

Rle d'un Tablespace


Organiser logiquement le stockage des donnes (localisation dune application dans un Tablespace, cantonnement des utilisateurs dans un tablespace) Contrler l'allocation des espaces disques au utilisateurs via des quotas Augmenter la disponibilit des donnes (arrt partiel d'une base via l'arrt d'un Tablespace) Sauvegarder et restaurer partiellement une base Amliorer les performances grce la distribution des informations sur des disques diffrents (index dans tablespace et les tables dans un autre) Fournir les paramtres de stockages des donnes par dfaut

Page 105

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 106

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Exemple dOrganisation dune base


BASE DE DONNEES COURS TABLESPACE SYSTEM Fichier1_Sys_disk1.dbf Table 1 Extension 1 Extension 1 TABLESPACE USER Fichier1_user_disk1.dbf Table 3 Extension 1

Le tablespace SYSTEM
Tablespace cr par dfaut lors de la cration de la base contient le dictionnaire de donnes contient un Rollback segment cr par dfaut SYSTEM ne peut tre mis OFFLINE il est dconseill d' y stocker des donnes autres que celles du dictionnaire

Table 2 Table 1

Fichier2_user_disk2.dbf Table 3 Extension 2 Table 4 Extension 1 TABLESPACE RBS Fichier1_rbs_disk3.dbf Rollback segment 1 Extension 1 Rollback segment 1 Extension 2 Rollback segment 1 Extension 3

Extension 2

TABLESPACE INDEX Fichier1_index_disk3.dbf Index 1 Extension 1 Extension 1

Index 2 Index 2

Extension 2

Que doit-t-on faire pour renommer un fichier dans le tablespace System ?

Page 107

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 108

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Les autres tablespaces


permettent de regrouper les donnes par type dapplications ou dactivits (exemple le tablespace TOOLS, le tablespace COMPTA, ...) permettent de sparer les donnes pour augmenter les performances sont par dfaut ONLINE la cration peuvent tre mis OFFLINE peuvent tre sauvegards et restaurs sans arrter la base entire sont crer explicitement par l'administrateur peuvent tre mis READ ONLY ( partir Oracle 7.2)

La commande CREATE TABLESPACE


CREATE [UNDO] [TEMPORARY] TABLESPACE tablespace DATAFILE filespec [autoextent_clause] [, filespec [autoextent_clause] ] ... [ DEFAULT STORAGE storage_clause ] [BLOCKSIZE integer [K]] [ ONLINE | OFFLINE ] [ PERMANENT | TEMPORARY ] [extents_management_clause] [segments_management_clause]

Page 109

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 110

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

La commande CREATE TABLESPACE


Les clause FileSpec et auto Extents
Valide pour tout type de tablespace FileSpec ::=

La commande CREATE TABLESPACE


La clause storage
Valide uniquement pour les Tablespaces grs dans le dictionnaire. Les informations sur le tablespace sont stockes dans le dictionnaire dOracle storage_close ::= STORAGE ( [ INITIAL [ NEXT [ PCTINCREASE [ MINEXTENTS [ MAXEXTENTS

Nomfichier [SIZE entier [K|M] [REUSE]

autoextent_clause ::= AUTOEXTEND [OFF | ON] [NEXT integer [K | M] [MAXSIZE UNLIMITED | integer [K | M]]]
La clause auto extent permet dtendre dynamiquement la taille d un fichier

integer [ K | M ] ] integer [ K | M ] ] integer ] integer ] integer ]

VALEUR/ DEFAUT INITIAL NEXT MINEXTENT MAXEXTENT PCTINCREASE LM : Local Management 5 blocs 5 blocs 1 dpend taille bloc 50%

MIN 2 blocs(3 si LM) 1 bloc 1 (2 pour RBS) 1 0

MAX OS OS OS OS

Page 111

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 112

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

La commande CREATE TABLESPACE


Les clauses Extents management et segment management.
Clauses valides uniqument pour les tablespaces grs localement extents_management_clause ::= EXTENT MANAGEMENT {DICTIONARY | LOCAL [ {AUTOALLOCATE | UNIFORM [SIZE integer [K | M]}]} - segments_management_clause ::= SEGMENT SPACE MANAGEMENT {MANUAL | AUTO} - Si AUTO spcifi alors les blocs libre pour linsertion sont grs via des Bitmap autrement ils sont grs via les FREE LISTS

Cration des tablespaces grs dans le dictionnaire


Gnralits
Les informations sur les extensions des segments sont gres dans le dictionnaire Cest lapproche historique de cration de tablespaces sous Oracle jusqu la version 8i

Les extensions des segments peuvent avoir des tailles diffrentes Les extensions sont dfinies par le DBA en sappuyant sur les clauses DEFAULT STORAGE du tablespace ou STORAGE dun segment Ce type de tablespace partir de la version 9i ne peut tre cre que si le tablespace System est lui mme gr dans le dictionnaire

Page 113

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 114

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Cration des tablespaces grs dans le dictionnaire


Exemple 1
CREATE TABLESPACE APPLI_COMPTA DATAFILE '/home/Fichier1_app_cpt.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT DICTIONARY; CREATE TABLESPACE APPLI_PERSONNEL DATAFILE '/home/Fichier1_app_pers.dbf' SIZE 100M, '/home/Fichier2_app_pers.dbf' SIZE 10M DEFAULT STORAGE ( INITIAL 100K NEXT 50K MINEXTENTS 4 MAXEXTENTS 100 PCTINCREASE 25 ) EXTENT MANAGEMENT DICTIONARY;
Ou sont localiss les fichiers du tablespace si le chemin n'est pas donn? Combien de fichiers peut avoir un tablespace au maximum? Quels sont les paramtres de stockage du tablespace APPLI_COMPTA ? Quels sont les critres de choix deparamtres de stockage dun tablespace?

Cration de tablespaces grs localement


Gnralits
Un tablespace gr localement prend en charge la gestion de ses extensions une Bitmap est cr dans l'entte de chaque fichier pour identifier les Blocks ou les Extensions Option par dfaut dOracle

La taille dune extension ici peut tre calcule automatiquement (AUTOALLOCATE) on peut tre fixe (UNIFORM SIZE) Si l'on utilise la clause AUTOALLOCATE Oracle dtermine la taille optimale des extensions de chaque segment avec un minimum de 64K. Vous pouvez prciser la taille de lextension INITIALE lors de la cration du segment. Oracle sen sert pour calculer la taille des extensions du segment Si l'on utilise la clause UNIFORM SIZE toutes les extensions de tous les segments auront la mme taille : celle spcifie lors de la cration du tablespace ou celle part dfaut qui est de 1 Mo
Page 116 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 115

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Cration de tablespaces grs localement


Avantages des Tablespaces grs localement contrairement aux tablespaces grs via le Dictionnaire :
pas de requtes rcursives dfragmentation(Coalesce) automatique du Tablespace

Cration de tablespaces grs localement


Exemple 2 : Cration d'un tablespace Local avec la clause AUTOALLOCATE (option par dfaut) Sql>CREATE TABLESPACE tslocal DATAFILE 'F:\oracle\oradata\dbtests\TSLOCAL\ts_local1.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TABLE TestLocal(c1 char(4) ) tablespace tslocal storage(initial 500k next 500K minextents 4 maxextents 10);
SEGMENT_NAME EXTENT_ID BYTES BLOCKS

NOTES :
Les paramtres de stockage NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, DEFAULT STORAGE sont ignors pour les Tablespaces grs localement Avec la clause UNIFORM SIZE, INITIAL nest pas en plus pris en compte

TESTLOCAL TESTLOCAL

0 1

1048576 1048576

128 128

Page 117

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 118

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Cration de tablespaces grs localement


Exemple 3 : Cration d'un tablespace Local avec la clause UNIFORM SIZE Sql>CREATE TABLESPACE tslocaluniform DATAFILE 'F:\oracle\oradata\dbtests\TSLOCAL\ts_local_unif1.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 200K; CREATE TABLE Testuniform1(c1 char(4)) tablespace tslocaluniform storage(initial 100k next 50K minextents 1 maxextents 2); select SEGMENT_NAME , EXTENT_ID, BYTES, BLOCKS from dba_extents where SEGMENT_NAME ='TESTUNIFORM1';
SEGMENT_NAME TESTUNIFORM1 EXTENT_ID 0 BYTES 204800 BLOCKS 25

Cration de Tablespaces ayant sa propre taille de bloc


Ne peut fonctionner quavec des SGA multiples Exemple 4 : Cration d'un tablespace avec sa propre taille de bloc.
SQL>CREATE TABLESPACE ts_block_2K DATAFILE D:\oracle\ora9data\DBGM\TSBLK_2K\ts_temp_tab01. dbf SIZE 10M BLOCKSIZE 2K;

Page 119

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 120

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Modification dun Tablespace


ALTER TABLESPACE tablespace { ADD DATAFILE filespec [autoextent_clause] [ , filespec [autoextent_clause] ] ... | RENAME DATAFILE 'filename'[,'filename'] ... TO 'filename' [,'filename'] ... | DEFAULT STORAGE storage_clause | ONLINE | OFFLINE { NORMAL | TEMPORARY | IMMEDIATE } |{ BEGIN | END } BACKUP } | [READ {ONLY | WRITE}] | [PERMANENT] | [TEMPORARY] | [COALESCE]

Modification dun tablespace


Rlocalisation des fichiers ALTER TABLESPACE appli_compta RENAME DATAFILE /home/Fichier1_app_cpt.dbf TO /new_home/Fichier1_app_cpt.dbf Arrt d'un tablespace ALTER TABLESPACE appli_compta OFFLINE; Arrt d'un fichier dans un tablespace - avec archive ALTER TABLESPACE appli_compta /new_home/Fichier1_app_cpt.dbf OFFLINE; Un Tablespace devient temporaire
ALTER TABLESPACE appli_compta TEMPORARY;

Ajout dun fichier


ALTER TABLESPACE APPLI_COMPTA ADD DATAFILE '/home/Fichier1_app_cpt.dbf' SIZE 10M;

Modification des paramtres de stockage


ALTER TABLESPACE APPLI_COMPTA default storage (initial 15K next 10K);

Compacter les extensions dun Tablespace


ALTER TABLESPACE appli_compta COALESCE;

Page 121

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 122

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.1 Les Tablespaces


I

Modification dun tablespace (suite)


Un tablespace arrt peut tre mis :
offline normal offline temporary (il y a des erreurs et un Checkpoint est pass sur les fichiers sans erreurs) offline immediate (il y a des erreurs et aucun Checkpoint n'est pass mode avec ARCHIVE)

Suppression dun Tablespace


Tout tablespace peut tre supprim sauf le tablespace SYSTEM DROP TABLESPACE APPLI_COMPTA INCLUDING CONTENTS ; Si les donnes du tablespace sont rfrences alors
DROP TABLESPACE APPLI_COMPTA INCLUDING CONTENTS CASCADE CONSTRAINTS ;

Un tablespace peut tre mis read-only (oracle 7.2) ALTER TABLESPACE appli_compta READ ONLY

Quand doit - t - on mettre un fichier OFFLINE ou ONLINE ? Pourquoi l'arrt d'un fichier ncessite l'option DROP en mode sans archive ? Quelles sont les conditions pour rendre un tablespace read-only?

Que doit-t-on faire pour renommer un fichier dans le un tablespace tablespace autre que System ?

Page 123

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 124

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces


I

4.2.2 Les Segments et leurs composants


I

Vues contenant des informations sur les Tablespaces et les fichiers


Vues lies aux extensions : User_extents, dba_extents Vues lies aux Segments : User_segments, dba_segments, v$sort_segment Vues lies aux espaces libres dans les fichiers : user_free_space, dba_free_space vues lies aux utilisateurs : dba_users, v$sort_user vues lies aux quotas : dba_ts_quotas vues lies au tablespaces : user_tablespaces, dba_tablespaces, v$tablespace vues lies aux fichiers permanents ou temporaires : dba_data_files, v$datafiles, v$tempfile, dba_temp_files, v$temp_extent_map, v$temp_extent_pool

Objets du schma
Le nom d'un schma quivaut celui d'un utilisateur les objets suivants appartiennent un schma : les tables, les vues, les squences, les synonymes, les indexes, les procdures, les fonctions, les packages, les snapshots, les index, les contraintes, les clusters, les database links, les triggers, les types, des segments sont associs aux objets du schma. On distingue :
des segments de donnes (TABLES, CLUSTERS) des segments d'index (INDEX) des segments temporaires des segments ROLLBACK le segment de dmarrage (contient le dictionnaire)

Page 125

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 126

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.2 Les Segments et leurs composants


I

4.2.2 Les Segments et leurs composants


I

Objets du schma (suite)


un segment est un ensemble dextensions une extension est un ensemble de blocs contigus les paramtres de stockage donnes et les paramtres de dimensionnement des blocs de donnes permettent de contrler l'allocation d'espaces un segment.

Le bloc
un bloc est la plus petite unit de stockage et d'change la taille dun bloc Oracle dpend de l'OS (2K, 4K, 8K, 16K, 32K) un bloc comprend une entte et une zone pour stocker les enregistrements les paramtres suivants permettent de contrler la taille d'un bloc en insertion ou en mise jour :
PCTFREE : 10 % par dfaut, rserve l'espace pour les mises jour, permet un meilleur remplissage en insertion, ... PCTUSED : 40% par dfaut, lorsqu'un bloc est plein, les insertions ne peuvent y reprendre que si PCTUSED <= 40% INITRANS : Nombre de transactions pr-alloues pouvant tre actives dans un bloc, par dfaut 1 pour un segment de table et 2 pour un d'index ou de cluster.

Page 127

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 128

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.2 Les Segments et leurs composants


I

4.2.2 Les Segments et leurs composants


I

Le bloc
Format d'un bloc (table, index, cluster)
Partie fixe et Partie variable : de 84 107 octets Rpertoire des tables = tables ayant des lignes dans le bloc rpertoire des lignes = adresse des lignes dans le bloc E N T E T E

Le bloc
Pour les tablespaces locaux dont lespace dans les segments est gr automatiquement, les blocs libres sont identifis via les bitmaps. PCTUSED, FREELIST, GROUP LIST ne sont pas utiliss
CREATE TABLESPACE tslocaluniformauto DATAFILE D:\oracle\oradata\dbtp92\TSLOCAL\ts_local_unif3.dbf SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 200K SEGMENT SPACE MANAGEMENT AUTO; NOTE : loption par dfaut est SEGMENT SPACE MANAGEMENT MANUAL;

Espace libre pour les modifications PCTFREE (10% par dfaut)

A J O U T

Espace de donnes

S U P P R E S S I O N

PCTUSED (40% par dfaut)

Dou vient la diffrence de 23 octets dans l'entte ? Page 129 Copyright G. Mopolo-Mok Administration Oracle 10G Page 130 Copyright G. Mopolo-Mok Administration Oracle 10G

4.2.2 Les Segments et leurs composants


I

4.2.2 Les Segments et leurs composants


I

Une extension
Ensemble de blocs contigus appartenant un segment est allou soit statiquement ( la cration de la table) soit dynamiquement

Une extension
Les paramtres de stockage permettent de contrler le nombre d'extensions pour un segment le nombre maximum dextensions allouables un segment dpend de la taille du bloc (jusqu' Oracle 7.2). Il peut maintenant tre illimit. mode dallocation des extensions DICTIONARY
1.1 Oracle recherche les blocs contigus quivalents la demande 1. 2 Si pas trouv, Oracle recherche les blocs contigus > ou = la demande 1.3 si pas trouv, Oracle regroupe les blocs libres proches dans le tablespace (SMON) 1.4 si pas trouv, erreur.

Entte du Segment

Extension 1

Extension 2

2. si trouv, Oracle alloue l'extension 3. Oracle met jour l'entte du segment et le dictionnaire de donnes si ncessaire
Page 132 Copyright G. Mopolo-Mok Administration Oracle 10G

Extension N

Page 131

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.2 Les Segments et leurs composants


I

4.2.2 Les Segments et leurs composants


I

Les types de donnes Oracle


La cration d'une table ou d'un cluster, ... ncessite la connaissance du volume de la table ou du cluster Les types entre autre permettent dvaluer la taille d'une table ou d'un cluster Type de donnes char(taille) varchar2(size) number(p,s) date LONG BLOB CLOB BFILE RAW(size) LONG RAW ROWID MLSLABEL REF Description taille fixe taille variable taille variable taille fixe taille Variable taille Variable taille Variable taille variable taille variable Binaire trusted Oracle taille fixe Longueur 1 255 bytes 1 2000 bytes 21bytes max 7 bytes 2Go 4Go 4Go jusqu' 255 bytes 2Go 6 bytes 2 5 bytes 42 octets

Les types de segments : rcapitulatif


Les segments de donnes :
Segments de donnes de type table segments de donnes de type cluster

Les segments d'index (index Btree, bitmap, Table Oraganis dans un Index) les segments temporaires les segments rollback ou d'annulation

Page 133

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 134

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.2 Les Segments et leurs composants


I

4.2.3 Les Segments de donnes de type table


I

Les segments de donnes


Ce sont des segments de type table et cluster(index ou hach) Permettent de rpartir les donnes d'une table ou d'un cluster dans les fichiers du tablespace Seront tudis selon les points de vues suivants :
cration du segment modification du segment suppression du segment dimensionnement du segment

cration du segment

{Relational_table_clause | Object_table_clause} Relational_table_clause :: = CREATE [GLOBAL TEMPORARY] TABLE [ schema. ] table ( { column datatype [ DEFAULT expr ] [ column_constraint ] ... | table_constraint } ...) [ [ PCTFREE integer ] [ PCTUSED integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ TABLESPACE tablespace ] [ STORAGE ( [ INITIAL integer [ K | M ] ] [ NEXT integer [ K | M ] ] [ PCTINCREASE integer ] [ MINEXTENTS integer ] [ MAXEXTENTS integer ] [ FREELIST GROUPS integer ] [ FREELIST integer ] ) ] | [ CLUSTER cluster (column [, column ] ... ) ] ] [ ENABLE enable_clause | DISABLE disable_clause ] ... [ AS subquery ] [Large_Object_clause] [Partition_clause] [ORGANIZATION {HEAP segment_attr_clause | INDEX segment_attr_clause | EXTERNAL ext_clause } ] NOTES : 1. Un segment de type table est cr de faon implicite lors de la cration de la table. 2. Les tables objets, les partitions, les LOB sont traits dans un autre cours

Page 135

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 136

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.3 Les Segments de donnes de type table


I

4.2.3 Les Segments de donnes de type table


I

Cration du segment (suite)


description nom/type/contrainte niveau colonne contrainte au niveau colonne clause de dfinition des paramtres de stockage clause d'activation des contraintes clause de dsactivation des contraintes Espace libre pour les modifications Seuil au dessous duquel les insertions sont nouveau autorises Nbre d'entre de transactions rserve la cration d'un bloc(1 par dfaut) Nbre de transaction max pouvant tre actives dans un bloc Nbre de Listes de blocs utilisable en insertion Nbre de groupes de listes de blocs utilisable en insertion (option parallle) Clause pour localisation des objets volumineux Clause pour le partitonnement des tables Table orgnise dans un index Table orgnise sans ordre particulier. Valeur par dfaut Table orgnise dans un fichier en dehors dOracle. Administration Oracle 10G

Cration d'un segment (suite)

Elment de la clause dclaration_colonne column_constraint storage_clause enable_clause disable_clause PCTFREE PCTUSED INTITRANS MAXTRANS FREELISTS FREELISTS GROUP Large_object_clause Partition_Clause ORGANIZATION index ORGANIZATION heap ORGANIZATION external

Exemple dun segment gr dans le dictionnaire:


CREATE TABLE scott.emp ( empno NUMBER CONSTRAINT pk_emp PRIMARY KEY, ename VARCHAR2(10) CONSTRAINT nn_ename NOT NULL CONSTRAINT upper_ename CHECK (ename = UPPER(ename)), job VARCHAR2(9), mgr NUMBER CONSTRAINT fk_mgr REFERENCES scott.emp(empno), hiredate DATE DEFAULT SYSDATE, sal NUMBER(10,2) CONSTRAINT ck_sal CHECK (sal > 500), comm NUMBER(9,0) DEFAULT NULL, deptno NUMBER(2) CONSTRAINT nn_deptno NOT NULL CONSTRAINT fk_deptno REFERENCES scott.dept(deptno) ) PCTFREE 5 PCTUSED 75 STORAGE(initial 100K next 50K minextents 3 maxextents 5 pctincrease 50) TABLESPACE TS_USERS EXTENT MANAGEMENT DICTIONARY;

Page 137

Copyright G. Mopolo-Mok

Page 138

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.3 Les Segments de donnes de type table


I

4.2.3 Les Segments de donnes de type table


I

Cration d'un segment (suite)

Modification du segment

Exemple (suite) :
Extensions allouables au segment de la table scott.emp
Nr. Extension 1 (initial/min 1) 2 ( min 2) 3 (min 3) 4 5 Taille extension 100K 50K 75K 112,5K 168,75 Valeur de lextension suivante 50K 75K=1,5*50K 112,5K=1,5*75K 168,75=1,5*112,5K 253,125=1,5*168,75K

ALTER TABLE [ schema.] table [ ADD {column datatype [ DEFAULT EXPR ] [ column_constraint ] ... | table_constraint }] [ MODIFY { column [ datatype ] [ DEFAULT EXPR ] [ column_constraint ] ...}] [ PCTFREE integer ] [ PCTUSED integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ STORAGE storage_clause ] [ DROP drop_clause ] ... [ ALLOCATE EXTENT [ ( [ SIZE integer [ K | M ] ] [ DATAFILE filename ] [ INSTANCE integer ] ) ] {[ ENABLE enable_clause | DISABLE disable_clause ] ...}

Page 139

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 140

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.3 Les Segments de donnes de type table


I

4.2.3 Les Segments de donnes de type table


I

Modification dun segment (suite)


Description Ajout dune colonne ou dune contrainte niveau table modification dune colonne clause de dfinition des paramtres de stockage clause d'activation des contraintes clause de dsactivation des contraintes Espace libre pour les modifications Seuil au dessous duquel les insertions sont nouveau autorises Nbre d'entre de transactions rserve la cration d'un bloc(1 par dfaut) Nbre de transaction max pouvant tre actives dans un bloc Nbre de Listes de blocs utilisable en insertion Nbre de groupes de listes de blocs utilisable en insertion (option parallle) (sert distribuer une grande table sur plusieurs fichiers)

Modification dun segment (suite)

clause add_clause modify_clause storage_clause enable_clause disable_clause PCTFREE PCTUSED INTITRANS MAXTRANS FREELISTS FREELISTS GROUP

Exemple ALTER TABLE scott.emp STORAGE( NEXT 300K MAXEXTENT 10 PCTINCREASE 10) ALLOCATE EXTENT (SIZE 400K DATAFILE user_data1.dbf) ;

Pourquoi nest -t -il pas possible de modifier INITIAL et MINIEXTENTS ? Quels sont les diffrentes exploitations possibles de la clause ALLOCATE EXTENT ?

ALLOCATE EXTENT Allocation explicite d'une extension dans un fichier donn drop_clause Clause de suppression d'une contrainte d'intgrit

Page 141

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 142

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.3 Les Segments de donnes de type table


I

4.2.3 Les Segments de donnes de type table


I

suppression dun segment


trois approches pour supprimer les donnes d'un segment :
DROP TABLE : supprime les donnes et le segment DROP TABLE [ schema. ] table [ CASCADE CONSTRAINTS ] TRUNCATE TABLE : supprime les donnes et libre la demande l'espace allou au segment TRUNCATE { TABLE [ schema. ] table | CLUSTER [ schema. ] CLUSTER } [ { DROP | REUSE } STORAGE ] DELETE FROM : supprime toutes les donnes d'une table mais l'espace allou au segment est conserv.

suppression du segment (suite)


Avantages Inconvnients Supprime les index les contraintes Pas de retour arrire

Drop table

Lorsque lon ne veut plus de la table

truncate table

pas de RBS conservation des Contraintes, triggers, grant pas d'excution de trigger, gel des Contraintes

delete from

un rollback reste possible

l'utilisation du RBS peut tre trs long

Page 143

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 144

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.3 Les Segments de donnes de type table


I

4.2.4 Les Segments de donnes de type cluster


I

dimensionnement du segment

Gnralits
un cluster permet de stocker dans un mme bloc les donnes de 2 ou plusieurs tables Favorise certains chemins d'accs (jointure physique)

Voir Annexe A10

un cluster peut tre index ou hash


Cluster Cl cluster (deptno) 10 dname loc -------- ---sales Boston empno -------7067 7056 ename ------Jones James Table emp empno ename -------- ------7067 Jones 7056 James ... table dept deptno dname loc -------- -------- ---10 sales Boston 20 Info St Louis ...

20 dname loc -------- ---...

Page 145

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 146

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.4 Les Segments de donnes de type cluster


I

4.2.4 Les Segments de donnes de type cluster


I

cration d'un segment de cluster


(column datatype [,column datatype] ...) [PCTUSED integer] [ PCTFREE integer] [SIZE integer][K | M] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORAGE storage_clause] [INDEX] [[HASH IS colonne] HASHKEYS integer]

cration d'un segment de cluster (suite)


Exemple de cration d'un cluster index a) create cluster cluster_emp_dept (deptno number(4)) pctused 80 pctfree 20 size 600 tablespace student95 storage ( initial 200K next 300K minextents 2 maxextents 20 pctincrease 33)); b) create table emp(...) cluster cluster_emp_dept (deptno); create table dept(...) cluster cluster_emp_dept (deptno); c) create index idx_emp_dept on cluster cluster_emp_dept ;

CREATE CLUSTER [schma.]cluster_name

clause SIZE HASH IS HASHKEYS

Description taille d'un bloc logique pour le cluster Colonne qui joue le rle de fonction de hashage Nombre de valeurs de cls

Exemple de cration d'un cluster hach a) create cluster cluster_dept_emp (deptno number(3)) SIZE 2K HASHKEYS 1000; b) create table dept (deptno number(3), ...) CLUSTER cluster_dept_emp;

Page 147

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 148

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.4 Les Segments de donnes de type cluster


I

4.2.4 Les Segments de donnes de type cluster


I

Modification dun segment de cluster


ALTER CLUSTER [schema.]cluster [PCTUSED integer] [PCTFREE integer] [SIZE integer [K | M] ] [INITRANS integer] [MAXTRANS integer] [STORAGE storage_clause ] [ALLOCATE EXTENT [ ( [size integer [K|M] ] [DATAFI LEfilename] [INSTANCE integer ]

suppression du segment de type cluster


a) suppression du segment de type cluster DROP CLUSTER [ schema. ] cluster [ INCLUDING TABLES [ CASCADE CONSTRAINTS ] ] Exemple: drop cluster cluster_dept_emp including tables ; b) suppression du contenu dun cluster TRUNCATE { TABLE [ schema. ] table | CLUSTER [ schema. ] CLUSTER } [ { DROP | REUSE } STORAGE ] Exemple : TRUNCATE CLUSTER cluster_dept_emp DROP STORAGE ;

Page 149

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 150

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.4 Les Segments de donnes de type cluster


I

4.2.5 Les Segments dindex


I

dimensionnement du segment

Gnralits
Acclrateur de requte peut tre unique ou non unique peut tre cr explicitement ou implicitement (depuis Oracle7) sa structure interne est un arbre balanc (B-arbre)
Un B-arbre

Voir Annexe A10

BLOC DINDEX RACINE BLOC DINDEX INTERMEDIAIRE

BLOC DINDEX INTERMEDIAIRE

Bloc dindex feuille

Bloc dindex feuille

Bloc dindex feuille

Bloc dindex feuille

Est - t - il possible de contrler la localisation d'un index implicite ? Quels sont les conditions de choix d'un bon Index ?

Page 151

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 152

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.5 Les Segments dindex


I

4.2.5 Les Segments dindex


I

Le segment dindex
Gnralits (suite)
King

cration d'un segment d'index


CREATE {BITMAP | INDEX } [ schema. ] index ON { [ schema. ] table ( column [ ASC | DESC ] [, column [ ASC | DESC ] ] ...] | CLUSTER [ schema. ] cluster } [ INITRANS integer ] [ MAXTRANS integer ]

Blake

James

Miller

Simonth Simonth Smith

[ TABLESPACE tablespace ] [ STORAGE storage_clause ] [ PCTFREE integer ] [ NOSORT ] [REVERSE]

James Blake Adams Allen Clark

Jones Miller Ford King Martin Scott

[PARTITION clause_de_partionnement]

Notes : A chaque feuille on trouve : la valeur cl et le ROWID (index unique) ou la liste des ROWID (Index non unique). Par exemple ADAMS '00000012.0002.0002 '.

Modification du segment
ALTER INDEX [ schema. jindex [ INITRANS integer ] [MAXTRANS integer ] [ STORAGE storage_ clause ]

Suppression du segment
DROP INDEX [ schema.] index

Page 153

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 154

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.6 Les Segments temporaires


I

4.2.6 Les Segments temporaires


I

Gnralits
Oracle cr automatiquement ces segments si la zone de tri (paramtre SORT_AREA_SIZE) s'avre petite plusieurs Ordres SQL provoquent des tris : Group by, Ordrer by, Oprateurs ensemblistes, Distinct, Merge join, ...

Exemple 1 : Cration dun tablespace pour stocker les donnes temporaires (tri)
CREATE TABLESPACE temp_ts DATAFILE ts_temp_01.dbf SIZE 20M TEMPORARY AUTOEXTEND ON;

pour augmenter les performances, il est utile de les sparer des segments de donnes C'est la cration d'un Utilisateur Oracle qu'on lui indique son segment temporaire. Il est maintenant possible depuis la 7.3 de crer un tablespace temporaire pour requtes ncessitant les tris

Exemple 2 : Cration d'un tablespace temporaire (pour stocker les tables temporaires voir les donnes de tri)
SQL>CREATE TEMPORARY TABLESPACE temp_tab_ts TEMPFILE ts_temp_tab01.dbf SIZE 20M AUTOEXTEND ON;

Page 155

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 156

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.6 Les Segments temporaires


I

4.2.7 Les Segments rollback manuels ou automatique


I

Exemple 3: Cration d'une table temporaire de session (ligne supprime la fin de la session) CREATE GLOBAL TEMPORARY TABLE itineraire_vol ( startdate DATE, enddate DATE, cost NUMBER) ON COMMIT PRESERVE ROWS TABLESPACE temp_tab_ts ;

Gnralits

un RBS contient ltat avant des transactions en cours

il permet d'effectuer des Lectures consistantes, d'annuler les transactions et de recouvrer la base de donnes. une entre Rollback contient les informations sur le fichier Rollback, le numro du bloc et l'tat avant les entres rollback sont stockes aussi dans le buffer redo log puis dans le fichier Redo Log En cas de crash, Oracle restaure d'abord les RBS En cas de problme, Oracle annule les transactions non commites une extension dun RBS peut contenir les blocs de N transactions : les blocs rollback d'une transaction sont chans. Depuis la version 9i deux approches de cration de RBS existent : cration manuelle ou automatique (Tablespace dAnnulation : TSA)

Page 157

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 158

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback manuels ou automatique


I

4.2.7 Les Segments rollback manuels ou automatique


I

Cration d'un RBS manuel

Modification dun RBS manuel


Il est possible d'activer ou dsactiver un RBS et de modifier ses paramtres de stockage un Rollback segment actif ne peut tre mis OFFLINE
Syntaxe ALTER ROLLBACK SEGMENT rollback_ segment { ONLINE | OFFLINE | STORAGE storage_clause } Exemple ALTER ROLLBACK SEGMENT r5 ONLINE ;

Syntaxe CREATE [ PUBLIC ] ROLLBACK SEGMENT rollback_segment [ TABLESPACE tablespace ] [ STORAGE ( [ OPTIMAL Exemple CREATE PUBLIC ROLLBACK SEGMENT r5 TABLESPACE ts_rbs STORAGE (INITIAL 100K MINEXTENTS 3 MAXEXTENTS 10 NEXT 100K OPTIMAL 400K ) ; PUBLIC : segment accessible par toutes les instances dune mme base OPTIMAL : Taille optimale du RBS obtenue par Oracle par dsallocation dynamique
NOTE :

storage_clause integer [ K | M ] | NULL ] )

par dfaut un RBS cr est inactif Copyright G. Mopolo-Mok Administration Oracle 10G Page 160 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 159

4.2.7 Les Segments rollback manuels ou automatique


I

4.2.7 Les Segments rollback manuels ou automatique


I

Suppression dun RBS manuel


Un segment avec des transactions actives ne peut tre supprim il est utile de sparer les segments RBS des segments de donnes Le RBS SYSTEM ne peut tre ni arrt ni supprim.

Allocation et libration d'extensions dans un RBS


Un RBS doit avoir au moins 2 extensions un bloc d'une extension est affect une et une seule transaction Rgles d'allocation d'espace une transaction
dans l'extension courante tant qu'il y a de la place dans l'extension suivante ayant de la place si l'extension courante est pleine (allocation cyclique) dans une nouvelle extension dynamiquement alloue si les extensions dj alloues sont pleines

Syntaxe DROP ROLLBACK SEGMENT robllack_segment Exemple DROP ROLLBACK SEGMENT r5;

Reprsentation schmatique
E1 E2 E3

NOTE : Page 161 Copyright G. Mopolo-Mok Administration Oracle 10G Page 162

Le paramtre OPTIMAL permet de dsallouer dynamiquement une extension dun RBS manuel Copyright G. Mopolo-Mok Administration Oracle 10G

4.2.7 Les Segments rollback manuels ou automatique


I

4.2.7 Les Segments rollback manuels ou automatique


I

Assignation implicite dune transaction RBS


Le commencement d'une transaction entrane son assignation un RBS actif la rgle d'assignation implicite d'une transaction est celle de la rpartition quitable des charges entre RBS
RBS 1 T1 T4 T7 RBS 2 T2 T5 T8 RBS 3 T3 T6 T9 ?

Activation et Estimation du nombre de RBS manuels


Les paramtres de init.ora
TRANSACTIONS : Nombres maximum de transactions concurrentes(par dfaut 1.1 * SESSIONS) TRANSACTION_PER_ROLLBACK_SEGMENT : Nombre de transactions par Rollback segment (30 par dfaut)

Activation automatique des RBS manuels


I

Assignation explicite dune transaction RBS manuel


une transaction peut tre oriente vers un RBS cr manuellement particulier SET TRANSACTION USE ROLLBACK SEGMENT nom_rollback_segment ;

Nombre de Transactions actives = CEIL(Transaction / Transaction_per_rollback_segment)

Activation explicite des RBS (paramtre ROLLBACK_SEGMENTS dans le fichier d'initialisation init.ora ou par une commande SQL)
ROLLBACK_SEGMENTS=(r1, r2, r3, r4) sql>ALTER ROLLBACK SEGMENT r1 ONLINE ;
Page 164 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 163

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback manuels ou automatique


I

4.2.7 Les Segments rollback manuels ou automatique


I

Estimation du nombre de RBS manuels

Etats dun RBS

N transactions simultanes n <= 16 16<= n <= 32 32 <= n

Nombre de RBS utiles 4 8 nb= n / 4 avec nb < 50

OFFLINE

RBS supprim donnes recouvres avec succs RBS RBS mis online mis offline

INVALID

ONLINE Transaction distribue rsolue transaction en suspend rsolue PB rseaux transaction suspendue

RBS Supprim

Erreur de support physique ou corruption RBS ncessite un recouvrement

RBS Partiellement Disponible

Erreur de support physique ou corruption

Page 165

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 166

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback manuels ou automatique


I

4.2.7 Les Segments rollback manuels ou automatique


I

Visualisation des RBS


Les vues suivantes contiennent les informations sur les ROLLBACK SEGMENT
dba_rollback_segs, dba_segments, user_segments v$waitstat, v$sysstat v$rollname, v$transaction, v$session, v$rollstat (servent aussi au dimensionnement)

Visualisation des RBS (suite)

b) Affichage des informations sur les RBS partir de la vue dba_segments SELECT segment_name, tablespace_name, bytes, blocks, extents FROM dba_segments WHERE segment_type = ROLLBACK;
SEGMENT_NAME TABLESPACE_NAME BYTES BLOCKS EXTENTS

SYSTEM RB_TEMP RB1 RB2 RB3 RB4

SYSTEM SYSTEM ROLLBACK_DATA ROLLBACK_DATA ROLLBACK_DATA ROLLBACK_DATA

204800 1484800 102400 102400 102400 102400

100 725 50 50 50 50

4 15 2 2 2 2

Exemples :
a) Informations sur les RBS SELECT segment_name, tablespace_name, status FROM sys.dba_rollback_segs ; SELECT segment_name, status FROM dba_rollback_segs; SEGMENT_NAME SYSTEM RB_TEMP RB1 RB2 RB3 RB4 Page 167 TABLESPACE_NAME SYSTEM SYSTEM ROLLBACK_DATA ROLLBACK_DATA ROLLBACK_DATA ROLLBACK_DATA STATUS ONLINE OFFLINE ONLINE ONLINE ONLINE ONLINE

c) Transaction actives dans les RBS SELECT distinct name, xacts "Transactions actives" FROM v$rollname vr, v$rollstat vs WHERE vs.usn = vr.usn and xacts != 0; NAME RB1 Transactions actives 1

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 168

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback manuels ou automatique


I

4.2.7 Les Segments rollback manuels ou automatique


I

Contention sur les RBS

Les Tablespaces dAnnulations (TSA)


Gnralits
Tablespace destines ne contenir que des donnes dannulations. On peut crer crer plusieurs TSA, mais un et un seul sera associ une instance Des RBS sont crs implicitement lors de la cration dun TSA La gestion des segments dannulation peut maintenant tre manuelle ou automatique (voir init.ora). UNDO_MANAGEMENT = AUTO | MANUAL MANUAL indique que vous devez vous mme crs vos ROLLBACK SEGMENTS

La requte suivante permet d'accder aux statistiques : sql> SELECT class, count FROM v$waitstat WHERE class IN ('system undo header', 'system undo block', 'undo header', 'undo blocs'); class System undo header system undo block undo header undo block count 2089 633 1235 942

Calculer le nombre de demandes de buffers sql>SELECT sum(value) "Buffers demands" FROM v$sysstat WHERE name in ('db block gets', 'Consistent Gets'); Buffers demands 929530 Ratio par class ci = classi / sum(value) Si le ratio est > 1% alors ajouter des RBS
Page 169 Copyright G. Mopolo-Mok Administration Oracle 10G Page 170

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.8 Les Segments rollback automatiques


I

4.2.8 Les Segments rollback automatiques


I

Les tablespaces dAnnulations (TSA)


Cration dun TSA
A la cration de la base CREATE DATABASE DBGM CONTROLFILE REUSE ... UNDO TABLESPACE undotbs_01 DATAFILE 'c:\oracle\ora9data\dbgm\tsundo1\undo0101.dbf size 10M AUTOEXTEND ON Explicitement aprs la cration de la base CREATE UNDO TABLESPACE undotbs_02 DATAFILE 'c:\oracle\ora9data\dbgm\tsundo2\undo0201.dbf size 10M AUTOEXTEND ON

Les tablespaces dAnnulations (TSA)


Modification dun TSA
ALTER TABLESPACE undotbs_02 ADD DATAFILE c:\oracle\ora9data\dbgm\tsundo2\undo0202.dbf size 100M AUTOEXTEND ON MAXSIZE UNLIMITED

Assignation dun nouveau TSA


a) Dans init.ora UNDO_TABLESPACE = undotbs_02 UNDO_MANAGEMENT = AUTO b) Dynamiquement ALTER SYSTEM SET UNDO_TABLESPACE = undotbs_02;

Suppression dun TSA


DROP TABLESPACE undotbs_02 ;

Fixer la priode de rtention des donnes dans un TSA


a) Dans init.ora UNDO_RETENTION = 100 (en seconde) b) Dynamiquement ALTER SYSTEM SET UNDO_RETENTION = 100;

Page 171

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 172

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.8 Les Segments rollback automatiques


I

5. Gestion de la scurit et des ressources


I

Les tablespaces dAnnulations (TSA)


Vues contenant des informations sur les TSA
V$UNDOSTAT : Contains statistics for monitoring and tuning undo space. V$ROLLSTAT For automatic undo management mode, information reflects behavior of the undo segments in the undo tablespace V$TRANSACTION Contains undo segment information DBA_UNDO_EXTENTS : Shows the commit time for each extent in the undo tablespace.

Plan
5.1 Gnralits 5.2 Les Privilges
Introduction Les privilges Systmes Les privilges Objets

5.3 Les rles


Intrts des rles Cration et suppression des rles Affectation des privilges ou des rles un rle Scurit des rles Les rles du Systme d'exploitation Les rles prdfinis

5.4 Les profiles



Page 173 Copyright G. Mopolo-Mok Administration Oracle 10G Page 174

Intrt des profiles Cration , Suppression et Modification de profiles Utilisation des limites composites Affectation d'un profile un utilisateur
Copyright G. Mopolo-Mok Administration Oracle 10G

5. Gestion de la scurit et des ressources


I

5.1 Gnralits
I

PLAN
5.5 Les utilisateurs
La politique de licences d'Oracle Les Utilisateurs prdfinis Les diffrents mode d'authentification Cration d'un Utilisateur Modification d'un Utilisateur Suppression d'un Utilisateur Affectation des droits un Utilisateur

Rle de l'Administrateur de scurit et des ressources


Dfinir une politique de scurit Faire les choix du type de scurit : au niveau systme, au niveau Oracle, au niveau Global (LDAP) Grer les utilisateurs Grer les ressources (profiles) Assurer laffectation et le retrait des droits Affiner la politique de scurit par l'utilisation des rles Effectuer les audits

5.6 L'audit
Intrt de l'audit Types d'audit et modes d'activation Audit Systme Audit objet La table aud$

Page 175

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 176

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.1 Gnralits
I

5.2 Les Privilges


I

Moyens pour la Gestion de la scurit

Intrtoduction
Un privilge donne le droit d'excuter certaines commandes SQL ou le droit d'accder certaines ressources

PRIVILEGES (Systmes et Objets) et ROLES

PROFILES

Oracle possde deux types de privilges : les privilges systmes et les privilges objets.

Droits daccs aux tablespaces (quotas, TS temporaire, TS par dfaut)

UTILISATEURS

Un privilge peut tre affect (retir) un Utilisateur, un Rle ou tous les utilisateurs (PUBLIC)

AUDIT LES VUES

Page 177

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 178

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.2 Les privilges


I

5.2 Les privilges


I

Les privilges Systmes


Oracle possde prs de 127 privilges Systmes (la V6 en avait 3 : Connect, resource, dba) Les privilges donnent le droit de raliser des oprations systmes Ces privilges sont classs par catgories d'objets ANALYZE CLUSTER DATABASE DIMENSION INDEXTYPE MATERIALIZED VIEW OPERATOR PRIVILEGE PROFILE PUBLIC SYNONYM ROLLBACK SEGMENT SEQUENCE SYNONYM TABLE TRANSACTION TYPE VIEW AUDIT CONTEXT DATABASE LINK INDEX LIBRARY MISCELLANEOUS OUTLINE PROCEDURE Public Database Link ROLE SESSION SNAPSHOT SYSTEM TABLESPACE TRIGGER USER

Les privilges systmes (suite)


Exemple de privilges systmes de la catgorie TABLE: CREATE TABLE ALTER ANY TABLE DROP ANY TABLE LOCK ANY TABLE INSERT ANY TABLE DELETE ANY TABLE UNDER ANY TABLE CREATE ANY TABLE BACKUP ANY TABLE LOCK ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE
COMMENT ANY TABLE

Affectation dun privilge Systme


GRANT { system_priv | role } TO { user | role | PUBLIC } [ WITH ADMIN OPTION ]
System_priv role With Admin Option : nom dun privilge systme : Nom d'un rle : le rle pourra tre redistribu par celui qui le reoit Administration Oracle 10G

NOTE : Voir lAnnexe A6 pour obtenir la liste complte des privilges

user, role ou PUBLIC : droit affect un utilisateur, un rle ou public

Page 179

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 180

Copyright G. Mopolo-Mok

5.2 Les privilges


I

5.2 Les privilges


I

Les privilges systmes (suite)


Affectation des privilges systmes (suite)
L'affectation d'un privilge avec l'option "WITH ADMIN OPTION" suit les rgles suivantes :
Celui qui reoit le droit peut le redistribuer Son retrait un utilisateur qui lui-mme l'a affect un autre ne peut se faire en cascade ne peut tre affect un ROLE

Les Privilges Systmes (suite)


Rvocation d'un privilge Systme
Syntaxe REVOKE { system_priv | role } FROM { user | role | PUBLIC } Exemple : REVOKE ALTER ANY TABLE FROM PUBLIC ; REVOKE CREATE SESSION FROM SCOTT ;

Exemple GRANT ALTER TABLESPACE TO scott ; GRANT CREATE USER, CREATE SESSION TO scott WITH ADMIN OPTION ; GRANT ALTER ANY TABLE TO PUBLIC ;

Les vues du dictionnaire SELECT * FROM DBA_SYS_PRIVS ORDER BY grantee, privilege ;


GRANTEE CONNECT CONNECT PRIVILEGE ALTER SESSION CREATE CLUSTER ADM NO NO

NOTE : Supposant quun utilisateur U1 attribut un privilge P1 "WITH ADMIN OPTION" un utilisateur U2 et que U2 l'attribut son tour U3. La rvocation de P1 U2 n'entrane pas la rvocation de P1 U3. Page 181 Copyright G. Mopolo-Mok Administration Oracle 10G Page 182 Copyright G. Mopolo-Mok Administration Oracle 10G

5.2 Les privilges


I

5.2 Les privilges


I

Les privilges Objets


Ces privilges contrlent l'accs aux objets des tables, vues, squences, procdures, fonctions et packages, vue matrialise (VM) .... Classification selon les types d'objets

Les privilges Objets


Classification selon les types d'objets
Libell droit de rfrencer une table lors d'un alter ou create table (ne peut tre affect un rle) droit de lire dans une directory droit de consulter droit de mise jour droit de crer des sous vue Objets concerns table

Privilges objets REFERENCES

Privilges objets ALTER DELETE EXECUTE

Libell droit de modifier droit de supprimer droit dexcuter

Objets concerns table, squence table , vue, VM procdure, fonction, package,type user, oprateur, indextype, library table table, vue,VM

READ SELECT UPDATE UNDER WRITE

directory table, vue, snapshot, sequence table ou vue vue, type user

INDEX INSERT

droit de crer un index (ne peut tre affect un rle) droit dinsrer

droit dcrire dans une directory directory

ON COMMIT REFRESH droit de crer une vue matriali- table s ON COMMIT REFRESH sur une table QUERY REWRITE droit de crer une vue matrialis QUERY REWRITE sur une table table
Page 183 Copyright G. Mopolo-Mok Administration Oracle 10G Page 184 Copyright G. Mopolo-Mok Administration Oracle 10G

5.2 Les privilges


I

5.2 Les privilges


I

Les privilges Objets (suite)


Affectation de privilges objets
Syntaxe GRANT { object_priv | ALL [ PRIVILEGES ] } [( column [,column ] ...) ] [, { object_priv | ALL [ PRIVILEGES ] } [ ( column [,column] ...) ] ] ON [ schema.] object TO { user | role | PUBLIC } [ WITH GRANT OPTION ] Notes : ALL : nest pas un privilge mais signifie "tous les privilges sur un objet" object_priv: Nom du privilge column : Nom d'une colonne si object_priv= insert, update ou references schema.objet : Nom de l'objet concern With Grant Option: L'utilisateur qui reoit le privilge peut le raffecter. Exemple sql> GRANT INSERT (ename, job) ON emp TO scott with grant option ; sql> GRANT UPDATE (SAL), DELETE ON emp TO scott ; sql> GRANT REFERENCES, UPDATE ON bonus TO dupont ; sq>GRANT SELECT ON emp to dupond;

Les privilges Objets (suite)


Rvocation de privilges objets

Syntaxe REVOKE { object_priv | ALL [ PRIVILEGES ] } ON [ schema. ] object FROM { user | role | PUBLIC } [CASCADE CONSTRAINTS ] Notes CASCADE CONSTRAINTS : semploie avec le privilge REFERENCES, supprime les contraintes d'intgrit mises. Retrait dun privilge et WITH GRANT OPTION: Si un utilisateur U1 a affect un privilge P1 U2 et U2 l'a affect U3, le retrait U2 entrane le retrait U3 : le retrait se fait en cascade. Exemples sql>REVOKE DELETE ON Bonus FROM scott ; sql>REVOKE UPDATE ON emp FROM public; sql>REVOKE REFERENCES ON scott.emp FROM dupont ; sql>REVOKE ALL ON bonus FROM PUBLIC ;

Page 185

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 186

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.2 Les privilges


I

5.2 Les privilges


I

Les privilges Objets (suite)


Visualisation des privilges objets
DBA_TAB_PRIVS ALL_TAB_PRIVS USER_TAB_PRIVS All_TAB_PRIVS_MADE USER_TAB_PRIVS_MADE USER_TAB_PRIVS_MADE ALL_TAB_PRIVS_RECD USER_TAB_PRIVS_RECD TABLE_PRIVILEGES DBA_COL_PRIVS ALL_COL_PRIVS USER_COL_PRIVS DBA_COL_PRIVS ALL_COL_PRIVS_MADE USER_COL_PRIVS_MADE ALL_COL_PRIVS_RECD ALL_COL_PRIVS_RECD COLUMN_PRIVILEGES

Les privilges Objets (suite)


Visualisation des privilges objets
Visualisation de tous les droits sur les objets de la base SELECT * FROM sys.dba_tab_privs WHERE table_name = BONUS OR table_name = EMP; GRANTEE OWNER DUPONT DUPONT DUPONT DUPONT DUPONT DUPONT DUPONT SCOTT SCOTT SCOTT SCOTT SCOTT SCOTT SCOTT TABLE_NAME BONUS BONUS BONUS BONUS BONUS BONUS BONUS GRANTOR SCOTT SCOTT SCOTT SCOTT SCOTT SCOTT SCOTT PRIVILEGE ALTER DELETE INDEX INSERT SELECT UPDATE REFERENCES

Principales Colonnes de vues ci-dessus GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRANT
Page 187

: utilisateur ayant reu le privilge : propritaire de la table : nom de la table : Nom de la colonne concern : Utilisateur ayant affect le privilge : privilge affect : privilge reu.
Administration Oracle 10G

Tous les droits sur toutes les colonnes des tables dans la base SELECT * FROM sys.dba_col_privs ;

Copyright G. Mopolo-Mok

Page 188

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Plan
Gnralits Cration d'un rle Modification d'un rle Suppression d'un rle Affectation de privilges un rle Affectation d'un rle un utilisateur Rles prdfinis Informations sur les rles

Gnralits
Dfinition Un rle est un concept Oracle qui permet de regrouper plusieurs privilges et / ou rles afin de les affecter ou retirer en bloc un utilisateur et / ou un rle. un rle facilite la gestion des privilges l'affectation d'un rle un utilisateur peut se faire sous Oracle ou travers l'OS pour des raisons de scurit, un mot de passe peut tre assign un rle Oracle fournit un certain nombre de rles par dfaut (connect, resource, dba, exp_full_database, imp_full_data_base, select_catalog_role, delete_catalog_role / execute_catalog_role, ) pour crer un rle, il faut avoir le privilge "CREATE ROLE"

Page 189

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 190

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Gnralits (suite)
Assignation de privilges aux utilisateurs : SANS ROLES
Privilge 1 Utilisateur 1

Cration d'un rle


A sa cration, un rle ne contient aucun privilge
Syntaxe
CREATE ROLE role [ { NOT IDENTIFIED | IDENTIFIED { BY password | EXTERNALLY | GLOBALLY | USING package} ]

Privilge 2

Privilge 3

...
Privilge N

Utilisateur 2

Mots cls et paramtres


role NOT IDENTIFIED Password EXTERNALLY GLOBALLY USING package : nom du rle crer : permet de crer un rle sans mot de passe : mot de passe assign au rle : mot de passe est contrl au niveau de l'OS : Rle autoris au niveau de lannuaire : rle applicatif

Assignation de privilges aux utilisateurs : VIA UN ROLE


Privilge 1 Utilisateur 1

Privilge 2 Role 1 Privilge 3

Exemple
sql> CREATE ROLE rl_etudiant ; Utilisateur 2 sql> CREATE ROLE rl_admin_backup; sql> CREATE ROLE rl_admin_secu IDENTIFIED BY secu_pass ;

...
Privilge N Page 191 Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 192

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Modification d'un rle


On peut modifier le niveau de scurit d'un rle privilge requis pour modifier un rle ALTER ANY ROLE.
Syntaxe
ALTER ROLE role { NOT IDENTIFIED | IDENTIFIED { BY password | EXTERNALLY | Globally | USING package} }

Suppression d'un rle


Un rle supprim est retir IMMEDIATEMENT du domaine de scurit de l'utilisateur (connect ou non) ou du rle l'ayant reu Le privilge DROP ANY ROLE et le fait d'avoir acquis un rle avec WITH ADMIN OPTION permettent de le supprimer Syntaxe DROP ROLE role ; Exemple DROP ROLE rl_admin_secu ;

Mots cls et paramtres


role NOT IDENTIFIED Password EXTERNALLY GLOBALLY USING package : nom du rle crer : permet d'inhiber le mot de passe d'un rle : nouveau mot de passe assign au rle : mot de passe contrl au niveau de l'OS : Rle autoris au niveau de lannuaire : rle applicatif

Exemple
sql> ALTER ROLE ROLE rl_etudiant IDENTIFIED EXTERNALLY ; sql> ALTER ROLE rl_admin_backup IDENTIFIED BY backup_pass; sql> ALTER ROLE rl_admin_secu NOT IDENTIFIED; Page 193 Copyright G. Mopolo-Mok Administration Oracle 10G Page 194 Copyright G. Mopolo-Mok Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Affectation de privilges ou de rles un rle


Exemple
Cration de deux rles # rle rassemblant les privilges pour se connecter CREATE ROLE rl_connect ; # rle rassemblant les privilges pour administrer la scurit CREATE ROLE rl_admin_secu ; Affectation des privilges aux rles GRANT create session, alter session, Restricted session TO rl_connect ; GRANT create role, create user, create profile TO rl_admin_secu; Affectation d'un Rle un autre Rle GRANT rl_connect TO rl_admin_secu ;

Affectation de privilges un rle


Privilges ne pouvant tre affects un ROLE
Privilge Systme UNLIMITED TABLESPACE Ce privilge inhibe tous les quotas et autorise l'utilisateur crer des objets dans n'importe quel tablespace. Privilges Objets INDEX # droit de crer un index sur les tables d'autres utilisateurs

REFERENCES # droit de rfrencer une table dans le schma d'autres utilisateurs

Page 195

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 196

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Affectation d'un rle un Utilisateur


Elle peut se faire au niveau :
Oracle du Systme d'Exploitation (OS) De lannuaire de lentreprise

Affectation d'un rle un utilisateur (suite)


Affectation d'un rle au niveau de l'OS
Positionner le paramtre OS_ROLE dans init.ora afin que l'affectation et la rvocation des rles se fassent au niveau de l'OS OS_ROLE = TRUE Dclarer (sous UNIX) dans le fichier de groupe chaque rle comme tant un groupe Syntaxe ora_<SID>_<role>[_[D][A] : [user1, [user2], [ ...]] Avec SID role D A : nom de l'instance : nom du rle : rle par dfaut : WITH ADMIN OPTION

Affectation d'un Rle au niveau Oracle GRANT role to user [WITH ADMIN OPTION] Lutilisateur ayant reu le rle avec WITH ADMIN OPTION peut le raffecter, supprimer ou modifier.

Exemple : ora_COURS_rl_connect_D:scott, mopolo, tintin ora_COURS_rl_admin_secu_DA:mopolo,osmani

Page 197

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 198

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Affectation d'un rle un utilisateur (suite)


NOTES sur laffectation d'un rle partir de l'OS
L'affectation et la rvocation de rles ne se fait plus qu'au niveau de l'OS. Impossible dutiliser lordre GRANT role TO user un rle affect via l'OS peut tre activ ou dsactiv par l'utilisateur avec la commande ALTER USER ... SET ROLE ...; les rles non grs au niveau de l'OS ne peuvent tre activs ou dsactivs mme s'ils avaient ts affects lorsque OS_ROLES tait gal FALSE le paramtre MAX_ENABLED_ROLES limite le nombre de rles pouvant tre activs Si les rles sont grs par l'OS et on est en architecture Multithread, les connexions distantes exploitant ses rles ne seront possibles que si le paramtre de init.ora REMOTE_OS_ROLE=TRUE

Rles prdfinis
PRIVILEGES AFFECTES AU ROLE ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER tous les privilges (annexe A6) WITH ADMIN OPTION SELECT ANY TABLE, BACKUP ANY TABLE, INSERT, DELETE AND UPDATE ON tables SYS.INCVID, SYS.INCFIL, SYS.INCEXP BECOME USER, WRITEDOWN (trusted Oracle) Privilge dexcuter les procdures du dictionnaire Privilge de consulter tout le dictionnaire Oracle Privilge de supprimer la table daudit aud$

NOM DU ROLE CONNECT

RESOURCE

DBA exp_full_database

imp_full_database Execute_catalog_role Select_catalog_role Delete_catalog_role

Recovery_catalog_owner Fournit les privilges pour le propritaire du catalogue de recouvrement Aq_administrator_role Fournit les privilges pour ladministration des Queue Snmpagent Founit les privilges utiles lagent SNMP dentreprise manager

Page 199

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 200

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.3 Les rles


I

Rles prdfinis
. Les rles CONNECT, RESOURCE, DBA correspondent aux anciens

Informations sur les rles


Les vues suivantes contiennent des informations sur les rles : dba_roles, user_role_privs, dba_role_privs role_role_privs, role_sys_privs, role_tab_privs session_roles Exemple 1 : listing de tous les rles de la base sql> SELECT * FROM sys.dba_roles ;
ROLE CONNECT RESOURCE DBA EXP_FULL_DATABASE IMP_FULL_DATABASE MONITORER RL_ADMIN_SECU RL_CONNECT PASSWORD NO NO NO NO NO NO NO NO

NOTES :

privilges systmes sous Oracle V6

. laffectation des rles RESOURCE et DBA un utilisateur entrane un GRANT unlimited tablespace

Page 201

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 202

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles


I

5.4 Les profiles


I

Informations sur les rles (suite)


Exemple 2 : liste des rles affects un role ou un utilisateur. sql>SELECT * FROM sys.dba_role_privs WHERE grantee = 'RL_ADMIN_SECU' ;
GRANTEE RL_ADMIN_SECU GRANTED_ROLE ADM DEF RL_CONNECT NO Default YES

Gnralits
Un profile est un concept Oracle qui permet l'administrateur d'une base de contrler la consommation des ressources systmes et des mots de passes Il existe un profile par dfaut appel DEFAULT. Il est par dfaut affect un utilisateur lors de sa cration Les limites du profile DEFAULT sont positionnes UNLIMITED Le profile DEFAULT ne peut tre supprim. Les limites de ce profile peuvent par contre tre modifies activation et contrle des limites :
dans le fichier initSID.ora positionner : RESOURCE_LIMIT = TRUE ou dynamiquement faire sous sqlplus par exemple : SQL> ALTER SYSTEM SET resource_limit = true;

Exemple 3 : liste des rles actifs pour la session sql>SELECT * FROM session_roles ;
ROLE MONITORER DBA EXP_FULL_DATABASE IMP_FULL_DATABASE RL_ADMIN_SECU

Page 203

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 204

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles


I

5.4 Les profiles


I

Cration d'un profile


Privilge requis CREATE PROFILE

Cration d'un profile


Privilge requis CREATE PROFILE

Syntaxe partie limite des ressources


CREATE PROFILE profile LIMIT [ SESSIONS_PER_USER { integer | UNLIMITED | DEFAULT} ] [ CPU_PER_SESSION { integer | UNLIMITED | DEFAULT } ] [ CPU_PER_CALL { integer | UNLIMITED | DEFAULT } ] [ CONNECT_TIME { integer | UNLIMITED | DEFAULT } ] [ IDLE_TIME { integer | UNLIMITED | DEFAULT } ] [LOGICAL_READS_PER_SESSION {integer | UNLIMITED|DEFAULT}] [LOGICAL_READS_PER_CALL {integer | UNLIMITED|DEFAULT}] [ COMPOSITE_LIMIT { integer | UNLIMITED | DEFAULT } ] [PRIVATE_SGA {integer [K | M] | UNLIMITED | DEFAULT}] Session_per_user : Nombre maximum de sessions par utilisateur Logical_read_per_session : Nbre de blocs de donnes lire pour une session cpu_per_session : temps CPU max par session en % de scondes cpu_per_call : temps CPU pour un appel (en cas de parse, execute ou fetch) en % de secondes connect_time : temps coul maximum (en minutes) idle_time : temps maximum d'inactivit. private_sga : taille prive de la SGA alloue un utilisateur unlimited : limite de la ressource illimite default : prend la limite par dfaut de la ressource

Syntaxe partie password


CREATE PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS {expr | UNLIMITED | DEFAULT}] [PASSWORD_LIFE_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_REUSE_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_REUSE_MAX {expr | UNLIMITED | DEFAULT}] [PASSWORD_LOCK_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_GRACE_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_VERIFY_FUNCTION {function, NULL, DEFAULT}]

Mots cls et paramtres

Mots cls et paramtres

Failed_login_attempts : nombre dchecs avant le blocage du compte password_life_time : dure en jours avant lexpiration du mot de passe password_reuse_time : dure en jours avant la rutilisation dun password password_reuse_max : nombre de modif du password avant rutilisation password_lock_time : dure en jours du verrouillage dun compte password_grace_time : dlai de tolrance du password avant son expiration password_verify_function : fonction de contrle des mots de passes
Copyright G. Mopolo-Mok Administration Oracle 10G

Page 205

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 206

5.4 Les profiles


I

5.4 Les profiles


I

Cration d'un profile (suite)


Exemple (suite)

Assignation dun profile un utilisateur


A la cration d'un nouvel utilisateur CREATE USER rackham IDENTIFIED BY lerouge PROFILE pf_secretaire ; A la modification d'un utilisateur ALTER USER rackham PROFILE pf_agent ;

Exemple 1
CREATE PROFILE pf_secretaire LIMIT sessions_per_user 2 cpu_per_session unlimited cpu_per_call 1000 logical_reads_per_session unlimited logical_reads_per_call 100 idle_time 30 connect_time 480 ;

Exemple 2
CREATE profile pf_agent LIMIT sessions_per_user 2 cpu_per_session unlimited cpu_per_call 1000 composite_limit 20000 private_sga 32K ;

Exemple 3
CREATE PROFILE pf_admin PASSWORD_LIFE_TIME 200 LIMIT PASSWORD_REUSE_MAX DEFAULT PASSWORD_REUSE_TIME UNLIMITED CPU_PER_SESSION UNLIMITED
Page 207 Copyright G. Mopolo-Mok Administration Oracle 10G Page 208 Copyright G. Mopolo-Mok Administration Oracle 10G

5.4 Les profiles


I

5.4 Les profiles


I

Modification dun profile


Privilge requis : ALTER PROFILE

Modification dun profile


Privilge requis : ALTER PROFILE

Syntaxe partie password


ALTER PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS {expr | UNLIMITED | DEFAULT}] [PASSWORD_LIFE_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_REUSE_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_REUSE_MAX {expr | UNLIMITED | DEFAULT}] [PASSWORD_LOCK_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_GRACE_TIME {expr | UNLIMITED | DEFAULT}] [PASSWORD_VERIFY_FUNCTION {function, NULL, DEFAULT}]

Syntaxe partie limite des ressources


ALTER PROFILE profile LIMIT [ SESSIONS_PER_USER { integer | UNLIMITED | DEFAULT} ] [ CPU_PER_SESSION { integer | UNLIMITED | DEFAULT } ] [ CPU_PER_CALL { integer | UNLIMITED | DEFAULT } ] [ CONNECT_TIME { integer | UNLIMITED | DEFAULT } ] [ IDLE_TIME { integer | UNLIMITED | DEFAULT } ] [LOGICAL_READS_PER_SESSION {integer | UNLIMITED|DEFAULT}] [LOGICAL_READS_PER_CALL {integer | UNLIMITED|DEFAULT}] [ COMPOSITE_LIMIT { integer | UNLIMITED | DEFAULT } ] [PRIVATE_SGA {integer [K | M] | UNLIMITED | DEFAULT}]

Mots cls et paramtres

Mots cls et paramtres

Session_per_user : Nombre maximum de sessions par utilisateurs Logical_read_per_session: blocs de donnes en lecture par session cpu_per_session : temps CPU max par session en % de scondes cpu_per_call : temps CPU pour un appel (en acs de parse, execute ou fetch) en % de secondes connect_time : temps coul maximum (en minutes) idle_time : temps maximum d'inactivit. private_sga : taille prive de SGA alloue un utilisateur unlimited : limite de la ressource illimite default : positionne la limite par dfaut de la ressource
Copyright G. Mopolo-Mok Administration Oracle 10G

Failed_login_attempts : nombre dchecs avant le blocage du compte password_life_time : dure en jours avant lexpiration du mot de passe password_reuse_time : dure en jours avant la rutilisation dun password password_reuse_max : nombre de modif du password avant rutilisation password_lock_time : dure en jours du verrouillage dun compte password_grace_time : dlai de tolrance du password avant son expiration password_verify_function : fonction de contrle des mots de passes
Copyright G. Mopolo-Mok Administration Oracle 10G

Page 209

Page 210

5.4 Les Profiles


I

5.4 Les profiles


I

Modification dun profile


Exemple 1 :

Utilisations des limites composites


Gnralits
Fixe le cot total des limites pour une session chaque limite est associ un poids :
par dfaut les poids sont 0 un fort poids implique un cot lev de la limite un poids ne peut tre qu'associer aux limites suivantes (cpu_per_session, connect_time, logical_reads_per_session, private_sga)

Modification des limites du profile par dfaut DEFAULT


ALTER PROFILE default LIMIT CPU_PER_SESSION 600

Exemple 2 :

Modification des limites du profile pf_agent


ALTER PROFILE pf_agent LIMIT CPU_PER_SESSION default

privilge requis : ALTER RESOURCE COST

Que vaut CPU_PER_SESSION pour le profile pf_agent ?

Page 211

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 212

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles


I

5.4 Les profiles


I

Cration de limites composites

Cration d'une limite composite (suite)


Formule dvaluation du cot total des ressources pour une session.
T = poids * consommation_per_resource_limit

Syntaxe
ALTER RESOURCE COST [ CPU_PER_SESSION integer ] [ CONNECT_TIME integer ] [ LOGICAL_READS_PER_SESSION integer] [ PRIVATE_SGA integer ]

Exemple 1 :
SQL> ALTER RESOURCE COST cpu_per_session 100 connect_time 1; T = 100*cpu_per_session_consomm + 1*connect_time_consomm + 0*logical_reads_per_session + 0*private_sga

Mots cls et paramtres


integer : poids pour chaque ressource Logical_read_per_session : blocs de donnes en lecture par session cpu_per_session : temps CPU max par session en % de scondes connect_time : temps coul maximum (en minutes) private_sga : taille de la SGA priv ne pas dpasser

Exemple 2 :
SQL> ALTER RESOURCE COST logical_reads_per_session connect_time 2 0;

T = 100*cpu_per_session_consomm + 0*connect_time_consomm + 2*logical_reads_per_session + 0*private_sga


La limite PRIVATE_SGA est - t - elle toujours valide quel que soit larchitecture dOracle ?

Note : Le rsultat T est comparer avec la valeur de COMPOSITE_LIMIT


Page 214 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 213

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles


I

5.4 Les profiles


I

Suppression dun profile


En cas de suppression d'un profile existant affect un utilisateur, ce dernier se verra automatiquement attribu le profile DEFAULT Le profile DEFAULT ne peut tre supprim Privilge requis : DROP PROFILE
Syntaxe
DROP PROFILE nom_profile [CASCADE]

Visualisation des informations des profiles


Vues contenant les informations sur les profiles :
dba_profiles, resource_cost, user_resource_limit Exemple 1 : Liste de tous les profiles
sql> SELECT profile, resource_name, limit FROM dba_profiles ORDER BY profile, resource_name; PROFILE DEFAULT ... DEFAULT PF_AGENT PF_AGENT PF_AGENT PF_AGENT PF_AGENT ... PF_SECRETAIRE PF_SECRETAIRE PF_SECRETAIRE PF_SECRETAIRE PF_SECRETAIRE PF_SECRETAIRE PF_SECRETAIRE ... RESOURCE_NAME COMPOSITE_LIMIT CPU_PER_SESSION COMPOSITE_LIMIT CONNECT_TIME CPU_PER_CALL PRIVATE_SGA SESSIONS_PER_USER COMPOSITE_LIMIT CONNECT_TIME CPU_PER_CALL CPU_PER_SESSION IDLE_TIME LOGICAL_READS_PER_CALL SESSIONS_PER_USER LIMIT UNLIMITED 600 20000 DEFAULT 1000 32768 2 DEFAULT 480 1000 UNLIMITED 30 100 2

Mots cls et paramtres


nom_profile CASCADE : nom du profile supprimer : retire le profile aux utilisateurs l'ayant puis, suppression du profile

Exemple
sql>DROP PROFILE pf_secretaire CASCADE ;
Page 215 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 216

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles


I

5.5 Les utilisateurs


I

Visualisation des informations des profiles (suite)


Liste des cots (poids) des ressources pour la session courante

Gnralits
La notion d'utilisateur est fondamentale pour accder aux donnes d'une base Oracle Le site d'un client Oracle doit tre tenu jour au niveau des licences :
les paramtres de init.ora pour le contrle de la licence ( valeurs par dfaut 0) : license_max_session, license_sessions_warning, license_max_users
Si la limite en nombre de sessions est illimite conserver les valeurs par dfaut

Exemple 2 :

sql> SELECT resource_name, limit FROM resource_cost RESOURCE_NAME CPU_PER_SESSION LOGICAL_READS_PER_SESSION CONNECT_TIME PRIVATE_SGA UNIT_COST 100 2 0 0

Exemple 3 :

Liste des limites des ressources de l'utilisateur courant


LIMIT UNLIMITED UNLIMITED 600 UNLIMITED UNLIMITED UNLIMITED UNLIMITED UNLIMITED UNLIMITED
Administration Oracle 10G Page 218

sql> SELECT resource_name, limit FROM user_resource_limits RESOURCE_NAME COMPOSITE_LIMIT SESSIONS_PER_USER CPU_PER_SESSION CPU_PER_CALL LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_CALL IDLE_TIME CONNECT_TIME PRIVATE_SGA
Page 217 Copyright G. Mopolo-Mok

Seuls les utilisateurs avec le privilge RESTRICTED SESSION peuvent se connecter en cas de dpassement de la limite en cas de mise en oeuvre de l'architecture parallle, chaque instance ses limites mais la somme doit quivaloir la somme des limites du site visualisation des limites des licences v$license
Copyright G. Mopolo-Mok Administration Oracle 10G

5.5 Les utilisateurs


I

5.5 Les utilisateurs


I

Gnralits (suite)
Contrle de la limitation du nombre d'utilisateurs
Au moment du lancement d'une instance LICENSE_MAX_USERS = 80 Au moment ou l'instance tourne sqlplus >ALTER SYSTEM SET LICENSE_MAX_USERS=100;

Gnralits (suite)
Authentification des utilisateurs
Globalement partir de lannuaire LDAP CREATE USER scott IDENTIFIED GLOBALLY AS CN=scott,OU=division1,O=oracle,C=US

Authentification des utilisateurs


A partir d'Oracle CREATE USER scott IDENTIFIED BY tiger ; A partir de l'OS CREATE USER OPS$mopolo IDENTIFIED EXTERNALLY ;
Les utilisateurs authentifis par l'OS sont prcds d'une chane dfinie par le paramtre de initsid.ora OS_AUTHENT_PREFIX qui vaut par dfaut OPS$

Page 219

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 220

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs


I

5.5 Les utilisateurs


I

Gnralits (suite)
Utilisateur et schma
A chaque utilisateur est associ un schma Les objets appartenant un schma sont : tables, index, vues, squences, synonymes, clusters, database links, fonction, procdures et package, ... La commande CREATE SCHEMA AUTHORIZATION permet crer en un trait des tables, des vues et d'attribuer des droits. En cas d'erreur, un ROLLBACK peut tre effectu. Exemple :
CREATE SCHEMA AUTHORIZATION ottocar CREATE TABLE VOL ( vol# number(4) primary key, plnum number(4) references pilote, vd char(12), va char(12)) CREATE TABLE PILOTE ( pl# number(4) primary key, plnom varchar2(20), sal number (5, 2) not null) GRANT select, update(plnom, sal) ON pilote TO tintin;

Cration d'un utilisateur


Lors de la cration d'un utilisateur, il est possible de lui affecter : un mot de passe, un tablespace par dfaut, un tablespace temporaire, un profile (explicite ou implicite), des quotas sur les tablespaces.
Syntaxe CREATE USER user IDENTIFIED { BY password | EXTERNALLY| GLOBALLY AS nom_externe } [ DEFAULT TABLESPACE tablespace ] [ TEMPORARY TABLESPACE tablespace ] [ QU0TA { integer [ K | M ] | UNLIMITED } ON tablespace ] ... [ PROFILE profile ] [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}] Mots cls et paramtres User : nom de lutilisateur crer password : mot de passe Externally : utilisateur authentifi par l'OS tablespace : nom du tablespace profile : nom du profile globally as : accs autoris lannuaire LDAP

Page 221

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 222

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs


I

5.5 Les utilisateurs


I

Cration d'un utilisateur (suite)


Exemple 1 : cration d'un utilisateur nomm TINTIN identifi au niveau de l'OS dont le tablespace par dfaut est USERS. Cet utilisateur un quota de 2Mo sur les tablespaces SYSTEM et USERS. sql> CREATE USER OPS$tintin IDENTIFIED EXTERNALLY DEFAULT TABLESPACE users QUOTA 2 M ON system QUOTA 2 M ON users; Exemple 2 : Cration d'un utilisateur nomm DUPOND ayant DUPONT comme mot de passe. sql> CREATE USER dupond IDENTIFIED BY dupont ;

Modification dun utilisateur


Syntaxe
ALTER USER user [ IDENTIFIED { BY password | EXTERNALLY | Globally} ] [ DEFAULT TABLESPACE tablespace ] [ TEMPORARY TABLESPACE tablespace ] [ QUOTA { integer [ K | M ] UNLIMITED } ON tablespace ] ... [ PROFILE profile ] [DEFAULT ROLE { role [, role ] ... | ALL [ EXCEPT role [, role ] ... ] | NONE } ] [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}] [Proxy_clause]

Mots cls et paramtres


password : Nouveau mot de passe tablespace : Nom du tablespace par dfaut et/ou du tablespace temporaire profile : Nom du nouveau profile de l'utilisateur role : Nom du ou des nouveaux rles par dfaut ou exclure ALL : Tous les rles deviennent par dfaut NONE : Aucun rle par dfaut EXECPT : Les rles exclure apparaissent aprs ce mot cl Proxy_clause : Authentification des utilisateurs via un proxy NOTES : Rle par dfaut = Rle affect directement un utilisateur
Page 224 Copyright G. Mopolo-Mok Administration Oracle 10G

Notes . le tablespace temporaire par dfaut est SYSTEM . le tablespace par dfaut est SYSTEM . il est obligatoire daffecter des quotas sur les tablespaces ou d'affecter le privilge UNLIMITED TABLESPACE . les rles affects lors de la cration d'un utilisateur sont par dfaut . le privilge CREATE USER est requis.
Page 223 Copyright G. Mopolo-Mok Administration Oracle 10G

5.5 Les utilisateurs


I

5.5 Les utilisateurs


I

Modification dun utilisateur


Exemple 1 Modification de l'utilisateur DUPONT: nouveau mot de passe BOULES, tablespace par dfaut USER quota sur ce tablespace illimit et 0 sur le tablespace SYSTEM sql> ALTER USER dupont IDENTIFIED BY boules DEFAULT TABLESPACE user QUOTA UNLIMITED ON user QUOTA 0 ON system ; Exemple 2 Modification de l'utilisateur TINTIN : assignation d'un nouveau tablespace par temporaire TEMP et assignation de tous rles par dfaut sauf rl_admin_secu. sql> ALTER USER tintin TEMPORARY TABLESPACE temp DEFAULT ROLE ALL EXECPT rl_admin_secu;

Suppression dun utilisateur


La suppression d'un utilisateur entrane la suppression des objets de son schma (tables, vues, squences, synonymes, indexes, clusters indexs, clusters hashs, ...) Privilge requis : DROP USER
Syntaxe DROP USER user [ CASCADE ] Mots cls et paramtres user CASCADE : Nom de lutilisateur supprimer : supprime aussi les objets du schma de l'utilisateur et les contraintes d'intgrit de rfrence. ;

Exemple DROP USER tsang DROP USER dupont CASCADE ;


Page 226 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 225

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs


I

5.5 Les utilisateurs


I

Affectation de droits un Utilisateur


Exemple 1 : Affectation de droits systmes sql> GRANT create tablespace, create user TO tintin ; Exemple 2 : Affectation d'un rle un utilisateur sql> GRANT rl_admin_secu TO tintin ; Exemple 3 : Affectation d'un privilge objet un utilisateur sql> GRANT SELECT, UPDATE (ename, sal) ON EMP TO tintin ; Exemple 4 : Affectation de privilges tous les utilisateurs sql> GRANT drop any table TO PUBLIC ; NOTE !!! Attention danger

Informations sur les utilisateurs


Quelques vues sur les utilisateurs user_users, all_users, dba_users user_ts_quotas dba_ts_quotas

Exemple 1: informations concernant l'utilisateur actuel SELECT username, user_id, default_tablespace, temporray_tablespace, created FROM user_users;
username OTTOCAR user_id default_tablespace temporary_tablespace 23 USER_DATA TEMPORARY_DATA created 07/05/96

Exemple 2 : informations sur tous les utilisateurs SELECT * FROM all_users;


USERNAME SYSTEM SCOTT DUPONT OPS$MOPOLO OTTOCAR USER_ID 5 8 13 22 23 Copyright G. Mopolo-Mok CREATED 26/09/95 26/09/95 29/04/96 05/05/96 07/05/96 Administration Oracle 10G

Page 227

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 228

5.5 Les utilisateurs


I

5.5 Les utilisateurs


I

Informations sur les utilisateurs (suite)

Informations sur les utilisateurs (suite)

Exemple 3 : toutes les informations sur tous les utilisateurs SELECT username, user_id, password, default_tablespace, temporray_tablespace, created FROM user_users;
USERNAME USER_ID PASSWORD DEFAULT_ TEMPORARY_ TABLESPACE TABLESPACE USER_DATA USER_DATA SYSTEM SYSTEM USER_DATA CREATED PROFILE

Exemple 5 : Informations sur les quotas de tous les utilisateurs slq> SELECT * FROM dba_ts_quotas;
TABLESPACE_ NAME USER_DATA USERNAME BYTES MAX_ BYTES 0 -1 40960 -1 BLOCKS 0 20 MAX_ BLOCKS -1 -1

SYSTEM 5 D4DF7931AB130E37 SCOTT 8 F8948444 402B67 DUPONT 13 38BD25849F 94015A OPS$MOPOLO 22 EXTERNAL OTTOCA 23 5006630829F6EA0E

TEMPORARY_DATA 26/09/95 DEFAULT TEMPORARY_DATA 26/09/95 DEFAULT SYSTEM SYSTEM 29/04/96 DEFAULT 05/05/96 DEFAULT

TEMPORARY_DATA 07/05/96 DEFAULT

TEMPORARY_DATA OTTOCAR OTTOCAR

Exemple 4 : Informations sur les quotas de lutilisateur actuel SELECT * FROM user_ts_quotas;
TABLESPACE_NAME USER_DATA TTEST BYTES 0 0 MAX_BYTES 552960 20480 BLOCKS MAX_BLOCKS 0 0 270 10

Max_bytes : quota disque en octets autoriss pour un utilisateur bytes blocks : nombre d'octets dj consomms : nombre de blocs dj consomms

Max_blocks : quota disque en blocs pour un utilisateur

Page 229

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 230

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs


I

5.6 Laudit
I

Suppression dune session


En cas de problmes avec une session (interblocage, consommation excessive de resources, ...), sa suppression peut tre dcide
cette suppression entrane :
l'annulation de la transaction concerne, la libration des verrrous et des resources consommes

L'objectif de l'audit est de contrler les accs mal intentionns ou non autoriss la base Rgles pour un bon audit
Bien choisir le lieu de mise en oeuvre de l'audit
Audit au niveau Oracle(audit_trail=TRUE). Avantage :
audit cibl grce SQL possibilit d'exploiter les outils Oracle pour gnrer des rapports

la commande Alter System Kill Session ... permet de supprimer une session. select sid, serial#, username FRom v$session ; sid 13 14 Serial# 8 11 Username tintin sadm

Audit au niveau de l'OS(audit_trail = OS). Avantage :


possibilit de consolider des audits de sources diverses

Inhiber l'audit (audit_trail = NONE)

ALTER SYSTEM KILL SESSION '13, 8';


Note : Si lon tente de supprimer une session active, Oracle note la demande. La suppression aura lieu ds que la session cesse d'tre active.

Bien cibler l'audit pour en limiter le volume Avoir une dmarche d'audit par raffinement successif protger la table d'audit (sys.aud$) en limitant l'affectation du privilge DROP ANY TABLE crer les vues d'audit en excutant le script cataudit.sql (catnoaudit.sql permet de les supprimer)
Page 232 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 231

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Types daudits
par utilisateur : auditer l'activit d'un ou plusieurs utilisateurs par session (en cas de succs ou d'insuccs) : Pour N activations d'une action dans une session, conserver une seule trace par accs (en cas de succs ou d'insuccs) : Pour N activations d'une action dans une session, conserver N trace

Audit des ordres sql et des privilges systmes


Privilge requis : AUDIT SYSTEM
Syntaxe AUDIT { {statement_opt | ALL} | {system_priv | ALL PRIVILEGES} } [{ {statement_opt | ALL} | {system_priv | ALL PRIVILEGES} }] [ BY user [, user ] ... [BY PROXY ON BEHALF OFF {ANY | user}] [ BY { SESSION | ACCESS } ] [ WHENEVER [ NOT ] SUCCESSFUL ] Mots cls et paramtres
statement_opt : option des ordres sql auditer system_priv : privilge systme auditer user : audit des ordres sql et/ou privilges pour un user BY SESSION : audit des ordres sql et/ou privilges par session BY ACCESS : audit des ordres sql et/ou privilges par accs SUCCESSFUL : audit des ordres sql et/ou privilges si succs ALL : audit de tous les ordres SQL ALL PRIVILEGES : audit de tous les privilges

Types de surveillance
Audit sur les ordres SQL et les privilges systmes Audit sur les objets.

Page 233

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 234

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Audit des ordres SQL et des privilges systmes (suite)


auditer les connexions et dconnexions des utilisateurs rackham et cyclone (en cas de succs ou d'insuccs). sql> AUDIT SESSION BY rackham, cyclone ;

Options daudit des ordres SQL


Ordres SQL audits alter system create cluster, alter cluster, drop cluster, truncate cluster create database link, drop database link create index, alter index, drop index tout ordre sql qui retourne lerreur : objet inexistant (create table, ...) create[or replace] function, create[or replace] package, create[or replace] package body, create[or replace] procedure, drop package, drop procedure create public database link, drop public database link create public synonym drop public synonym create role, alter role, set role, drop role

Exemples 1

Options alter system cluster database link index not exists procedure

Exemples 2 auditer les ordres select, insert, delete pour toutes les tables et le privilge execute any procedure par accs et ceci en cas d'chec. sql> AUDIT select table, insert table, delete table, execute any procedure BY ACCESS WHENEVER NOT SUCCESSFUL ; ou sql> AUDIT table, execute any procedure BY ACCESS WHENEVER NOT SUCCESSFUL ;

public database link public synonym role

Page 235

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 236

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Options daudit des ordres SQL(suite)


Options rollback segment Ordres SQL audits create rollback segment, alter rollback segment, drop rollback segment create sequence, drop sequence create synonym, drop synonym audit, no audit GRANT system_privileges/roles TO user/role REVOKE system_privileges/roles FROM user/role create table, alter table, drop table create tablespace, alter tablespace, drop tablespace create trigger, alter trigger enable or disable alter table with enable, disable and drop clauses create user, alter user, drop user create[or replace] view, drop view
Copyright G. Mopolo-Mok Administration Oracle 10G

Options daudit des ordres SQL(suite)


Options alter sequence alter table comment table delete table execute procedure grant procedure grant table insert table lock table select sequence select table update table Context DIMENSION DIRECTORY Ordres SQL audits alter sequence nom_sequence alter table nom_table comment on table, vue, snapshot, colonne delete from nom_table, bnom_vue appel de procedure et de fonction grant privilge on procedure, revoke privilge on procedure grant privilge on table, vue, snapshot revoke privilge on table, vue, snapshot insert into table, vue lock table table, vue rfrence une squence select * from table, vue, snapshot update, vue create context, drop context CREATE DIMENSION, ALTER DIMENSION DROP DIMENSION CREATE DIRECTORY, DROP DIRECTORY
Administration Oracle 10G

sequence synonym system audit system grant

table tablespace trigger

user view
Page 237

Page 238

Copyright G. Mopolo-Mok

5.6 Laudit
I

5.6 Laudit
I

Audit des objets du schma


Privilge Requis : AUDIT ANY
Syntaxe AUDIT object_opt [, object_opt] ... ON {[ schema.]object | DIRECTORY directory_name | DEFAULT} [ BY { SESSION | ACCESS } ] [ WHENEVER [ NOT ] SUCCESSFUL ] Mots cls et paramtres
object_opt object DEFAULT BY SESSION BY ACCESS SUCCESSFUL DIRECTORY : option objet auditer : nom de l'objet auditer : option d'audit par dfaut pour les nouveaux objets crer ultrieurement : audit des ordres sql et/ou privilges par session : audit des ordres sql et/ou privilges par accs : audit des ordres sql et/ou privilges si succs : audit des Directories

Audit des objets du schma (suite)


auditer lordre SQL select sur la table tintin.emp en cas dchec d'excution de cet ordre. sql> AUDIT select ON tintin.emp WHENEVER NOT SUCCESSFUL ;

Exemple 1

Exemple 2 auditer l'insertion, la modification et la slection sur la table haddock.dept par accs. sql> AUDIT insert, update, select ON haddock.dept BY ACCESS ;

Page 239

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 240

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Audit des objets du schma (suite)


Les options daudit des objets
Options
alter audit comment delete execute grant index insert lock rename select update

Exploitation de laudit
la table de base AUD$ contient l'ensemble des informations sur les audits les vues daudit :Elles sont cres en lanant le script cataudit.sql et supprimes en lanant catnoaudit.sql
USER_AUDIT_CONNECT USER_AUDIT_RESOURCE DBA_AUDIT_DBA DBA_PRIV_AUDIT_OPTS DBA_TAB_AUDIT_OPTS ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS USER_OBJ_AUDIT_OPTS, DBA_OBJ_AUDIT_OPTS USER_AUDIT_TRAIL, DBA_AUDIT_TRAIL USER_AUDIT_STATEMENT, DBA_AUDIT_STATEMENT USER_AUDIT_OBJECT, DBA_AUDIT_OBJECT DBA_AUDIT_EXISTS, USER_AUDIT_SESSION, DBA_AUDIT_SESSION USER_TAB_AUDIT_OPTS

Ordres SQL audits


alter table | sequence audit (sur les objets) comment table | view delete from table | view execute procedure grant (objets) create index on insert into table| view lock table | view rename ... select * from ... update table | vue
1

Objet du schma concern


table, squence, MV, Obj. type table, vue, squence, procdure table, vue table | vue procdure table, vue, squence, procdure table table, vue table, vue table, vue, procdure1 table, vue, snapshot table, vue

Note :

procdure est mis ici pour: procdure, fonction ou package remplace toutes les options d'audit des objets Administration Oracle 10G Page 242 Copyright G. Mopolo-Mok Administration Oracle 10G

all : Page 241

Copyright G. Mopolo-Mok

5.6 Laudit
I

5.6 Laudit
I

Exploitation de laudit (suite)


Description
Nom au niveau OS de lutilisateur auditer Nom Oracle de l'utilisateur auditer Numro de l'instance de connexion du user identification du terminal de l'utilisateur date et heure d'enregistrement de l'action propritaire de l'objet concern par l'action nom de l'objet concern par l'action code de l'action nom de l'action propritaire de l'objet dsign dans la colonne new_name nouveau nom de l'objet aprs RENAME privilgesobjets affects ou retirs l'objet privilges systmes affects ou retirs privilges systmes ou rles donns avec with ADMIN OPTION

Exploitation de laudit (suite)


Description
nom de celui qui reoit le privilge options d'audit positionnes avec AUDIT chane de 11 caract. chacun vaut "-" pour none ou "S" pour success ou "F" pour failure ou "B" pour les deux. Chaque position correspond dans l'ordre aux actions : alter, audit, comment, delete, grant, index, insert, lock, rename, select, update. date et heure de dconnexion nbre de lectures logiques dans la session nbre de lectures physiques dans la session nbre de blocs Oracle modifis dans session nbre de deadlocks dtects durant la session Commentaire sur la trace de l'action Numro de la session Oracle Numro de l'ordre excut numro de la requte excute Erreur oracle provoque par l'action Privilges systmes utiliss par l'action Label de l'objet (Oracle scuris) Label associ la session (Oracle scuris)

Les colonnes des vues daudit


Colonne
OS_USERNAME USERNAME USERHOST TERMINAL TIMESTAMP OWNER OBJ_NAME ACTION ACTION_NAME NEW_OWNER NEW_NAME OBJ_PRIVILEGE SYS_PRIVILEGE ADMIN_OPTION

Les colonnes des vues daudit (suite) Colonne


GRANTEE AUDIT_OPTION SES_ACTIONS

LOGOFF_TIME LOGOFF_LREAD LOGOFF_PREAD LOGOFF_LWRITE LOGOFF_DLOCK COMMENT_TEXT SESSIONID ENTRYID STATEMENTID RETURNCODE PRIV_USED OBJECT_LABEL SESSION_LABEL

Page 243

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 244

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Exploitation de laudit (suite)

Exploitation daudit (suite)

Exemple
Problme Nous souhaitons effectuer laudit sur les activits suspectes suivantes : - l'affectation des mots de passes, tablespace et quotas pour certains utilisateurs ont ts modifis sans autorisation - un trop grand nombre de verrous exclusifs est pos - des lignes sont supprimes arbitrairement de la table emp de l'utilisateur tintin Nous suspectons pour cela les utilisateurs rackham et lama. Actions effectues par l'administrateur
sql>AUDIT ALTER, INDEX, RENAME ON DEFAULT BY SESSION ; sql> CREATE VIEW tintin.employes AS SELECT * FROM tintin.emp ; sql>AUDIT session BY rackham, lama; sql>AUDIT alter user ; sql>AUDIT lock table BY ACCESS WHENEVER SUCCESSFUL ; sql> AUDIT delete ON tintin.emp BY ACCESS WHENEVER SUCCESSFUL ;

Exemple (suite)
Actions effectues par rackham sql>ALTER USER tintin QUOTA 0 ON USER_DATA; sql>DROP USER dupont ; Actions effectues par lama sql>LOCK TABLE tintin.emp IN EXCLUSIVE MODE ; sql>DELETE FROM tintin.emp WHERE mgr=7698 ; sql>ALTER TABLE tintin.emp ALLOCATE EXTENT (SIZE 100K) ; sql>CREATE INDEX tintin.idx_ename ON tintin.emp(ename); sql>CREATE PROCEDURE tintin.fire_employe(idemp NUMBER) AS BEGIN DELETE FROM tintin.emp WHERE empno=idemp; END; / sql>EXECUTE tintin.fire_employe(7902);

Page 245

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 246

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Exploitation de laudit (suite)

Exploitation de laudit (suite)

Exemple (suite)
Visualisation des options daudit des ordres SQL actives
sql>SELECT * FROM dba_stmt_audit_opts ; USER_NAME AUDIT_OPTION LAMA RACKHAM CREATE SESSION CREATE SESSION ALTER USER LOCK TABLE SUCCESS BY ACCESS BY ACCESS BY ACCESS BY ACCESS FAILURE BY ACCESS BY ACCESS BY ACCESS NOT SET

Exemple (suite)
Visualisation des options daudit objet sur la table tintin.emp sql>SELECT * FROM dba_obj_audit_opts where owner = TINTIN AND object_name like EMP%;
OWNER OBJECT_ OBJECT_TY ALT AUD COM DEL GRA IND INS LOC ... NAME TINTIN EMP TINTIN EMPLOYES TABLE VIEW -/- -/- -/- A/- -/- -/- -/--/- -/- -/- -/- -/- -/-... -/- -/- -/- -/- -/- -/- -/--/- S/S -/- -/- -/- -/-...

Visualisation des options daudit objet par dfaut sql>SELECT * FROM all_def_audit_opts;
ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE S/S -/- -/-/- -/S/S -/- -/- S/S -/-/-/-/-

Visualisation des options actives daudit des privilges


sql>SELECT * FROM dba_priv_audit_opts ; USER_NAME LAMA RACKHAM PRIVILEGE CREATE SESSION CREATE SESSION ALTER USER SUCCESS FAILURE

Notes : -/- : Audit non positionn (ni en cas de succs ou d'insuccs) S/- : Option d'audit positionne par Session A/- : Option d'audit positionne par accs (en cas de succs) S/S : Par session ( en cas de succs ou d'insuccs)

BY ACCESS BY ACCESS BY ACCESS BY ACCESS BY ACCESS BY ACCESS

Page 247

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 248

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Exploitation de laudit (suite)

Exemple (suite)
Listing des lignes daudit gnres par l'audit des ordres et audit des objets sql>SELECT username, obj_name, action_name, ses_actions FROM dba_audit_object; USERNAME OBJ_NAME ACTION_NAME LAMA LAMA LAMA EMP EMP IDX_ENAME SES_ACTIONS

Dsactivation de l'audit sur les Ordres SQL et les privilges systmes


NOAUDIT { statement_opt | system_priv } [, { statement_opt | stystem_priv } ] ... [ BY user [, user ] ... [ WHENEVER [ NOT ] SUCCESSFUL ]

Syntaxe

Mots cls et paramtres


statement_opt system_priv user SUCCESSFUL : option des ordres sql ne plus auditer : privilge systme ne plus auditer : dsactiver l'audit des ordres SQL sur un user : dsactiver seulement en cas de succs

LOCK DELETE CREATE INDEX

Listing des lignes d'audit pour l'audit des sessions sql>SELECT username, logoff_time, logoff_lread, logoff_pread, logoff_lwrite, logoff_dlock FROM dba_audit_session ;
LAMA RACKHAM 11/05/96
USERNAME LOGOFF_ LOGOFF_ TIME LREAD LOGOFF_ PREAD LOGOFF_ LOGOFF_ LWRITE DLOCK

57

Exemples sql>NOAUDIT session; sql>NOAUDIT role; sql>NOAUDIT session BY tintin, cyclone ; sql>NOAUDIT delete any table; sql>NOAUDIT select any table, insert any table, delete any table, execute any procedure; sql>NOAUDIT select table, insert table, delete table; sql>NOAUDIT ALL ; sql>NOAUDIT ALL PRIVILEGES ; Note : le privilge requis est AUDIT SYSTEM

Page 249

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 250

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit
I

5.6 Laudit
I

Dsactivation de l'audit des objets du schma

Administration et utilisation de laudit


1. Activation de laudit. Positionner au niveau du fichier init.ora le paramtre init.ora : . AUDIT_TRAIL=TRUE ou AUDIT_TRAIL=OS 2. installer les vues daudit (cataudit.sql) 3. Utiliser la commande AUDIT pour positionner l'audit 4. Scuriser la table d'audit : attribuer le privilge delete any table l'administrateur de scurit uniquement. Auditer la table d'audit. AUDIT insert, update, delete ON sys.aud$ BY ACCESS 5. Utiliser si ncessaire la commande NOAUDIT pour annuler les positionnements faits avec AUDIT 6. Exploiter les rsultats d'audit 7. Purger ou rduire la taille de l'audit DELETE FROM sys.aud$ DELETE FROM sys.aud$ where obj$name=EMP; ... 8. Dsactiver l'audit (dans init.ora AUDIT_TRAIL = NONE)

Syntaxe NOAUDIT object_opt [, object_opt] ... ON {[ schema.]object | DEFAULT} [ WHENEVER [ NOT ] SUCCESSFUL ] Mots cls et paramtres
object_opt object DEFAULT SUCCESSFUL : option dobjet daudit dsactiver : nom de l'objet sur lequel l'audit va tre dsactiv : dsactiver les options d'audit par dfaut : dsactiver l'audit uniquement en cas de succs

Exemples sql>NOAUDIT select ON tintin.emp ; sql>NOAUDIT select ON tintin.emp WHENEVER SUCCESSFUL; sql>NOAUDIT ALL ON tintin.emp ; sql>NOAUDIT ALL ON DEFAULT ; Note : le privilge requis est AUDIT SYSTEM

Page 251

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 252

Copyright G. Mopolo-Mok

Administration Oracle 10G

6 Sauvegarde et restauration
I

6.1 Gnralits
I

Plan
6.1 Gnralits 6.2 Sauvegarde en mode NOARCHIVELOG 6.3 Sauvegarde en mode ARCHIVELOG 6.4 Restauration d'une Base de donnes 6.5 Recovery Manager (voir Annexe)

Bien dfinir une stratgie de sauvegarde et restauration Les questions se poser


est - t - il acceptable de perdre des donnes en cas de panne des fichiers de donnes ? est - t - il utile de recouvrer des donnes perdues ? la base de donnes ne doit - t - elle jamais s'arrter ?

Bien tirer partie des mcanismes d'Oracle pour se prmunir des pertes de donnes
technique de mise en miroir de fichier redo log et de contrle

Tester votre stratgie de sauvegarde et restauration adapter le rythme des sauvegardes par rapport au besoins Conserver les sauvegardes tant que utile
Bien choisir son mode darchivage (ARCHIVELOG, NOARCHIVELOG) car de ce choix dpendra les possibilits de restauration.

Page 253

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 254

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.1 Gnralits
I

6.2 Sauvegarde en Noarchivelog


I

Composants Oracle pour la sauvegarde et restauration

Hypothses
nous acceptons de perdre les donnes l'arrt de la base n'est pas gnant

Fichiers de donnes Fichiers Redo log Fichiers de contrle

Mode de sauvegarde
Backup complet la cration de la base et chaque modification importante de sa structure (ajout d'un fichier, d'un tablespace, ...). Ce backup doit se faire en mode normal aprs un SHUTDOWN NORMAL ou IMMEDIATE les fichiers sauvegarder sont :
les fichiers de donnes de tous les tablespaces les fichiers REDO LOG les fichiers de contrle

Les fichiers d'archives

Sauvegarde et Restauration

Les fichiers de sauvegarde

Segments rollback

La commande Alter database archivelog begin backup Multiplexage des fichiers Redo log et de contrle

La commande Recover commandes OS

NOTE : Il faut aussi dfinir une priodicit des sauvegardes adaptes aux besoins.

Page 255

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 256

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.2 Sauvegarde en Noarchivelog


I

6.2 Sauvegarde en Noarchivelog


I

Les tapes de sauvegarde en mode sans archive

Sauvegarde complte de tous les fichiers de la base

1. liste les noms des fichiers sauvegarder . Fichiers de donnes SELECT * FROM dba_data_files . Fichiers de contrles SELECT * FROM v$parameter WHERE name LIKE 'control_files'; . Les fichiers Redolog SELECT * FROM v$logfile 2. Arrter la base normalement (shutdown normal ou immediate) et utiliser les commandes de lOS (tar, cp, rcp, dump, copy, arj, ...) pour effectuer les sauvegardes 3. redmarrer la base aprs un CONNECT sys as sysdba SQL >startup 4. Effectuer en fonction de la quantit des donnes qu'on accepte de perdre des exports rguliers et dimensionner si utile les fichiers Redo log en fonction

Fichiers de Fichiers donn es de donnes

Fichiers de Fichiers donnes Redo log

Fichiers de Fichiers de donnes contrle

utiliser les commandes de lOS aprs arrt normal de la base

Units de sauvegarde : disque, bandes, ...

Page 257

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 258

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.3 Sauvegarde en mode Archivelog


I

6.3 Sauvegarde en mode Archivelog


I

Hypothses
Nous n'acceptons pas de perdre des donnes Nous n'acceptons pas l'arrt total de la base

Backup partiel

1. Backup dun Tablespace OFFLINE en 4 tapes Etape 1 : . Identifier les fichiers appartenant au tablespace X sql>SELECT file_name FROM sys.dba_data_files WHERE tablespace_name = X; Etape 2 : . Mettre le Tablespace X OFFLINE NORMAL sql>ALTER TABLESPACE X OFFLINE NORMAL ; Etape 3 : . Utiliser les commandes de lOS (cp, tar, dump, ...) pour sauvegarder effectivement les fichiers sur bande ou disque Etape 4 : . Ractiver le Tablespace X sql>ALTER TABLESPACE X ONLINE ;

Modes de sauvegarde
Backup complet la cration ou intervalles rguliers (suivre les mmes tapes qu'en mode noarchivelog) Backup partiel de la base Archivage automatique ou manuelle de fichiers REDO LOG Backup du fichier de contrle en cas de modification de la structure de la base (ajout dun tablespace ...)

Page 259

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 260

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.3 Sauvegarde en mode Archivelog


I

6.3 Sauvegarde en mode Archivelog


I

Backup partiel dune base

Sauvegarde du fichier de contrle


Utiliser les commandes de lOS pour sauvegarder

2. Backup dun Tablespace (TS) ONLINE en 4 tapes Etape 1 : . Identifier les fichiers appartenant au tablespace X sql>SELECT file_name FROM sys.dba_data_files WHERE tablespace_name = X; Etape 2 : . Indiquer Oracle le dbut de la sauvegarde de X sql>ALTER TABLESPACE X BEGIN BACKUP ; Etape 3 : . Utiliser les commandes de l'OS (cp, tar, dump, ...) pour sauvegarder effectivement les fichiers sur bande ou disque Etape 4 : . Informer Oracle de la fin de la sauvegarde du tablespace X sql>ALTER TABLESPACE X END BACKUP ; Note : La sauvegarde de plusieurs TS peut se faire squentiellement ou en parallle BEGIN BACKUP X BEGIN BACKUP Y sauvegardes - END BACKUP X END BACKUP Y.
Page 261 Copyright G. Mopolo-Mok Administration Oracle 10G

1. Sauvegarde du fichier de contrle Base ferme

2. Sauvegarde du fichier de contrle Base Ouverte sql>ALTER DATABASE BACKUP CONTROLFILE TO TRACE ; # Gnre le texte de la commande de cration du fichier de # contrle ou sql>ALTER DATABASE BACKUP CONTROLFILE nomfic [REUSE] ; # Gnre une copy du fichier de contrle

1. Les EXPORTS sont - t - ils ncessaires en mode ARCHIVELOG 2. Pourquoi est - t - il inutile de sauvegarder les REDO LOG en mode NOARCHIVELOG

Page 262

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.3 Sauvegarde en mode Archivelog


I

6.4 Restauration dune Base


I

Synthse
BASE X

Pourquoi restaurer ?
Au moment d'une panne, les blocs de donnes modifis par une transaction peuvent ne pas avoir t crits dans les fichiers REDO LOG Le fichier REDO LOG peut contenir des donnes non valides Les fichiers Redo log, les fichiers d'archives, les fichiers de contrles ou les fichiers de donnes peuvent tre corrompus ou perdus

Tablespace System

Tablespace User

Tablespace DATA

Fichier de Contrle

FichierS1

Fichieru1

FichieruN

Fichierd1

FichierdN

Deux types de recouvrement


Recouvrement d'instance (arrt brutal d'un ou plusieurs process Oracle tel DBWR, LGWR, ...) Recouvrement aprs une panne disque

Sauvegarde du fichier de contrle

Sauvegarde du tablespace User

Sauvegarde du fichierdN

Fichier Fichiers redo log log Redo Page 263

Archivage des Redo log

Fichier Fichiers redo log d'Archives Administration Oracle 10G Page 264 Copyright G. Mopolo-Mok Administration Oracle 10G

Copyright G. Mopolo-Mok

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Principe de la restauration des donnes


Fichiers de donnes (Base incohrente) Fichier de donnes (Base cohrente)

Restauration dinstance
Survient la suite de l'arrt brutal des process tches de fond (DBWR, LGWR, SMON, PMON, ...) est valable aussi bien en mode avec ou sans archive. Oracle ralise automatiquement les tapes suivantes :
application de l'image aprs application de l'image avant.

Application de limage aprs

Fichier Redo Log

Application de limage avant (ROLLBACK SEGMENT)

Image Image apr s Image aprs aprs

Image Image apr s aprs

Image Image aprs aprs

+
Image Image aprs Image aprs aprs

Donnes non commites Donnes commites Annulation des transactions non commites

Reconstruction des segments de donnes et des segments Rollback (RBS)

Fichiers d'Archives si ARCHIVELOG

Page 265

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 266

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Restauration aprs une panne disque : En mode NOARCHIVELOG


Si perte dun fichier de donnes : repartir dun Backup froid Si perte dun fichier Redo Log : rcuprer le fichier en miroir sinon restaurer la base entire Si perte d'un fichier de contrle : rcuprer le fichier en miroir ou recrer le fichier de contrle sinon restaurer la base entire!!!!!!!!!!!!!!!

Restauration aprs une panne disque : En mode ARCHIVELOG

La commande RECOVER * Cette commande est loutil de recouvrement en mode ARCHIVELOG * cest aussi une clause de la commande ALTER DATABASE (forme dutilisation dconseille par Oracle) * privilge requis : ALTER DATABASE
Syntaxe [ALTER DATABASE] RECOVER [ AUTOMATIC ] [ FROM location ] { [ DATABASE ] [ UNTIL CANCEL | UNTIL TIME date | UNTIL CHANGE integer | UNTIL BACKUP CONTROLFILE ] | TABLESPACE tablespace [ tablespace ] ... | DATAFILE 'filename' [ 'filename' ] ... | LOGFILE 'filename' | CONTINUE [ DEFAULT ] | CANCEL }

Page 267

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 268

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)


Description
gnrer automatiquement les noms des fichiers Redo appliquer indiquer la localisation des archives recouvrer la base entire (par dfaut) recouvrer jusqu'au fichier Redo log le plus rcent possible recouvrer jusqu' la date ~ de la panne recouvrer jusqu'aux transactions consistantes avant le SCN (integer)

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)


Recouvrement complet base ferme CAS OU CELA EST UTILE:
perte d'un ou plusieurs fichiers de donnes du Tablespace System perte d'un fichier de contrle (pas de copie) perte dun fichier de donnes contenant un segment RBS un fichier pour les RBS a t endommag la base ne peut tre ouverte en mode NORMAL NOTES :
pas de perte des Redo Log courants pas de perte des fichiers d'archives

La commande RECOVER (suite)


Mots cls ou paramtres
AUTOMATIC FROM location DATABASE UNTIL CANCEL UNTIL TIMES date UNTIL CHANGE integer

UNTIL BACKUP CONTROLFILE Utiliser la sauvegarde du fichier de contrle la place du fichier courant

TABLESPACE tablespace DATAFILE filename LOGFILE filename fichier CONTINUE [DEFAULT] CANCEL
Page 269

recouvrer uniquement un tablespace recouvrer un fichier de donnes continuer le recouvrement avec ce continuer en appliquant les redo automatiquement finir la restauration base sur l'annulation
Administration Oracle 10G Page 270

Copyright G. Mopolo-Mok

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)

. Recouvrement complet base ferme (suite)


Etapes suivre 1. arrter la base 2. remdier la panne 3. reprendre la dernire sauvegarde et les fichiers d'archives 4. redmarrer la base en mode MOUNT sql>connect sys as sysdba; sql >startup MOUNT ; 5. Renommer ou rlocaliser les fichiers si ncessaire sql>ALTER DATABASE RENAME FILE ... TO ... 6. Commencer le RECOUVREMENT sql>RECOVER AUTOMATIC DATABASE ...; 7. Ouvrir normalement la base sql>ALTER DATABASE OPEN ;

Recouvrement complet base ouverte, tablespace OFFLINE


CAS OU CELA EST UTILE : - les fichiers d'un ou plusieurs tablespaces sont endommags - les fichiers du tablespace SYSTEM ne sont pas endommags - les fichiers contenant les RBS ne sont pas endommags

Dans quels tats doivent tre les fichiers REDO LOG et d'ARCHIVES ?

Page 271

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 272

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)


Recouvrement complet base ouverte, tablespace OFFLINE (suite)
Etapes suivre 1. Si la Base nest pas dj ouverte, dmarrer une nouvelle instance (base monte puis ouverte). Mettre le tablespace ayant des fichiers endommags OFFLINE. sql>connect sys as sysdba (sql>STARTUP MOUNT puis OPEN ;) sql>ALTER TABLESPACE nomtablespace OFFLINE ; 2. Remdier la panne 3. Remplacer les fichiers endommags par leur sauvegarde 4. Recouvrer les fichiers endommags sql >RECOVER TABLESPACE nomtablespace1, ..., nomtablespaceN; sql>RECOVER DATAFILE nomfichier1, ..., nomfichierN; 5. Remettre le ou les tablespaces ONLINE sql>ALTER DATABASE nomtablespace1, ... ONLINE ;

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)

. Recouvrement incomplet
- Le recouvrement incomplet est ncessaire : . en cas de perte des fichiers Redolog . en cas de suppression accidentelle d'une table . ... - Le recouvrement incomplet peut tre bas sur : . l'annulation (UNTIL CANCEL). En cas de perte d'un ou plusieurs groupes de Redo Log, le recouvrement s'arrte sur le fichier Redo Log le plus rcent . le temps (UNTIL TIME date) : connaissant la date approximative laquelle est survenue une panne, on souhaite rcuprer l'activit sur la base d'avant cette date . le SCN (UNTIL CHANGE scn) : connaissant un Systme Change Number donn, on souhaite rcuprer toutes les transactions consistantes d'avant ce SCN

Page 273

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 274

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)

Restauration aprs une panne disque : En mode ARCHIVELOG (suite)

. Recouvrement incomplet (suite)


Etapes du recouvrement bas sur l'annulation, le temps et le SCN 1. Fermer si utile la base avec loption ABORT sql >connect sys as sysdba ; sql >shutdown abort ; 2. Sauvegarder tous les fichiers de la base (donnes, contrles, paramtres, ...) 3. Remdier la panne disque si ncessaire 4. Si le fichier de contrle ne correspond pas, chercher une bonne version sauve ou recrer le fichier de contrle 5. Rcuprer la sauvegarde des fichiers de la base mis en cause. Si aucune sauvegarde nexiste, recrer des fichiers de mme taille vide 6. sous sql, dmarrer une instance (base monte) ( suivre)
Page 275 Copyright G. Mopolo-Mok Administration Oracle 10G

. Recouvrement incomplet (suite)


Etapes du recouvrement bas sur l'annulation, le temps et le SCN (suite) 7. Rlocaliser ou renommer si utile les fichiers endommags 8. Mettre les fichiers rparer ONLINE si recouvrement bas sur le temps ou le SCN 9. Utiliser les commandes suivantes pour effectuer le recouvrement : sql> RECOVER database UNTIL CANCEL ; ou sql >RECOVER database UNTIL TIME 'YYYY-MM-HH24:MI:SS' ; ou sql>RECOVER database UNTIL CHANGE scn; Note : si l'on utilise la sauvegarde du fichier de contrle, prciser l'option USING BACKUP ...
Page 276 Copyright G. Mopolo-Mok Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Rcapitulatif des pertes et actions (1/2)


Mode d'archivage Archivelog recouvrement complet X X X X X X X Recouvrer le fichier manquant Faire un backup de tous les fichiers de donnes recouvrer le fichier de contrle recouvrer le fichier de contrle puis faire un recouvrement incomplet Noarchivelog partir d' une sauvegarde complte Recouvrer le fichier manquant sans effet recouvrer le fihchier de contrle sans effet

Rcapitulatif des pertes et actions (2/2)


Mode d'archivage Archivelog recouvrement incomplet recouvrement incomplet Recouvrer le fichier de contrle puis les les fichiers de donnes Recouvrer le fichier de contrle. Faire Reset redo log ... Faire un recouvrement incomplet Recouvrer le fichier de contrle puis les les fichiers de donnes puis sauver Recouvrer le fichier de contrle puis faire un recouvrement incomplet Noarchivelog partir d' une sauvegarde complte sans effet partir d' une sauvegarde complte

Type de fichiers endommags Fichiers Fichiers Fichiers Fichiers de de redo log redo log contrles donnes archives X

Type de fichiers endommags Fichiers Fichiers Fichiers Fichiers de de redo log redo log contrles donnes archivs X X X X X X

X X

sans effet sans effet Recrer un fichier de contrle si arrt normal sinon partir d'un backup complet sans effet

X X

X X X

Faire un recouvresans effet ment incomplet Recouvrer le fichier sans effet de contrle puis recouvrement incomplet Recouvrer le fichier Recouvrer le de contrle puis fichier manquant recouvrement incomplet

Page 277

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 278

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Exemples de problmes et restauration

Exemples de problmes et restauration(suite)

Exemple 1: perte dun fichier de donnes en NOARCHIVELOG


Solution : En cas de perte d'un fichier de donnes en mode NOARCHIVELOG, on doit rpartir d'un backup froid Etapes 1. Si la base est encore ouverte, faire un shutdown abort sql > shutdown abort ; 2. Si la panne disque est corrige (les fichiers de donnes peuvent reprendre leur ancienne localisation) faire 2.1 puis 3. Sinon faire 2.1, 2.2, 2.3 puis 3 2.1 Rcuprer le plus rcent backup (tous les fichiers pas seulement ceux endommags). $ cp, tar, ... 2.2 modifier si utile la localisation des fichiers de contrle CONTROL_FILES=(new_path/nom1, new_path/nom2,...) 2.3 dmarrer l'instance sql >startup mount nombase pfile=path/initsid.ora 2.4 Procder si ncessaire au renommage et au dplacement des fichiers. sql>ALTER DATABASE RENAME ... 3. Ouvrir la base en rinitialisant si ncessaire les Redo Log sql >ALTER DATABASE OPEN RESETLOGS ;
Page 279 Copyright G. Mopolo-Mok Administration Oracle 10G

Exemple 2 : perte dun fichier de donnes en ARCHIVELOG occasionnant l'arrt de la base 1. Si la base est encore ouverte, faire un shutdown abort sql>connect sys as sysdba; sql> shutdown abort ; 2. A partir de la sauvegarde la plus rcente, reconstruire uniquement les fichiers perdus (vers l'ancienne localisation ou vers une nouvelle localisation) $ cp ... sql> startup mount nombase pfile=path/initsid.ora sql>ALTER DATABASE RENAME ... 3. Effectuer un recouvrement de donnes avec la commande RECOVER en donnant les noms des archives appliquer sql>RECOVER DATABASE ... 4. Ouvrir normalement la base sql>ALTER DATABASE OPEN ;

Page 280

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

6.4 Restauration dune base


I

Exemples de problmes et restauration(suite)

Exemples de problmes et restauration(suite)

Exemple 3 : perte dun fichier redo log : plusieurs solutions sont possibles 1. Les Fichiers Redo Log sont multiplexs 1.1 si le Fichier Redo Log est le fichier courant, provoquer un SWITCH LOG FILE pour passer au groupe suivant. sql>ALTER SYSTEM SWITCH LOGFILE ; 1.2 Supprimer les fichiers problme et les remplacer par la copie (miroir) 2. Un groupe de fichiers Redo Log entier est Inaccessible 2.0 Recrer le groupe endommag 2.1 Le groupe n'tait pas actifs alors une rparation Base ouverte est possible 2.2 Si le groupe tait courant, arrter la base 2.3 Redmarrer la base et faire si ncessaire un RECOVER DATABASE UNTIL CANCEL
Page 281 Copyright G. Mopolo-Mok Administration Oracle 10G

Exemple 4 : un utilisateur a supprim accidentellement ses tables (mode avec Archive) 1. Sauvegarder la base existante (BE) 2. Reconstruire une copie temporaire de la base (BT) - Faire une Recouvrement bas sur le temps (date approximative de la suppression de donnes) sql>RECOVER DATABASE UNTIL TIME date; 3. Export les donnes supprimes accidentellement $ exp system/manager owner=nomuser 4. Supprimer la base temporaire $ rm ... /* des fichiers de donnes, contrles et Redo log*/ 5. Revenir sur la base courante (BE) et importer les donnes de l'utilisateurs $ imp system/manager fromuser=nomuser touser=nomuser

Page 282

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base


I

7. Les outils dadministration et les NLS


I

Exemples de problmes et restauration(suite)

Plan
7. Outils d'administrations et les NLS
7.1 Export/Import
7.1.1 Gnralits 7.1.2 Export 7.1.3 Import 7.1.4 Les tablespaces transportables

Exemple 5 : un tablespace a t supprim accidentellement 1. Sauvegarder la base existante 2. Reconstruire une copie temporaire de la base - Faire une Recouvrement bas sur le temps (date approximative de la suppression de donnes) ou le SCN sql>RECOVER DATABASE UNTIL TIME date; ou sql>RECOVER DATABASE UNTIL CHANGE scn ; 3. Exporter les donnes du tablespace supprimes accidentellement $ exp system/manager ... 4. Supprimer la base temporaire $ rm ... /* des fichiers de donnes, contrles et redos*/ 5. Revenir sur la base courante et importer les donnes exportes $ imp system/manager...

7.2 Sqlloader 7.3 Sqlplus 7.4 Les NLS 7.5 Oracle Entreprise Manager(OEM)
7.5.1 Objectifs 7.5.2 Rappel sur les outils d'administration Oracle 7.5.3 L'Architecture de OEM 7.5.4 Les composants OEM
7.5.4.1 La console OEM 7.5.4.2 Les services communs de OEM 7.5.4.3 Outils d'administration bases de donnes OEM

7.5.4 Les composants OEM


7.6.4.4 Le Performance Pack OEM

7.5.5 Utilisation de OEM

Page 283

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 284

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1 Export/Import
I

7.1.1 Gnralits
I

Plan
7.1.1 Gnralits 7.1.2 Export 7.1.3 Import

Pourquoi Exporter et importer ?


Archivage de donnes Upgrade vers de nouvelles versions Sauvegarde et restaurations de donnes Dplacement de donnes entre bases Oracle

Tches ralisables avec Export/Import


Stocker des donnes indpendamment du SGBD extraire uniquement le schma de donnes stocker des donnes utiles temporairement ou inactives oprer des sauvegardes intelligentes (un ou plusieurs objets, un ou plusieurs utilisateurs, toute la base, ...) faire des exports / imports incrmentaux ou cumulatifs dplacer des donnes (entre versions Oracle, entre bases, entre environnements, entre tablespaces, ...) rduire la fragmentation des donnes corriger les paramtres de stockage

Page 285

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 286

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.1 Gnralits
I

7.1.2 Export
I

Reprsentation schmatique de l'import/export

Que peut - t - on exporter ?

1. tables Export dune ou N tables dans un schma. Le DBA peut exporter les tables de N schma

BASE DE DONNEES ORACLE SOURCE Export

BASE DE DONNEES ORACLE CIBLE Import

2. Utilisateur ou schma Export de tous les objets appartenant au schma c'est dire un utilisateur (tables, vues, squences, donnes, privilges, index, ...) 3. La base entire

FICHIERS OS

Export de toute la base sauf les objets de lutilisateur SYS dOracle. Il est utile davoir le privilge EXP_FULL_DATABASE.

Les bases de donnes Oracle source et cible peuvent tre : - la mme - diffrentes sur une mme machine - diffrentes sur deux machines diffrentes ...
Page 287 Copyright G. Mopolo-Mok Administration Oracle 10G Page 288

Pourquoi est - t - il interdit de travailler SYS ? Pourquoi est - t - il si fondamental davoir le privilge EXPORT_FULL_DATABASE ?

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export
I

7.1.2 Export
I
Mode FULL
schma de la table donnes de la table grant sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues profiles catalogue de rplication cot des ressources rles dfinition des RBS Options d'audit systme privilges systmes dfinition des tablespaces quotas sur les tablespaces dfinition des utilisateurs Administration Oracle 10G

Que peut - t - on exporter ?


Mode Table
schma de la table donnes de la table grant sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users

Utilisation de lutilitaire EXPORT


s'assurer que le script catview.sql a t excut s'assurer qu'on a les privilges qu'il faut :
tre propritaire d'un schma permet d'exporter les objets du schma Avoir le privilge BACKUP ANY TABLE pour exporter les objets d'un autre utilisateur Avoir le privilge EXP_FULL_DATABASE pour pouvoir exporter les objets de toute la base

Mode Utilisateur
schma de la table donnes de la table grant fait sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues

Activer l'export dans l'un des modes suivants :


mode interactif (ne supporte pas toutes les commandes) mode commande mode batch Via Entreprise Manager
Page 290 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 289

Copyright G. Mopolo-Mok

7.1.2 Export
I

7.1.2 Export
I

Les paramtres d'exports


Ces paramtres permettent de fixer les options d'export Ces paramtres peuvent tre dfinis de faon :
implicite (si l'on est en mode interactif) explicite (si l'on est en mode commande et batch)

Les paramtres d'exports (suite)


Description
username/password rows_in_array*max_row_size nom du fichier en sortie compresser les extents en une exporter aussi les privilges exporter les index exporter les lignes exporter les contraintes fichier log exporter toute la base utilisateur(s) exporter tables exporter

Nom paramtre
userid buffer file compress grants indexes rows constraints log full owner tables record lenght inctype record parfile consistent statistics help

Valeur par Utilis en mode dfaut interactif ?


none 4096 expdat.dmp Y Y Y Y Y none N undefined undefined non non non non non non

Aide en ligne sur les paramtres $ exp help=y

taille(bytes) de l'enreg. du fichier OS dpendant non incrmental, cumulatif, complet ? none utile si inctype est mis fichier des paramtres type de stat gnrer en import aide Y none estimate N

lecture consistante (read only mis) N

Notes: certains paramtres sont mutuellement exclusifs(table, user et full)


Page 291 Copyright G. Mopolo-Mok Administration Oracle 10G Page 292 Copyright G. Mopolo-Mok Administration Oracle 10G

7.1.2 Export
I

7.1.2 Export
I

Les paramtres d'exports (suite)


Description
Chemin direct affiche la progression toute les N lignes cohrence entre les tables taille max de chaque fichier suspension en cas derreurs despace N

Export en mode interactif et commande


$ exp User name : password : Enter array fetch buffer size : 4096 > Export file : expdat.dmp > E (ntire database) U(ser), T(ables) : U> Export grants (Y/N) : Y> Export table data (Y/N) : Y> Compress extents (Y/N) :Y> Schema to export : (return to quit)> table to be exported : (return to quit)> . Export

Nom paramtre
Direct feedkack Consistent filesize resumables

Valeur par Utilis en mode dfaut interactif ?


N 0

. Export en mode interactif (options compltes)

Transport_tablespace impport des mtadonnes des TS N Tablespace Datafile TS transporter fichier transporter

TTS_OWNER Utilisateurs propritaires des donnes

en mode commande

$ exp [username/passwd] [param1 = value 1] ... [paramN = value N] Notes : 1) un des paramtres au moins doit tre mis explicitement 2) si table, owner ou full n'est pas mis, il s'agit d'exporter l'utilisateur qui fait l'export
Page 294 Copyright G. Mopolo-Mok Administration Oracle 10G

Notes: certains paramtres sont mutuellement exclusifs(table, user et full)


Page 293 Copyright G. Mopolo-Mok Administration Oracle 10G

7.1.2 Export
I

7.1.2 Export
I

Export en mode interactif et commande (suite)


Exemple 1 : export de la table emp de lutilisateur tintin a) en mode commande $ exp tintin/milou file=tintin_emp.dmp tables=emp b) en mode interactif
$ exp tintin/milou Enter array fetch buffer size : 4096 > Export file : expdat.dmp >tintin_emp.dmp U(ser), T(ables) : U>T Export grants (Y/N) : Y> Export table data (Y/N) : Y> Compress extents (Y/N) :Y> table to be exported : (return to quit)>emp

Export en mode interactif et commande (suite)


Exemple 2 : tous les objets de lutilisateur tintin a) en mode commande $ exp tintin/milou file=tintin.dmp b) en mode interactif
$ exp tintin/milou Enter array fetch buffer size : 4096 > Export file : expdat.dmp >tintin.dmp U(ser), T(ables) : U>U Export grants (Y/N) : Y> Export table data (Y/N) : Y> Compress extents (Y/N) :Y>

Page 295

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 296

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export
I

7.1.2 Export
I

Export en mode interactif et commande (suite)


Exemple 3 : export des objets dun utilisateur par un autre a) en mode commande $ exp system/manager owner=rackham file=rackham.dmp b) en mode interactif
$ exp system/manager Enter array fetch buffer size : 4096 > Export file : expdat.dmp >rackham.dmp E(ntire database) U(ser), T(ables) : U>U Export grants (Y/N) : Y> Export table data (Y/N) : Y> Compress extents (Y/N) :Y> Schema to export: (return to quit)>rackham

Export en mode interactif et commande (suite)


Exemple 4 : export de la la base entire a) en mode commande $ exp system/manager full=y b) en mode interactif
$ exp system/manager Enter array fetch buffer size : 4096 >10000 Export file : expdat.dmp >cours.dmp E(ntire database) U(ser), T(ables) : U>E Export grants (Y/N) : Y> Export table data (Y/N) : Y> Compress extents (Y/N) :Y>

Page 297

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 298

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export
I

7.1.2 Export
I

Export en mode batch


les paramtres sont passs dans un fichier de paramtres permet de s'affranchir de la limite de la taille de la ligne de commande permet de faciliter l'automatisation de l'export Syntaxe admise dans le fichier des paramtres MOT CLE= valeur MOT CLE= (valeur) MOT CLE=(Valeur 1, Valeur 2, ..., Valeur N) Exemple de fichier de paramtres PARFIC.PAR FULL=Y FILE=cours.dmp GRANT=Y INDEX=y Activation $ exp parfile=parfic.par
Administration Oracle 10G

Export incrmental, cumulatif et complet


Gnralits
stratgie de sauvegarde tale dans le temps valide uniquement si FULL = Y et si l'utilisateur qui le fait a le privilge EXP_FULL_DATABASE permet de racourcir les temps d'exports

trois stratgie de backup incrmental


Type de stratgie
Backup incrmental

Description
Backup uniquement des objets modifis depuis le dernier backup Incrmental ou Cumulatif ou Complet. Backup uniquement des objets modifis depuis le dernier backup Cumulatif ou Complet Backup de tous les objets.

Backup cumulatif

Backup complet

Page 299

Copyright G. Mopolo-Mok

Page 300

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export
I

7.1.2 Import
I

Export incrmental, cumulatif et complet (suite)

Que peut - t - on importer ?

Exemple dexport incrmental

1. tables

Type dexport Objet prsent


1er export Incrmental 2me export Incrmental 1er Export Cumulatif 1er Export Complet table1, index1, table2 , table3, table4 table1, index1 table2 , table3, table4 table5, table6 table1, index1 table2 , table3, table4 table5, table6 table1, index1 table2 , table3, table4 table5, table6

objet export
table1, table2

import dune ou N tables vers un schma. Le DBA peut importer les tables de N schma 2. Utilisateur ou schma

table1, table5, table6

Import de tous les objets appartenant au schma c'est dire un utilisateur (tables, vues, squences, donnes, privilges, index) 3. La base entire

table1, table2,table5,table6 (fusion des fichiers d'export incrmental) table1, index1 table2 , table3, table4 table5, table6

Import de toute la base. Il est utile davoir le privilge EXP_FULL_DATABASE.

Exemple de session dexport incrmental

$ exp system/manager inctype=incremental $ exp system/manager inctype=cumulative $ exp system/manager inctype=complete

Quel est la diffrence entre "export full database" et "export complete" ?


Page 301 Copyright G. Mopolo-Mok Administration Oracle 10G Page 302 Copyright G. Mopolo-Mok Administration Oracle 10G

7.1.3 Import
I

7.1.3 Import
I
Mode FULL
schma de la table donnes de la table grant sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues profiles catalogue de rplication cot des ressources rles dfinition des RBS Options d'audit systme privilges systmes dfinition des tablespaces quotas sur les tablespaces dfinition des utilisateurs Administration Oracle 10G

Que peut - t - on importer ?


Mode Table
schma de la table donnes de la table grant sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users

Utilisation de lImport
sassurer que le script catview.sql a t excut sassurer quon a les privilges qu'il faut :
import d'objet dans son propre schma :
avoir les privilges utiles pour crer les objets concerns. Exemple : import d'une table, avoir le privilge Create table avoir les quotas ncessaires sur les tablespaces

Mode Utilisateur
schma de la table donnes de la table grant fait sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues

importer les grants ( 2 cas)


tre propritaire de l'objet ou avoir reu le privilge avec With Grant Option ou With Admin Option

importer les objets vers un autre schma : Avoir le privilge EXP_FULL_DATABASE importer les objets systmes (profiles, DB link, la dfinition des tablespaces, ...). Avoir le privilge EXP_FULL_DATABASE

activer limport : en interactif, en mode commande ou en batch


Page 304 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 303

Copyright G. Mopolo-Mok

7.1.3 Import
I

7.1.3 Import
I

Les paramtres d'Import


Ces paramtres permettent de fixer les options d'import Ces paramtres peuvent tre dfinis de faon :
implicite (si l'on est en mode interactif) explicite (si l'on est en mode commande et batch)

Import en mode interactif et commande


Description
rows_in_array*max_row_size jeux de caractre utilis l'export commit aprs chaque tableau inclus l'option reuse de fichier Nbre de lignes afficher / objet nom du fichier en entre liste de schmas importer importer toute la base importer aussi les prvilges aide ignorer les erreur de cration incrmental, cumulatif, complet ? exporter les index y insrer les create index fichier log utile si trusted Oracle taille(bytes) de l'enreg. du fichier importer les lignes ? visualiser au lieu d'importer tables importer schma cible username/password

Nom paramtre
buffer charset commit destroy feedback file fromuser full grants help ignore inctype indexes indexfile log mls* record lenght rows show tables touser userid

Valeur par Utilis en mode dfaut interactif ?


4096 none N N 0 (toutes) expdat.dmp NONE N Y N N none Y NONE none oui

oui oui oui oui

Aide en ligne sur les paramtres $ imp help=y

OS dpendant Y oui N oui non none none oui

Page 305

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 306

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.3 Import
I

7.1.3 Import
I

Les paramtres dimports (suite)


Description
craser le fichier de donnes Ecrire les infos de tables/index dans le fichier indiqu

Import en mode interactif et commande (suite)


$ imp User name : password : Import file : expdat.dmp > Enter array fetch buffer size : 10240 > List contents of import file only (Y/N) : N> Ignore create errors due to object existence (Y/N) : N> Import grants (Y/N) : Y> Import table data (Y/N) : Y> Import entire export file (Y/N) : Y> Si N (non) alors renseigner : Username : tablename: . Import

Nom paramtre
Destroy Indexfile

Valeur par Utilis en mode dfaut interactif ?


N

. Import en mode interactif (options compltes)

Skip_unusable_index Ignorer la maintenance dindex unitilisables feedkack affiche la progression toute les N lignes

N 0

toid_novalidate sauter la validation des id filesize statistics resumables Compile taille max de chaque fichier vidage importer les statistiques suspension en cas derreurs despace Compiler les procdures Y N

Transport_tablespace impport des mtadonnes des TS N Tablespace Datafile TS transporter fichier transporter

en mode commande

$ imp [username/passwd] [param1 = value 1] ... [paramN = value N] Notes : 1) un des paramtres au moins doit tre mis explicitement 2) si table, owner ou full ne sont pas mis, il s'agit d'importer vers l'utilisateur qui fait l'export
Administration Oracle 10G Page 308 Copyright G. Mopolo-Mok Administration Oracle 10G

TTS_OWNER Utilisateurs propritaires des donnes

Notes: certains paramtres sont mutuellement exclusifs(table, user et full)


Page 307 Copyright G. Mopolo-Mok

7.1.3 Import
I

7.1.3 Import
I

Import en mode interactif et commande (suite)


Exemple 1 : Import de la table emp de lutilisateur tintin par ladministrateur a) en mode commande $ imp system/manager file=tintin.dmp fromuser=tintin tables="(emp)" b) en mode interactif
$ imp system/manager Import file : tintin.dmp > Enter array fetch buffer size : 10240 > List contents of import file only (Y/N) : N> Ignore create errors due to object existence (Y/N) : N> Import grants (Y/N) : Y> Import table data (Y/N) : Y> Import entire export file (Y/N) : Y>N Username :titin Enter table names. Null list means all tables for user Enter table name or . if done :emp Enter table name or . if done : .

Import en mode batch


les paramtres sont passs dans un fichier de paramtres permet de s'affranchir de la limite de la taille de la ligne de commande permet de faciliter l'automatisation de l'import Syntaxe admise dans le fichier des paramtres MOT CLE= valeur MOT CLE= (valeur) MOT CLE=(Valeur 1, Valeur 2, ..., Valeur N) Exemple de fichier de paramtres PARIMP.PAR FILE=tintin.dmp GRANT=Y INDEX=y FROMUSER=tintin
tables="(emp)"

Activation $ imp system/manager parfile=parimp.par


Page 310 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 309

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.3 Import
I

7.1.3 Import
I

Import incrmental, cumulatif ou complet


Gnralits
stratgie d'import tale dans le temps valide uniquement si FULL = Y et si l'utilisateur qui le fait a le privilge EXP_FULL_DATABASE permet de raccourcir les temps d'imports

Import incrmental, cumulatif ou complet (suite)


Etapes suivre
1. importer les objets system avec le plus rcent import INCREMENTAL export ou le rcent CUMULATIF export si aucun INCREMENTAL n'existe 2. importer le plus rcent export COMPLET 3. importer tous les exports CUMULATIFS aprs le dernier export COMPLET 4. importer tous les exports INCREMENTAUX aprs le dernier export CUMULATIF

La commande dIMPORT IMP username/passwd INCTYPE={SYSTEM|RESTORE} SYSTEM : importe les objets systmes les plus rcents grce l'export incrmental le plus rcent. Pas d'import des objets et donnes des utilisateurs. RESTORE : importe tous les objets et donnes des utilisateurs en appliquant les export incrmentaux dans un ordre chronologie ascendant (du plus vieux export au plus rcent)
Page 311 Copyright G. Mopolo-Mok Administration Oracle 10G

Exemple
temps ... COM1 ... CUM1 INC1 INC2

$ imp system/manager INCTYPE=SYSTEM FULL=Y FILE=INC2 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=COM1 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=CUM1 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=INC1 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=INC2
Page 312 Copyright G. Mopolo-Mok Administration Oracle 10G

7.1.4 Les tablespaces transportables


I

7.1.4 Les tablespaces transportables


I

Gnralits
Depuis la version 8i Oracle permet de dplacer un Tablespace d'une base vers une autre Cette mthode de transport de donnes est plus rapide que le traditionnel Import/Export Le systme d'exploitation et le matriel de la machine source doivent tre le mme que celui de la machine cible les bases source et cible doivent avoir la mme taille de bloc et mme CHARACTER SET Avant de dplacer un tablespace, il doit tre mis READONLY puis le schma des donnes contenus dans le tablespace doit tre export.

Avantages des tablespaces transportables


Copie rapide des informations entre les bases de production, la base du DatawareHouse et les bases DataMart Archivage rapide d'information surtout dans un contexte DWH Publication rapide de donnes d'un service vers un autre. D'une base vers une autre.

Limitations ; le dplacement d'un tablespace n'est pas possible s'il contient :


Snapshot/replication Function-based indexes Scoped REFs Domain indexes (un nouveau type d'index cr par l'utilisateur) 8.0-compatible advanced queues with multiple recipients

Page 313

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 314

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.4 Les tablespaces transportables


I

7.2 Sqlloader
I

Etapes de dplacement d'un Tablespace


1. Vrification que le tablespace est transportable.
SQL> EXECUTE sys.dbms_tts.transport_set_check('USERS', TRUE); SQL> SELECT * FROM sys.transport_set_violations;

Plan
Gnralits Fonctionnement de SQLLOADER Le langage de dfinition de donnes de SQLLOADER Le mode chargement traditionnel et direct Les exemples

2. Cration d'un pool de fichiers transportables.


Un pool contient les fichiers du ou des tablespaces et le ou les fichiers contenant les mtadonnes Sql>ALTER TABLESPACE tstest READ ONLY; Exporter le schma des donnes du ou des tablespaces EXP TRANSPORT_TABLESPACE=y TABLESPACES=(tstest) TRIGGERS= y/n CONSTRAINTS= y/n GRANTS= y/n FILE=tstest.dmp

3. Transport du pool de fichiers


Copie des fichiers de donnes et d'exports du schma vers la base cible (via les commandes de lOS)

4. Attacher le tablespace la base cible


faire un import pour attacher les fichiers de donnes la base cible. Emplacement identique la base source. c:>IMP TRANSPORT_TABLESPACE=y DATAFILES=('f:\oracle\oradata\dbtests\tstest2\tstest_1.dbf') TABLESPACES=(tstest) TTS_OWNERS=(sadm) FROMUSER=(sadm) TOUSER=(scott) FILE=tstest.dmp Page 315 Copyright G. Mopolo-Mok Administration Oracle 10G Page 316 Copyright G. Mopolo-Mok Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Gnralits
permet de charger des donnes de format ASCII, EBCDIC, DBASE, EXCEL, .. dans une base Oracle peut traiter diffrents formats d'enregistrements (enregistrements champs fixes et/ou variables encapsuls ou non avec des dlimiteurs spciaux) permet partir de plusieurs enregistrements physiques de crer une ligne logique dans la base permet partir d'un enregistrement physique de crer plusieurs lignes logiques dans la base permet de charger des donnes depuis un disque ou une bande permet d'acclrer le chargement de donnes grce au chemin DIRECT Fournit des rapports prcis de chargement

Fonctionnement de SQLLOADER
Fichier de contrles (contient la description du chargement)

Fichier de donnes (contient les enregistrements charger)

SQLLOADER (extraction des champs) accept SQLLOADER (traitement de la clause WHEN) Slectionn Fichier DISCARD (enregistrements dtruits : clause WHEN) SGBD Oracle

rejet

dtruit

Fichier BAD (mauvais enregistrements)

Rejet

Insr Base de donnes Orcale

Page 317

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 318

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le fichier de donnes
Le fichier de donnes contient les enregistrements charger Un enregistrement dans le fichier est compos de N champs spars par des sparateurs (virgule, espace, ...) Un champ peut tre :
numrique ou de type chane de caractres fixe ou variable encapsul entre des ctes ou libre. Exemple "Rackham le Rouge"

Le fichier de donnes (suite)


Fichier avec des enregistrements fixes
champ 2 INTEGER N A M 3 1 5 2 2 4 1 3 3 4 4 2

Exemple 1:

champ 1 CHAR de 7 T I R A L A N C T K I H

M A

Exemple 2: Fichier avec des enregistrements variables


champ 1 CHAR T I R A C N K L T H A I A M N M A 3 1 5 champ 2 INTEGER 2 2 4 1 3 3 4 4 2

Page 319

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 320

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le fichier de contrle
Ce fichier contient les commandes de description des enregistrements : C'EST LE LDD DE SQLLOADER Ce fichier peut contenir aussi les donnes Il est possible de rcuprer conditionnellement des enregistrements CLAUSE WHEN Notes : Nous reviendrons plus loins sur le LDD de SQLLOADER

Le fichier LOG
Ce fichier contient les informations suivantes :
1) Informations d'en-tte (version Sqlloader, la date, ...) 2) Les informations gnrales
nom des fichiers utiliss (fichiers de contrle, de donnes, bad et discard) la commande lance avec ces arguments bilan du chargement

3) les informations sur les tables charges 4) les informations sur le fichier de donnes (lignes traites, rejetes, dtruites, ...) 5) Rsum des statistiques (espace utilis, dbut / fin de chargement, temps coul, cpu consomme, ...).

Page 321

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 322

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le fichier Discard
Ce fichier reoit les enregistrements valides mais ne vrifiant pas la condition derrire la clause WHEN son format est celui du fichier de donnes son extension est nomfic.dis

La commande SQLLOADER

Syntaxe
sqlldr username/passwd [param1=value1] ... [paramN=vauleN]

Tableau des paramtres


Mot cl
BAD BINDSIZE CONTROL DATA DIRECT DISCARD DISCARDMAX ERRORS FILE LOAD LOG PARFILE PARALLEL ROWS SILENT SKIP USERID

description
spficie le fichier de rejet taille max de la bind array nom fichier de contrle nom du fichier ayant les enreg. mode direct Ficher des enreg. dtruits Max de lignes rejetable nbre d'erreurs d'insertion utile en option parallle Nbre max d'enreg. logique charger Fichier d'info. sur le chargement fichier de paramtre chargement concurrent NB Lignes dans le bind array suppression de messages Enreg. sauter depuis le dbut nom utilisateur + passwd

valeur / dfaut
nomcontrolfile.BAD os dpendant ctl.if nomcontrolefile.dat nomcontrolfile.date

Le fichier bad
ce fichier reoit deux types d'enregistrements :
ceux non dcrits dans le fichier de Contrle et ceux violant les contraintes de la Base Oracle

tous nomcontrolfile.log aucun

Page 323

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 324

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

La commande SQLLOADER (suite)

Le LDD de SQLLOADER

Exemple dactivation de sqlloader en mode commande


$ sqlldr system/manager CONTROL=utlexple1.ctl LOG=utlexple1.log BAD=utlexple1.bad SILENT=(HEADER, ERRORS, DISCARDS) ERRORS=200 Exemple dactivation de sqlloader en mode batch Les paramtres peuvent tre regroups dans un fichier de paramtres $ sqlldr PARFILE=utlexple1.par Contenu de utlexple1.par userid= system/manager control=utlexple1.ctl log=utlexple1.log bad=utlexple1.bad silent=(HEADER, ERRORS, DISCARDS) errors=200

Syntaxe
OPTIONS (options) LOAD DATA [{INFILE | INDDN} {nom_fichier | * } [STREAM | RECORD | FIXED n [BLCKSIZE taille] | VARIABLE [m]] [{BADFILE | BADDN} nom_fichier] [{DISCARDFILE | DISCARDDN} nom_fichier] [{DISCARDS | DISCARDMAX} n] [{INFILE | INDDN} ...] [APPEND | REPLACE | INSERT] [RECLEN n] [{CONCATENATE n | CONTINUEIF {[THIS | NEXT] (dbut [:fin]) | LAST} oprateur {'chaine_de_caractre' | X'chane_hexa'}}] INTO TABLE nom_table [APPEND | REPLACE | INSERT] [WHEN conditions] [FIELDS [spcification_dlimiteur]] ( nom_colonne ) RECNUM | CONSTANT valeur | SEQUENCE ({n | MAX | COUNT}[, incrmentation]) | POSITION ({dbut [: fin] | * [+n]}] spcification_de_type_de_donnes [NULLIF condition] [EFAULT condition] } [, ...] ) [INTO TABLE ...] [BEGINDATA] donnes

Page 325

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 326

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le LDD de SQLLOADER (suite)


Description

Le LDD de SQLLOADER (suite)


Exemple
Exemple 1 : Fichier de contrle et de donnes LOAD DATA INFILE * INTO TABLE DEPT FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY " (DEPTNO, DNAME, LOC) BEGIN DATA 12,RESEARCH,"SARATOGA" 10,"ACCOUNTING",CLEVELAND 11,"ART",SALEM 13,FINANCE,"BOSTON" 21,"SALES",PHILA. 22,"SALES",ROCHESTER 42,"INTL","SAN FRAN"

Mot cl

OPTIONS (options) positionne des options de sqlloader (load, skip, errors, rows, binsize, silent) INFILE | INDDN indique le nom du fichier de donnes. Si * alors les donnes sont la fin du fichier de contrle (clause BEGIN DATA) Fichier de donnes = suites de caractres. Newline indique la fin de chaque enregistrement sqlloader utilise le systme de gestion de fichiers de l'OS hte sqlloader utilise un enreg. de taille fixe

STREAM

RECORD FIXED

APPEND | REPLACE | INSERT mode d'insertion d'enregistrements dans la base RECLEN n longueur max d'un enregistrement logique

CONCATENATE n | CONTINUEIF construction d'un enreg. logique partir de plusieurs enreg. physiques INTO TABLE
Page 327

description de la table cible


Copyright G. Mopolo-Mok Administration Oracle 10G Page 328 Copyright G. Mopolo-Mok Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le LDD de SQLLOADER (suite)


Exemple (suite)
Exemple 2 :
Fichier de contrle : ulcase2.ctl LOAD DATA INFILE ulcase2.dat INTO TABLE EMP ( EMPNO POSITION(01:04) INTEGER EXTERNAL, ENAME POSITION(06:15) CHAR, JOB POSITION(17:25) CHAR, MGR POSITION(27:30) INTEGER EXTERNAL, SAL POSITION(32:39) DECIMAL EXTERNAL, COMM POSITION(41:48) DECIMAL EXTERNAL, DEPTNO POSITION(50:51) INTEGER EXTERNAL) Fichier de donnes : ulcase2.dat 7782 CLARK 7839 KING 7934 MILLER 7566 JONES 7499 ALLEN 7654 MARTIN 7658 CHAN MANAGER PRESIDENT CLERK MANAGER SALESMAN SALESMAN ANALYST 7839 2572.50 5500.00 7782 920.00 7839 3123.75 7698 1600.00 7698 1312.50 7566 3450.00 10 10 10 20 30 30 20

Le LDD de SQLLOADER (suite)

Exemple (suite)
Exemple 3 :
Fichier de contrle : ulcase3.ctl -- Variable length, delimited and enclosed data format LOAD DATA INFILE * APPEND INTO TABLE EMP FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY " (empno, ename, job, mgr, hiredate DATE(20) "DD-Month-YYYY", sal, comm, deptno CHAR TERMINATED BY :, projno, loadseq SEQUENCE(MAX,1) ) BEGINDATA 7782, "Clark", "Manager", 7839, 09-June-1981, 2572.50,, 10:101 7839, "King", "President", , 17-November-1981, 5500.00,, 10:102 7934, "Miller", "Clerk", 7782, 23-January-1982, 920.00,, 10:102 7566, "Jones", "Manager", 7839, 02-April-1981, 3123.75,, 20:101 7499, "Allen", "Salesman", 7698, 20-February-1981, 1600.00, 300.00, 30:103 7654, "Martin", "Salesman", 7698, 28-September-1981, 1312.50, 1400.00, 30:103 7658, "Chan", "Analyst", 7566, 03-May-1982, 3450,, 20:101
Page 330 Copyright G. Mopolo-Mok Administration Oracle 10G

300.00 1400.00

Page 329

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le LDD de SQLLOADER (suite)

Le LDD de SQLLOADER (suite)

Exemple (suite)
Exemple 4 :
Fichier de contrle : ulcase4.ctl LOAD DATA INFILE "ulcase4.dat" DISCARDFILE "ulcase4.dis" DISCARDMAX 999 REPLACE CONTINUEIF (1) = * INTO TABLE EMP ( EMPNO POSITION(01:04) INTEGER EXTERNAL, ENAME POSITION(06:15) CHAR, JOB POSITION(17:25) CHAR, MGR POSITION(27:30) INTEGER EXTERNAL, SAL POSITION(32:39) DECIMAL EXTERNAL COMM POSITION(41:48) DECIMAL EXTERNAL, DEPTNO POSITION(50:51) INTEGER EXTERNAL, HIREDATE POSITION(52:60) INTEGER EXTERNAL) Fichier de donnes: utlcase4.dat *7782 CLARK MANAGER 7839 2572.50 -10 2512-NOV-85 *7839 KING PRESIDENT 5500.00 2505-APR-83 *7934 MILLER CLERK 7782 920.00 2508-MAY-80

Exemple (suite)
Exemple 5:
Fichier de contrle : ulcase5.ctl
LOAD DATA INFILE ulcase5.dat BADFILE ulcase5.bad DISCARDFILE ulcase5.dis REPLACE INTO TABLE EMP (EMPNO POSITION(1:4) INTEGER EXTERNAL, ENAME POSITION(6:15) CHAR, DEPTNO POSITION(17:18) CHAR, MGR POSITION(20:23) INTEGER EXTERNAL) INTO TABLE PROJ -- PROJ has two columns, both not null: EMPNO and PROJNO WHEN PROJNO != (EMPNO POSITION(1:4) INTEGER EXTERNAL, PROJNO POSITION(25:27) INTEGER EXTERNAL) -- 1er projet INTO TABLE PROJ WHEN PROJNO != (EMPNO POSITION(1:4) INTEGER EXTERNAL, PROJNO POSITION(29:31) INTEGER EXTERNAL) -- 2 me projet INTO TABLE PROJ WHEN PROJNO != ' ' (EMPNO POSITION(1:4) INTEGER EXTERNAL, PROJNO POSITION(33:35) INTEGER EXTERNAL) -- 3 me projet Page 332 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 331

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Le LDD de SQLLOADER (suite)

Sqlloader chemin traditionnel et direct


deux modes de chargement de donnes : le chemin tradionnel et le chemin direct

Exemple (suite)
Exemple 5 (suite) :
Fichier de donnes: utlcase5.dat 1234 1234 2664 5321 2134 2414 6542 2849 4532 1244 123 1453 BAKER JOKER YOUNG OTOOLE FARMER LITTLE LEE EDDS PERKINS HUNT DOOLITTLE MACDONALD 10 10 20 10 20 20 10 xx 10 11 12 25 9999 9999 2893 9999 4555 5634 4532 4555 9999 3452 9940 5532 101 777 425 321 236 236 102 294 40 665 132 200 102 888 abc 55 456 456 321 40 133 103 999 102 40 40 14 456

le chemin traditionnel :
utilise la commande INSERT vrifient toutes les contraintes d'intgrit

le chemin direct
courcircuite le moteur SQL acclre les chargements dans certains cas.

Page 333

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 334

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Sqlloader chemin traditionnel et direct (suite)


sqlloader sqlloader

Sqlloader chemin traditionnel et direct (suite)


Quand utiliser le chemin traditionnel ?
quand il y a accs concurrent une table indexe ou modifie quand il y a chargement de donnes via sqlnet (problme de jeu de caractres) en cas de chargement de donnes dans une table en cluster si le nombre de lignes charger dans une table indexe (index grand) est faible si l'on veut appliquer des fonctions SQL

chemin direct

chemin traditionnel traitement des ordres sql

allocation de nouveaux extents

recherche et crit dans les blocs partiellement pleins buffer cache

Lecture des blocs de donnes

criture des blocs de donnes

si l'on veut vrifier les contraintes d'intgrit au chargement

Page 335

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 336

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader
I

7.2 Sqlloader
I

Sqlloader chemin traditionnel et direct (suite)


Quand utiliser le chemin Direct ?
en cas de besoin de chargement rapide d'une grande quantit de donnes en cas de besoin de paralllisation du chargement de donnes en cas de besoin de chargement des donnes dans une police de caractres non supportes pendant la session

Sqlloader chemin traditionnel et direct (suite)


Avantages du chemin direct
pas d'utilisation de blocs partiellement pleins pas de gnration d'Ordre SQL pas d'accs au cache d'Oracle paralllisation des I/O possible tri rapide

Activation du chemin direct $ sqlldr system/manager DIRECT=Y ...

pas d'criture dans les Redo log en mode sans archive

contraintes
impossible de charger dans des tables en cluster pas de condition SQL dans le fichier de contrle pas d'Ordre Select sur une table indexe

Page 337

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 338

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.3 Sqlplus
I

7.5 Sqlplus
I

Gnralits
Outil d'administration Graphique supporte les principaux GUI du march Serveur manager permet :
d'effectuer les tches traditionnelles d'administration de travailler en mode concurrent (N fentres peuvent tre ouvertes) d'administrer une ou plusieurs bases de centraliser l'administration de BD distribues d'excuter dynamiquement des Ordre SQL et PL/SQL

Commandes de Sqlplus (sql)


Description
Dmarrage, arrt ou affichage des informations sur l'archivage des Redo Log Connexion une base Description d'une table, d'une vue, d'une procdure dconnexion une base Excution d'une commande PL/SQL limite une ligne Quitter Sqlplus Afficher les informations d'aide Excuter une commande de l'OS sans quitter Sqlplus Observer les statistiques sur : FILE, PROCESS, I/O, LATCHES, LOCKS, ROLLBACK, SESSIONS, STATISTICS, TABLE (non valable en mode ligne) affichage du contenu d'une variable restauration d'un fichier, d'un Tablespace ou d'un Base de donnes Indique une ligne de commentaire Modification des paramtres de la session courante de sql Affichage des paramtres de la session courante de sql Arrt de l'instance courante activation/dsactivation de la rdirection des rsultats vers un fichier dmarrage d'une base base (MOUNT , OPEN) dfinition d'une variable utilisable dans un bloc PL/SQL ou lors d'un EXECUTE ou PRINT Copyright G. Mopolo-Mok Administration Oracle 10G

Commande
ARCHIVELOG CONNECT DESCRIBE DISCONNECT EXECUTE EXIT HELP HOST MONITOR

PRINT

Serveur manager fonctionne en mode graphique (srvmgr) ou ligne (srvmgrl)

RECOVER REMARK SET SHOW SHUTDOWN SPOOL STARTUP VARIABLE

Page 339

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 340

7.4 Les NLS


I

7.4 Les NLS


I

Plan
Gnralits Activation des NLS au niveau de l'OS Activation des NLS au niveau d'une instance Modification des NLS au niveau d'une session Modification des NLS au niveau d'une fonction SQL

Gnralits
Les NLS permettent de mettre en oeuvre une ou plusieurs applications dans des langues diffrentes L'entreprise et le march se mondialisent certains pays pratiquent plusieurs langues les NLS permettent de prendre en compte les particularits d'un pays (monnaie, date, ...) les NLS permettent d'avoir les messages Oracle dans la langue de son choix sqlnet assure la conversion des jeux de caractres entre le poste client et la base de donnes si les jeux sont diffrents le posistionnement d'un jeu de caractres peut se faire : au niveau OS, instance, session ou fonction SQL

Page 341

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 342

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS


I

7.4 Les NLS


I

Activation des NLS au niveau de lOS


le paramtre d'environnement NLS_LANG permet de positionner (pour une session) :
la langue, le territoire et le jeu de caractres

Activation des NLS au niveau dune instance


Les paramtres d'instance NLS_LANGUAGE et NLS_TERRITORY permettent de fixer les proprits d'une langue et d'un pays Ce sont les valeurs par dfaut pour toutes les sessions Le paramtre NLS_LANGUAGE fixe :
la langue utilise pour les messages du serveur la langue utilise pour les noms des jours, mois et leurs abrviations la squence de tri par dfaut utile dans les commandes SQL tels que Order by, Group by, ...
Exemple NLS_LANGUAGE=FRENCH Notes: a) la valeur de ce paramtre est fixe dans init.ora b) la valeur par dfaut est AMERICAN
Administration Oracle 10G

Positionnement du paramtre NLS_LANG


NLS_LANG=langue_pays.jeux de caractres

Exemple
NLS_LANG=AMERICAN_AMERICA.US7ASSCII NLS_LANG=FRENCH_FRANCE.ISO8859P1 NLS_LANG=FRENCH_CANADA.WE8DEC NLS_LANG=JAPANESE_JAPAN.JA16EUC

Notes

- positionnement dpendant de l'environnement (NLS_LANG est une variable d'environnement) - NLS_LANG efface et remplace les positionnements faits avec NLS_LANGUAGE et NLS_TERRITORY - un ALTER SESSION est excut la connexion
Copyright G. Mopolo-Mok Administration Oracle 10G Page 344

Page 343

Copyright G. Mopolo-Mok

7.4 Les NLS


I

7.4 Les NLS


I

Activation des NLS au niveau dune instance (suite)


Le paramtre d'initialisation NLS_TERRITORY ( dfinir dans init.ora) permet de dfinir :
le format de la date le caractre dcimal et le sparateur de milliers le symbole montaire local le symbole montaire ISO du pays le 1er jour de la semaine.

Activation des NLS au niveau dune instance (suite)


Les paramtres NLS_LANGUAGE et NLS_TERRITORY fixe implicitement le format de la date, la langue, les noms de mois, jours, ..., lordre de tri, ... Les paramtres suivants ( fixer dans init.ora) :
NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_SORT permettent d'agir explicitement.

Exemple NLS_LANGUAGE=FRANCE format date caractre dcimal sparateur de millier Notes: : JJ/MM/AA :, :.

Exemple
NLS_DATE_FORMAT=DD RM YY NLS_DATE_LANGUAGE=FRENCH NLS_ISO_CUYRRENCY=FRANCE

a) la valeur de ce paramtre est fixe dans init.ora b) la valeur par dfaut est AMERICA

NLS_NUMERIC_CHARACTERS =,.
...
Page 346 Copyright G. Mopolo-Mok Administration Oracle 10G

Page 345

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS


I

7.4 Les NLS


I

Format des dates et des Nombres

Activation des NLS au niveau dune session


Les paramtres d'initialisation :
NLS_LANGUAGE NLS_TERRITORY NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_SORT peuvent tre modifis la vole pour une session en cours grce la commande ALTER SESSION

En gnral
Les formats des dates et des nombres sont fournis avec les fonctions : to_date, to_char, to_number de SQL.

Format additionnel de nombres


D (Dcimal) G (Groupe) C(monnaie ISO) rend le caractre dcimal rend le sparateur de milliers rend le symbole de monnaie ISO

L(monnaie locale) rend le symbole de monnaie local

Exemple
NLS_ISO_CUYRRENCY=FRANCE

Exemple
ALTER SESSION SET NLS_LANGUAGE=FRENCH NLS_TERRITORY=FRANCE NLS_DATE_FORMAT=DD RM YY NLS_DATE_LANGUAGE=FRENCH NLS_NUMERIC_CHARACTERS=,. NLS_CURRENCY=FF NLS_ISO_CURRENCY=FRANCE ;
Page 348 Copyright G. Mopolo-Mok Administration Oracle 10G

NLS_NUMERIC_CHARACTERS =,. -- DG
NLS_ISO_CUYRRENCY=FF 1234 9G999 => 1.234 3,234.44 L9G999D99 => FF3.234,44

Page 347

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS


I

7.4 Les NLS


I

Activation des NLS au niveau dune session (suite)

Modification des NLS au niveau dune fonction SQL


Les paramtres pouvant tre modifis au niveau d'une fonction SQL pour une requte sont :
NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_SORT

Exemple dordre SQL exploitant les NLS


sql> SELECT to_char(sysdate) date_du_jour, to_char(sysdate, Day : Dd Month YYYY) encore_date_jour, to_number(1.234, 9G999)) "un nombre", to_number(12,66673.49, L099G999D99) "Total local"), to_number(12,66673.49, C099G999D99) "Total ISO") FROM DUAL ;

Les paramtres NLS_LANGUAGE et NLS_TERRITORY ne peuvent tre modifis au niveau des fonctions Les fonctions SQL pouvant modifier les paramtres sont : to_char, to_date, to_number, nls_upper, nls_lower, nls_initcap, nlssort.

Page 349

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 350

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS


I

7.4 Les NLS


I

Modification des NLS au niveau dune fonction SQL(suite)


Tableau des paramtres et les fonctions pouvant agir dessus
TO_DATE : TO_NUMBER : NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS, NLS_CURRENCY, NLS_ISO_CURRENCY NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS, NLS_CURRENCY, NLS_ISO_CURRENCY NLS_SORT NLS_SORT NLS_SORT NLS_SORT

Modification des NLS au niveau dune fonction SQL(suite)

Exemple SELECT to_number(13.000,00, 99G999D99, nls_numeric_characters=.,) FROM dual; SELECT to_date(1-MAY-89, DD-MON-YY, nls_date_language=FRENCH) FROM dual; SELECT to_char(hiredate, DD/MON/YYYY, nls_date_language=FRENCH) FROM EMP ; SELECT ename FROM emp ORDER BY NLSSORT(ename, nls_sort=GERMAN); SELECT ename FROM emp ORDER BY nls_lower(ename, nls_sort=GERMAN);

TO_CHAR :

NLS_UPPER : NLS_LOWER : NLS_INITCAP : NLSSORT :

Page 351

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 352

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.5. Oracle Entreprise Manager(OEM)


I

8. Loption procdurale
I

OEM

PLAN
8.1 Gnralits 8.2 Les procdures et fonctions 8.3 Les packages 8.4 Les Triggers

Outil dadministration graphique doracle Voir Annexe

Page 353

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 354

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.1 Gnralits
I

8.2 Procdures et fonctions


I

Loption procdurale se compose de : procdures, fonctions, packages et triggers permet Oracle de stocker des traitements (code PL*SQL uniquement) au niveau du moteur base de donnes Elle est maintenant intgr dans le noyau Oracle C/S 2me Gnration : Jusqu 40 % des traitements transposables du cot serveur Activation de loption procdurale

Dfinition
Unit de traitement PL/SQL pouvant contenir des Ordres SQL, des variables, des constantes, des curseurs et des exceptions

Une fonction la diffrence d'une procdure rend une valeur une procdure ou une fonction peut tre :
excute en interactif sous SQL*PLUS ou SQL*DBA appele depuis une application appele depuis une autre procdure ou fonction

Excuter le script catproc.sql tant SYS sql>@@$ORACLE_HOME/rdbms/admin/catproc

une procdure ou une fonction comporte deux parties cres en mme temps :
la partie spcification (l'entte) la partie implmentation (le corps)

Page 355

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 356

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.2 Procdures et fonctions


I

8.2 Procdures et fonctions


I

Appel de procdures et fonctions depuis un applicatif


Application base de donnes Serveur Oracle

Avantages des procdures et fonctions stockes dans la base


plus de scurit : il nest plus utile de donner des droits aux utilisateurs sur les objets de base manipuls par les procdures (tables, vues, ...) plus de performance :

code du programme .... creer_emp(...); ... code du programme ...

creer_emp(...) BEGIN .... END;

changes rduits entre l'application et la base une compilation pour plusieurs excutions moins d'E/S, procdure dj dans la zone des requtes

...
code du programme .... creer_emp(...); ... code du programme ... liste_emp(...); ...
Page 357 Copyright G. Mopolo-Mok

Economie despace mmoire : une seule copie en SGA mais des excutions par plusieurs applications possibles une plus grande productivit :
volutivit : la modification du corps d'une procdure n'implique pas celle des applications qui l'appelle centralisation des modifications

liste_emp(...) BEGIN ... END;

Administration Oracle 10G

Page 358

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.2 Procdures et fonctions


I

8.2 Procdures et fonctions


I

Cration de procdures et de fonctions


privilge requis : CREATE PROCEDURE ou CREATE ANY PROCEDURE

Cration de procdures et de fonctions (suite)


CREATE OR REPLACE PROCEDURE nouveau_sal (empid IN NUMBER, taux IN NUMBER) IS BEGIN UPDATE emp SET sal = sal* (1 + taux) WHERE empno = empid ; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(Employe inexistant); RAISE_APPLICATION_ERROR(-20012, Employe Nr. || to_char(empid) || Inexistant); END;

Exemple de cration de procdure

Syntaxe de cration d'une procdure


CREATE OR REPLACE PROCEDURE [schema.]procedure [ (<liste darguments>)] {is | as} BEGIN -- bloc PLSQL -- corps de la procdure END; external_body; -- procedure externe

Syntaxe de cration d'une fonction


CREATE OR REPLACE FUNCTION [schema.]fonction [ (<liste darguments>)] RETURN type {is | as} BEGIN -- bloc PLSQL -- corps de la fonction END; external_body; -- procedure externe Liste darguments ::= nom argument {IN | OUT | IN OUT} type;

Exemple de cration d'une fonction


CREATE OR REPLACE FUNCTION emp_info(empid IN number) return emp%ROWTYPE AS emprow emp%rowtype ; BEGIN SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno INTO emprow FROM emp WHERE empno = empid; RETURN (emprow); END;

Note : sous sqlplus ou sql la dernire ligne de la procdure doit tre /


Page 359 Copyright G. Mopolo-Mok Administration Oracle 10G Page 360 Copyright G. Mopolo-Mok Administration Oracle 10G

8.2 Procdures et fonctions


I

8.2 Procdures et fonctions


I

Modification et rcompilation de procdures et fonctions


rcompilation :En cas dvolution des objets du schma (tables, ...) manipuls dans une procdure ou une fonction privilge requis : ALTER PROCEDURE ou ALTER ANY PROCEDURE Syntaxe ALTER { FUNCTION | PROCEDURE } [schema.]nom COMPILE ; Mots cls ou paramtres nom schema COMPILE Description nom de la procdure ou fonction propritaire de l'objet rcompiler l'objet en cas d'volution des objets rfrencs

Suppression dune procdure ou d'une fonction


privilge requis DROP PROCEDURE ou DROP ANY PROCEDURE Syntaxe DROP FUNCTION | PROCEDURE [schema.]nomproc;

Exemple DROP PROCEDURE tintin.nouveau_sal ;

Exemple ALTER FUNCTION emp_info COMPILE;

Page 361

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 362

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages
I

8.3 Packages
I

Gnralits
Dfinition Un package Oracle est l'image du package ADA une unit de traitement PL/SQL nomme, regroupant des procdures, des fonctions avec des curseurs et des variables qu'elles utilisent ensemble Un package comporte deux parties : la partie spcification (PACKAGE SPECIFICATION) et la partie implmentation (PACKAGE BODY) Les composants d'un package peuvent tre publics ou privs : Les composants publics sont dclars au niveau de la partie spcification et les composants privs au niveau la partie implmentation

Gnralits (suite)

Nom du package : Nom_pack

Reprsentation schmatique Application 1


... code programme ... Nom_pack.nom_var1 = ...; Nom_pack.nom_proc1(...) ; ... code programme

Package spcification
nom_var1 type_var 1 ; nom_var2 type_var2 ; nom_proc1(...) ; nom_proc2(...); nom_fonct1(...); nom_proc1(...) BEGIN nom_var1 := nom_var_2; ... END nom_proc2(...) BEGIN nom_proc1(...); ... END nom_fonct1(...) BEGIN ... END

Package body

Application N
... code programme ... Nom_pack.nom_var2 = ...; ret=Nom_pack.nom_fonct1(...) ... code programme

NOTE: Lappel des objets dun package en dehors de ce dernier doit se faire en prfixant l'objet du nom du package.

Base de donnes Oracle


Page 363 Copyright G. Mopolo-Mok Administration Oracle 10G Page 364 Copyright G. Mopolo-Mok Administration Oracle 10G

8.3 Packages
I

8.3 Packages
I

Cration d'un Package


La cration d'un package consiste crer la spcification puis le corps du package

Cration d'un package (suite)

Syntaxe de cration de la partie implmentation CREATE [OR REPLACE] PACKAGE BODY [schma.]nom_package {IS | AS} corps PL/SQL corps PL/SQL ::= dclaration de variable | dclaration d'enregistrement | dclaration d'execption | dclaration de table PL/SQL | corps de fonction | corps de curseur | corps de procdure ... Mot cl ou paramtre schma nom_package corps PL/SQL Description Nom du schma auquel le package appartient Nom du package dans le schma dclaration de variables, ..., corps fonctions, des procdures, ...

Syntaxe de cration de la partie spcification CREATE [OR REPLACE] PACKAGE [schma.]nom_package {IS | AS} spficification PL/SQL spcification PL/SQL ::= dclaration de variable | dclaration d'enregistrement | dclaration d'execption | dclaration de table PL/SQL | dclaration de fonction | dclaration de procdure ... Mots cls ou paramtres schma nom_package spcification PL/SQL
Page 365

Description Nom du schma auquel le package appartient Nom du package dans le schma dclaration de variables, fonctions, procdures, ... globales
Administration Oracle 10G

Note : Les noms utiliss dans la partie spcification doivent tre les mmes que dans la partie implmentation.
Page 366 Copyright G. Mopolo-Mok Administration Oracle 10G

Copyright G. Mopolo-Mok

8.3 Packages
I

8.3 Packages
I Cration

Cration d'un package (suite)


PACKAGE tintin.gestion_employes

d'un package (suite)

Exemples de cration de la partie spcification CREATE OR REPLACE IS

Exemple de cration de procdure


CREATE OR REPLACE PACKAGE BODY tintin.gestion_employes IS
PROCEDURE pnouveau_sal (empid IN NUMBER, taux IN NUMBER) IS BEGIN UPDATE emp SET sal = sal* (1 + taux) WHERE empno = empid ; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(Employe inexistant); RAISE_APPLICATION_ERROR(-20012, Employe Nr. || to_char(empid) || Inexistant); END pnouveau_sal; FUNCTION pemp_info(empid IN number) RETURN emp%ROWTYPE AS emprow emp%rowtype ; BEGIN SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno INTO emprow FROM emp WHERE empno = empid; RETURN (emprow); END pemp_info ;

PROCEDURE pnouveau_sal (empid IN NUMBER, taux IN NUMBER); FUNCTION pemp_info(empid IN number) RETURN emp%ROWTYPE;

END gestion_employes ;

END gestion_employes;

Page 367

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 368

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages
I

8.3 Packages
I

Avantages des packages


Encapsulation et modularit : le package se comporte comme une bote noire Possibilit de cacher des informations Sparation de la spcification des implmentations permet d'augmenter la productivit des dveloppeurs + tous les avantages numrs au niveau des fonctions et procdures (performance, partage, rcompilation intelligente, ...)

Excution d'une procdure


Etapes
1. Vrifier les droits de l'utilisateur (privilge objet EXECUTE) 2. Vrifier la validit de la procdure
un objet rfrenc a - t - il chang (table, vue, procdure , ...) ? un privilge sur le package a - t - il t retir ? un privilge sur un objet rfrenc a - t - il t rvoqu ?

3. La procdure excuter rside - t -elle dj en SGA? sinon la charger et rcompiler 4. Excuter la procdure.

Exemple en interactif sql > EXECUTE gestion_employes.pemp_info(7856); sqlplus>EXECUTE nouveau_sal(7856, 0.5);

Page 369

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 370

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages
I

8.3 Packages
I

Informations sur les packages et les fonctions

Listes des vues utiles . ALL_ERRORS, USER_ERRORS, DBA_ERRORS . ALL_SOURCE, USER_SOURCE , DBA_SOURCE . USER_OBJECT_SIZE, DBA_OBJECT_SIZE

Informations sur les packages et les fonctions (suite)

Exemple 2 : Vue USER_ERRORS Visualisation des erreurs de compilation de lutilisateur courant sql> SELECT name, type, line, position, text FROM user_errors WHERE name = EMP_INFO; Exemple 3 : vue USER_OBJECT_SIZE Espace consomm par la procdure EMP_INFO sql> SELECT name, sorce_size+parsed_size+ code_size + error_size "Taille totale" FROM user_object_size WHERE name = 'EMP_INFO';

Exemple 1 : Vue USER_SOURCE Visualisation du code source et du nombre de lignes de la procdure de l'utilisateur courant sql> SELECT line, text FROM user_source WHERE name = 'EMP_INFO';

Page 371

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 372

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Les packages


I

8.3 Les packages


I

Packages fournis par Oracle et utilisables la place de certains ordres SQL

Packages additionnels fournis par Oracle


Description
Gestion asynchrone des alertes des events de la BD permet de dcrire les arguments des procdures stockes permet de grer la soumission des job

Package dbms_session : gestion des infos. de session Procdures : close_database_link, reset_package, set_label, set_nls,
set_mls_label_format, set_role, set_sql_trace, unique_session_id, is_role_enabled, set_close_cached_open_cursors, free_unused_user_memory

Nom du package
dbms_alert dbms_describe dbms_job run

Procdures
register, remove, signal, waitany, waitone, set_defaults describe_procedure submit, remove, change, what, next_date, sys as sysdba, broken,

Package dbms_ddl : Analyse et compilation des objets du schma Procdures : alter_compile, analyze_object Package dbms_transaction : Gestion des transactions Procdures : advise_commit, advise_rollback, advise_nothing, commit,
commit_comment, commit_force, read_only, read_write, rollback, rollback_force, rollback_savepoint, savepoint, use_rollback_segment, purge_mixed, begin_discrete_transaction, local_transaction_id, step_id

dbms_lock dbms_output dbms_pipe

Permet d'utiliser les mcanismes de allocate_unique, request, verrouillage convert, release, sleep Permet d'utiliser les mcanismes de allocate_unique, request, verrouillage convert, release, sleep permet la communication intersession dans une mme instance create_pipe, pack_message, send_message, receive_message, next_item_type, unpack_message remove_pipe, purge, reset_buffer, unique_session_name sizes, keep, unkeep, aborted_request_threshold set_module, set_action, set_client_info, read_module read_client_info set_sql_trace_in_session

dbms_shared_ pool dbms_application_info dbms_system

permet de conserver des objets dans shared pool area permet de grer les infos d'une application des fins de performance ou d'audit permet d'activer des utilitaires systmes tel tracer des requtes

Package dbms_utility : Ensemble de fonctions utilitaires Procdures : compile_schema, analyze_schema, format_error_stack,


format_call_stack, is_parallel_server, get_time, name_resolve
Copyright G. Mopolo-Mok

Page 373

Administration Oracle 10G

Page 374

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Les packages


I

8.4 Les triggers Base de donnes


I

Packages additionnels fournis par Oracle (suite)


Description
fourni les infos sur lespace des segments non accessibles via les vues permet dcrire des procdures stockes open_cursor, parse, execute, et des blocs PL/SQL anonymes en bind_variable, define_column, utilisant le SQL dynamique define_column_long, is_open, execute_and_fetch, fetch_rows column_value, variable_value, column_value_long, last_error_position, close_cursor, last_row_count, last_row_id, last_sql_function_code permet de grer des groupes de snapshot permet de rafraichir des snapshot non membre d'un groupe (voir dbmssnap.sql) (voir dbmssnap.sql) (voir dbmdefr.sql)

Gnralits
Un trigger BD est une action qui se dclenche avant ou aprs un vnement. Les triggers BD Oracle sont des blocs PL/SQL stocks dans la base pouvant se dclencher automatiquement avant ou aprs l'excution d'un Ordre SQL d'insertion, modification ou suppression sur une table. Reprsentation schmatique

Nom du package
dbms_space dbms_sql

Procdures

dbms_refresh dbms_snapshot

Application cliente
UPDATE TABLEX ... INSERT INTO TABLEX ... DELETE FROM TABLEX ...

Base de donnes Oracle


TABLEX

dbms_defer, permet construire et administrer des dbms_defer_sys, appels de procdures distantes dbms_defer_query dbms_repcat permet d'utilier les mcanismes de rplication statique

Trigger de MAJ Trigger dinsertion Trigger de suppression

(voir dbmsrepc.sql) (voir dbmsrepc.sql)

dbms_repcat_auth permet de crer des utilisateurs ayant , dbms_repcat_ le privilge de rpliquer admin

Page 375

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 376

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.4 Les triggers Base de donnes


I

8.4 Les triggers Base de donnes


I

Types de triggers BD
Le type d'un trigger dpend de trois paramtres :
l'ordre sur lequel le trigger est dfini (UPDATE, INSERT, DELETE) la frquence de dclenchement du trigger :
pour chaque ligne traite (FOR EACH ROW) pour toutes les lignes

Cration d'un trigger

. Privilge requis : CREATE TRIGGER Syntaxe de cration d'un trigger


CREATE [ OR REPLACE ] TRIGGER [ schema.] trigger { BEFORE | AFTER } { DELETE | INSERT | UPDATE [ OF column [, column ] ...] } [ OR { DELETE | INSERT | UPDATE [ OF column [, column ] ...] } ] ... ON [ schema.] table [ [ REFERENCING { OLD [ AS ] old [ NEW [ AS ] new ] | NEW [ AS ] new [ OLD [ AS ] old ] } ] FOR EACH ROW [ WHEN ( condition ) ] ] pl / sql_block

le moment de son dclenchement (avant le dbut des traitements PRE-CONDITION ou la fin des traitements POST-CONDITION)
BEFORE AFTER

Mots cls ou paramtres


OR REPLACE schma trigger BEFORE AFTER Delete, update, insert on schema.table FOR EACH ROW WHEN PL/SQL BLOCK
Page 378

Description
supprime le contenu du trigger et le recr Nom du propritaire Nom du trigger dclencher d'abord le trigger puis excuter l'ordre excuter d'abord l'ordre puis dclencher le trigger dclencher le trigger respectivement la suppression, modification ou insertion. table concerne dclenche le trigger pour chaque ligne traite dclenche pour les lignes ayant satisfait la condition bloc de code PL/SQL pour le trigger
Administration Oracle 10G

BEFORE

UPDATE INSERT

FOR EACH ROW Statement Level

AFTER

DELETE

Note : Un dclenchement conditionnel(clause WHEN) est possible. La clause WHEN ne peut tre pose qu'en valuation ligne par ligne
Page 377 Copyright G. Mopolo-Mok Administration Oracle 10G

Copyright G. Mopolo-Mok

8.4 Les triggers Base de donnes


I

8.4 Les triggers Base de donnes


I

Cration d'un trigger (suite)

Cration d'un trigger BD(suite)

Limite des triggers 1 trigger par Type par Table (12 possibilits). Exemple (idem pour INSERT et DELETE): BEFORE UPDATE FOR EACH ROW BEFORE UPDATE --statement_level AFTER UPDATE FOR EACH ROW AFTER UPDATE -- statement_level pas de commande DDL dans le corps du trigger (pas de CREATE TABLE ...) pas de gestion de transaction (COMMIT, ROLLBACK, SAVEPOINT) dans le corps du trigger mme pas travers une procdure appele pas de dclaration de variables de type LONG ou LONG ROW Ordre dvaluation des lignes pas garantie (ne pas faire dpendre le dclenchement d'un trigger de l'ordre d'valuation)
Page 379 Copyright G. Mopolo-Mok Administration Oracle 10G

Exemples 1 : Cration d'un trigger qui permet d'assurer la contrainte d'intgrit de mise jour et de suppression d'une cl dans la table matre et d'assigner la cl trangre NULL dans la table ayant la cl trangre. <UPDATE - DELETE - SET NULL>
CREATE TRIGGER updateset AFTER DELETE OR UPDATE OF deptno ON dept FOR EACH ROW -- Avant de supprimer une ligne dans la table dept ou modifier la cl dans -- cette table. Mettre les cls trangres NULL BEGIN IF UPDATING AND :OLD.deptno != :NEW.deptno OR DELETING THEN UPDATE emp SET emp.deptno = NULL WHERE emp.deptno = :old.deptno ; END IF ; END; /

Page 380

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.4 Les triggers Base de donnes


I

8.4 Les triggers Base de donnes


I

Cration d'un trigger BD(suite)

Excution d'un trigger BD


1. Le trigger doit tre arm 2. le code du trigger sera rcompil sa premire excution (code absent de la SGA) ou si modification des objets rfrencs dans le code du trigger (note: rcompilation inutile depuis la 7.3) 3. Excuter le trigger

Exemples 2
Cration d'un trigger qui permet (lors d'une suppression, modification ou insertion) de mettre jour automatiquement le montant de la commande pour chaque ligne de commande enregistre. CREATE TRIGGER modif_commande AFTER DELETE OR UPDATE OR INSERT ON item FOR EACH ROW DECLARE BEGIN IF DELETING OR UPDATING OR INSERTING THEN UPDATE ord SET ord.total = ord.total + :NEW.itemtot - :OLD.itemtot WHERE ord.ordid = DECODE(:NEW.ordid, NULL, :OLD.ordid, :NEW.ordid); END IF; END; /

Etapes

Notes a) un trigger doit avoir moins de 60 lignes b) utiliser les procdures pour tendre la taille dun trigger c) pour un trigger ligne avec la clause WHEN, ce dernier ne sera excut que si la clause WHEN est vrife d) en cas d'utilisation de trigger pour alimenter une table distante, le commit deux phases est assur e) si N trigger du mme type (INSERT, UPDATE, DELETE) existe, Oracle les excute tous sans un ordre particulier f) un trigger ne peut lire les donnes impropres g) un trigger ne peut violer les contraintes d'intgrit d'une table

Page 381

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 382

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.4 Les triggers Base de donnes


I

8.4 Les triggers Base de donnes


I

Modification dun trigger BD


Modifier un trigger consiste l'activer, dsactiver ou rcompiler (privilge requis : ALTER TRIGGER) Syntaxe ALTER TRIGGER [schema.]trigger {ENABLE | DISABLE | COMPILE} Exemple sql> ALTER TRIGGER updateset COMPILE ; sql> ALTER TRIGGER updateset DISABLE ;

Domaines dapplications
fournir des mcanismes sophistiqus d'audit renforcer les contraintes dintgrit non supportes par Oracle en natif mettre en oeuvre des rgles complexes de gestion par exemple : changer la catgorie d'un employ si son salaire change renforcer la scurit : interdire par exemple la modification des salaires les jours fris et les weekend assurer la rplication synchrone distance de tables propager des actions sur dautres tables en fonction des vnements survenus

Suppression dun trigger


Privilge requis : CREATE TRIGGER ou DROP ANY TRIGGER Syntaxe: DROP TRIGGER [schema.]trigger ; Exemple : DROP TRIGGER updateset;

Page 383

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 384

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.4 Les triggers Base de donnes


I

8.4 Les triggers Base de donnes


I

Domaines dapplications (suite)

Visualisation des informations sur les triggers


Les vues contenant les informations sur les triggers . USER_TRIGGERS, ALL_TRIGGERS, DBA_TRIGGERS

Exemples 1 : Utilisation de trigger pour laudit


Cration d'un trigger qui permet (lors d'une suppression, modification ou insertion) d'insrer dans une table journal, l'tat avant et aprs d'une ligne de la table EMP. CREATE TRIGGER audit_employe AFTER INSERT OR DELETE OR UPDATE ON emp FOR EACH ROW BEGIN -- La raison du dclenchement du trigger doit tre passe en paramtre -- la fonction ci-dessous. -- AUDITPACKAGE.SET_REASON(texte_de_la_raison_d'audit) IF auditpackage.reason IS NULL THEN raise_application_error(-20201, 'Une raison doit tre donne' || 'grce AUDITPACKAGE.SET_REASON( texte_de_la_raison_d'audit)'); END IF ; -- Si la condition prcdente est remplie alors ... INSERT INTO audit_employe VALUES (:old.EMPNO, :old.ENAME, :old.JOB, :old.MGR, :old.HIREDATE, :old.SAL, :old.COMM, :old.DEPTNO, :new.EMPNO, :new.ENAME, :new.JOB, :new.MGR, :new.HIREDATE, :new.SAL, :new.COMM, :new.DEPTNO, auditpackage.reasion, user, sysdate); /
Page 385 Copyright G. Mopolo-Mok Administration Oracle 10G

Exemple
sql>SELECT trigger_type, triggering_event, table_name FROM user_triggers WHERE trigger_name = UPDATESET;
TRIGGER_TYPE TRIGGERING_EVENT TABLE_NAME DEPT

AFTER EACH ROW UPDATE OR DELETE

sql>SELECT trigger_body FROM user_triggers WHERE trigger_name = UPDATESET; TRIGGER_BODY BEGIN IF UPDATING AND :OLD.deptno != :NEW.deptno OR DELETING THEN UPDATE ... ... END;
Page 386 Copyright G. Mopolo-Mok Administration Oracle 10G

You might also like