Vous êtes sur la page 1sur 97

Plan Gnral

1. Introduction

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

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

2. Architecture dOracle

Administration Oracle 10G


Partie I

Page

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

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

Copyright G. Mopolo-Mok

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

5. Gestion de la scurit et des ressources

4.1 Structure Physique d'une Base de Donnes Oracle

Page

Administration Oracle 10G

4.2 Structure logique d'une Base de donnes Oracle

4. Structure dune Base de Donnes Oracle

Copyright G. Mopolo-Mok

Plan Gnral

3 Tches d'administration de base

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

Plan Gnral

1.1 Objectifs du cours


1.2 Les tches de l'administrateur
1.3 L'offre Oracle
1.4 Oracle 10G Prsentation Gnrale

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

6 Sauvegarde et restauration
6.1 Gnralits
6.2 Sauvegarde en Noarchivelog

Administration Oracle 10G

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Plan Gnral

Plan Gnral

6.3 Sauvegarde en mode Archivelog


6.4 Restauration d'une Base

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

8.2 Procdures et fonctions


8.3 Packages
8.4 Les triggers Base de donnes

Page

Plan

Gnrailits
Les chemins daccs
Les mthodes daccs
Les outils
Loptimiseur statistique

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

10. Exercices
11. Annexes

9. Optimisation de requtes sous Oracle

Administration Oracle 10G

1. Introduction

Plan Gnral

Copyright G. Mopolo-Mok

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

12. Exercices Corrigs

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

1.1 Objectifs du cours

1.2 Les tches de l'administrateur

Comprendre le fonctionnement du moteur


Oracle 10G

Comprendre larchitecture logique et


physique dune BD Oracle

installer et upgrader Oracle

allouer des espaces systmes et planifier des


besoins futurs

Effectuer les tches d'administration de base

crer des objets des schmas

Administrer la scurit (utilisateurs, rles,


profiles,...)

grer la scurit et les ressources

Grer l'intgrit de donnes

planifier l'archivage de donnes

Grer les procdures stockes et les alertes

sauvegarder et restaurer les donnes

Manipuler et administrer des donnes


rparties
Faire une introduction loptimisation
dOracle

arrter et dmarrer la base

contrler et optimiser les performances

Page

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 10

LOffre Oracle

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

Progiciels
Oracle General Ledger
Oracle Purchasing
Oracle Payables
Oracle Assets

Oracle Media
Object

Page 11

Administration
et interconnexion

oracle 10G (sql):


- standard et PLSQL
- parallle
- parallle Query
- distribu
- Cartridge
- Java VM
- ORB
-IAS
Oracle Vido Server

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

Developper :
. Forms,reports,Graphics, .
. Programmer :
. pro*C/C++, Pro*Cobol, ...
Autres :
. SQLJ,Jdevelopper, Webdb,...

Copyright G. Mopolo-Mok

Outils de DWH

. Oracle Application
Server

Le noyau de base dOracle 10G


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

Discover
Express
Darwin

Outils Groupware et
Multimdia
Oracle office
Context
Oracle mail

Administration Oracle 10G

1.4 Oracle 10G Prsentation


Gnrale

1.3 Loffre Oracle

Copyright G. Mopolo-Mok

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

Dveloppement
d''applications

Administration Oracle 10G

Page 12

Copyright G. Mopolo-Mok

Administration Oracle 10G

1.4 Oracle 10G Prsentation


Gnrale

1.4 Oracle 10G Prsentation


Gnrale

Les Options dOracle

Les Architectures dOracle


Architecture standard

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

Option parallle (Oracle Parallle Query : Oracle PQ)


excution d'une mme requte par plusieurs processeurs

Architecture multithread

Oracle Replication

Option distribue

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

Interrogation distribue (y compris via des Gateways)


Mise jour distribue
rplication de donnes
COMMIT deux phases

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 objet relationnel


Page 13

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 14

1.4 Oracle 10G Prsentation


Gnrale

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)

Plate forme ouverte, en rsum

Services: Transactions, Message, Queue de messages,


Evnements

Support des Java Beans


Utilitaire d'import / export de programmes Java

JAVA VM

Intgration dans l'environnement CORBA


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

Cartouches
de donnes

cartouches de base : spatial, Image, Time, Text, Audio,


Video
Possibilit d'introduire de nouveaux mcanismes
d'indexation reconnus par l'optimiseur statistique
d'Oracle

Copyright G. Mopolo-Mok

Administration Oracle 10G

SQL

PL/SQL

SERVER MULTITHREAD

Extensibilit du moteur Oracle via des


cartouches

Page 15

Administration Oracle 10G

1.4 Oracle 10G Prsentation


Gnrale

JSQL code->Prprocesseur JSQL -> Code Java avec des


appels JDBC -> Compilateur Java -> Code Java

Copyright G. Mopolo-Mok

Objet Relationnel

Relationnel

Disques

Page 16

Copyright G. Mopolo-Mok

Administration Oracle 10G

2. Architecture dOracle

2.1 Architecture Gnrale

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
Process utilisateur

Listener

Serveur ddi
Request queue

Dispatchers

Q1
Serveurs partags

JAVA POOL

DATABASE BUFFER
CACHE

RECO

Administration Oracle 10G

Page 18

CKPT

Une instance Oracle correspond :

une SGA (System Global Ara)


des Background Process
des Process Serveurs
(SMON, PMON, RECO, LGWR,
DBWR, CKPT, ARCH, ...)

Redo log Buffer

Shared Pool Area

SGA

Fichiers Redo Log

Copyright G. Mopolo-Mok

Fichiers d'archives

Administration Oracle 10G

PGA
Stack

Dispatcher

la SGA (System Global Area)


la PGA (Program Global Area)
la zone de Tri (Sort Area Size)
Java Pool
Large Pool

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

User Session info


& tats des curseurs
(Serveur Multithread)

PGA
Stack Session utilisateur Etat des curseurs

ARCH

Large Pool

Java Pool

LGWR

Principales composantes :

BACKGROUND PROCESS

Database Buffer

Fichiers de contrles

REDO LOG BUFFER

2.3 Structure de la mmoire


d'Oracle

2.2 La notion dinstance

LARGE POOL(mmoire Additionnelle


pour la gestion des session: process
server, io, xa, parallle, )

PMON

Fichiers de donnes
Copyright G. Mopolo-Mok

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

SMON

DBWx

Page 17

Response queue

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

2.4 La SGA

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)

Large Pool

Java Pool
Shared Pool Area(zone
Des requtes partages)

Page 21

des blocs de tables et clusters


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

Redo log Buffer(Buffer


Redolog)

SGA

Copyright G. Mopolo-Mok

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

User Session info


& tats des curseurs
(Serveur Multithread)

Administration Oracle 10G

Page 22

Administration Oracle 10G

2.4 La SGA

2.4 La SGA

Copyright G. Mopolo-Mok

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

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.

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
Page 23

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 24

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA

2.4 La SGA

Buffers de donnes (suite)

les performances sont bonnes si le ratio R est >= 60 ou


70%

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

Database Buffer (Buffer


De donnes)

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.

Redo log Buffer(Buffer


Redolog)

La table v$sysstat contient les statistiques utiles :


SELECT name, value
FROM v$sysstat
WHERE name IN ('db block gets',
'consistent gets', 'physical reads');

Large Pool

Java Pool
Shared Pool Area(zone
Des requtes partages)

Buffers de donnes (suite)

SGA

User Session info


& tats des curseurs
(Serveur Multithread)

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

2.4 La SGA

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA

Zone de partage des ordres SQL


se compose des donnes suivantes :

Zone de partage des ordres SQL (suite)


Informations sur les requtes

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)

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

SELECT sum(pins) "Executions",


sum(reloads) "Dfaut de cache",
sum(reloads) / (sum(pins) + sum(reloads))*100 "R"
FROM v$librarycache ;

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

Page 27

Copyright G. Mopolo-Mok

Administration Oracle 10G

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 28

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.4 La SGA

2.4 La SGA

Le Buffer REDO LOG

Buffer Redo log (suite)


un buffer Redo log trop petit entrane des attentes

Tampon contenant les informations en cours de


modification dans les blocs de donnes :

Optimisation du buffer Redo log

donnes avant et donnes aprs

sa taille est dtermine par le paramtre

la table des performances v$sysstat contient les


information utiles

LOG_BUFFER

Large Pool

Java Pool
Shared Pool Area(zone
Des requtes partages)

SELECT name, value


FROM v$sysstat
WHERE name = 'redo log space requests' ;

Redo log Buffer(Buffer


Redolog)

Database Buffer (Buffer


De donnes)

SGA

name :
value :

User Session info


& tats des curseurs
(Serveur Multithread)

nom de la statistique
valeur de la statistique

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%

Fichier de donnes

Page 29

Copyright G. Mopolo-Mok

FICHIERS REDO

Administration Oracle 10G

Page 30

Administration Oracle 10G

2.4 La SGA

2.4 La SGA

Copyright G. Mopolo-Mok

Large Pool

Java POOL
Zone de mmoire ncessaire pour la machine virtuelle
Java intgr dans Oracle

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

Cette zone permet dexcuter le code Java stock dans


le noyau Oracle

Que peut fournir la Large pool ? :

Dimensionnement de la Java 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

Dimensionnement de la Large 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)

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

2.5 La PGA

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

Contenu de la PGA selon le type de Serveur


SERVEUR DEDIE

SERVEUR MULTITHREAD
PGA

PGA
stack space

Informations
de session

stack space

SGA

SGA
informations
de 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';

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

2.5 La PGA

La taille maximum de la PGA est influence


en plus par les paramtres d'initialisations
suivants :

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

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 :

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

PGA_AGGREGATE_TARGET
Page 35

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.6 La Zone de tri

sort_area_size
hash_area_size
bitmap_merge_area_size and create_bitmap_area_size

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 36

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.

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.7 Diffrentes configurations


d'Oracle

2.7 Diffrentes configurations


d'Oracle

Trois approches

Single task Oracle


Combinaison du code du process serveur et du
process utilisateur

Single task Oracle


Serveur ddi

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 )

Serveur Multithread

Architecture
Process utilisateur 1

Process utilisateur N

Code
Applicatif

Code
Applicatif

Code du serveur
Oracle

Code du serveur
Oracle

SGA (System Global Area)

Page 37

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 38

2.7 Diffrentes configurations


d'Oracle

Serveur ddi

un process utilisateur est associ un process serveur

Administration Oracle 10G

2.7 Diffrentes configurations


d'Oracle

code du process utilisateur spar de celui du process


serveur

Copyright G. Mopolo-Mok

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

Process utilisateur

configuration aussi appele TWO - TASK

Listener

Process utilisateur
Serveur ddi

Process utilisateur 1

Process utilisateur
n

Code
Applicatif

Code
Applicatif

Dispatchers

Response queue
Q1

Serveurs partags

Q2

Autres Zones

SHARED POOL AREA (requtes SQL, procdures stockes,


cache du dictionnaire)

TCP/IP, SPX/IPX, PIPES, ...


Code du serveur
Oracle

Request queue

Code du serveur
Oracle

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

Deux classes de process autour dOracle

2.9 Les process utilisateurs

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)

Les process utilisateurs (lis l'excution d'un outil,


d'un programme d'application, ...)
Les process Oracle

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

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

Administration Oracle 10G

2.11 Les Process tches de fond

2.10 Les Processus Serveurs

Copyright G. Mopolo-Mok

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

Le Process LOG WRITER (LGWR)

2.11 Les Process tches de fond

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 :

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

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 :

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)

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

2.11 Les Process tches de fond

Le Process CHECKPOINT (CKPT) et Intrt


dun checkpoint

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.11 Les Process tches de fond

Le Process ARCH
sauvegarde le fichier REDO LOG lorsqu'il est plein

permet de forcer lcriture dans les fichiers de donnes


des blocs de donnes restant en mmoire car
frquemment modifis (Mcanisme LRU)

c'est un process facultatif. Jusqu 10 process :


ARC010 peuvent tre activs.

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 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

Le Process ARCH

2.11 Les Process tches de fond

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

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

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

System Monitor(SMON)

Process Monitor (PMON)


Fait le mnage en cas de disparition brutale
d'un process utilisateur.

Page 50

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

Dispatcher (Dnnn)

LOCK (LCKn)

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

Utile avec l'option parallle


jusqu' 10 Lock process peuvent tre dmarrs

Page 51

Copyright G. Mopolo-Mok

Administration Oracle 10G

Administration Oracle 10G

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

Copyright G. Mopolo-Mok

2.12 Autres process

2.11 Les Process tches de fond

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.

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

Page 52

Copyright G. Mopolo-Mok

Administration Oracle 10G

2.13 Mcanismes de lecture et


criture

Interrogation des donnes (SELECT)

2.13 Mcanismes de lecture et


criture

Mise jour (UPDATE)

Le process Serveur recherche la donne en SGA

UPDATE

Donne prsente en SGA ?


1.
Association d'un Rollback Segment ou dun undo tablespace
ou dun undo tablespace la transaction

NON

OUI

Lecture en mmoire scondaire

2.
Verrouillage exclusif des lignes modifier

Donne en modification ?
OUI

NON
3.
Modification des donnes dans le buffer de donnes

Donne valide ?
NON

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

Lecture dans le
buffer ou fichiers
de donnes

Lecture dans le
RBS

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

Un SELECT en cours peut - t - il accder des donnes


valides (COMMIT) par une autre transaction ?

Page 53

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 54

2.14 Mcanisme de validation et


invalidation

COMMIT
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"

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

Administration Oracle 10G

3 Tches d'administration de base

Un enregistrement contenant le COMMIT est crit dans le buffer


Redo Log par le process Serveur

Copyright G. Mopolo-Mok

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

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

3.1 Installation du noyau et des


outils Oracle

Tches avant installation

Tches avant installation

Installation

Etudier le manuel dinstallation d'Oracle ou du


produit

Tches aprs installation

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

3.1 Installation du noyau et des


outils Oracle

Installation

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.1 Installation du noyau et des


outils Oracle

Tches aprs installation

1. lancer lexcutable fournit avec la


distribution :
- sous UNIX : dans lenvironnement
motif lancer oracleInstaller
- sous NT : lancer SETUP depuis le
premier CD

Excuter si ncessaire le fichier "root.sh" en tant que


root pour modifier les permissions(sous Unix)

2. choix de la HOMEDIR dOracle

Vrifier et modifier les paramtres d'initialisation de la


base : fichier "init.ora"

3. choix d'un type d'installation (complete,


custom, minimal, ...)

diter le fichier "oratab" pour y dclarer une instance :


utile(sous UNIX )

4. Choix du ou des produits installer ou


upgrader

Permettre aux utilisateurs de lancer oraenv


(sous UNIX)
Mettre dans rc.local dbstart et dbshutdown
(sous UNIX)

5. Saisie des informations lies la base de


dpart (si premire installation)

Vrifier le fichier de trace (oraInstall.err et


oraInstall.out ). Windows platform:
c:\temp\oraInstall\ , UNIX: /temp/oraInstall

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

3.3 Privilges utiles

Une Base de donnes comporte les tats


suivants

SYSDBA (arrt, dmarrage, modification, cration


dune base, )
SYSOPER(arrt dmarrage dune base, modification)

BASE FERMEE

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

Privilges ncessaires pour crer, dmarrer


ou arrter une base (UNIX ou NT)

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, ...

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

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

3.4 Cration d'une base

Variables denvironnement positionner


ORACLE_SID=nom_de_instance
ORACLE_HOME=home_oracle
ORACLE_BASE=home_des_bases_Oracle

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base

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

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

Sqlplus (Server Manager jusqu la version 8)

# Curseurs et cache de bibliothque


open_cursors=300

# Diagnostics et statistiques

Le Database Configuration Assistant. Outil graphique


permettant de crer et modifier les bases

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

implicite lors de linstallation du serveur Oracle

# 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

3.4 Cration d'une base

Fichier dinitialisation init.ora

Permet de fixer un certain nombre de paramtres

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

# MTS
dispatchers="(PROTOCOL=TCP)(SER=MODOSE)",
"(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)",
"(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"

# 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

Etapes suivre pour crer une base avec le


Database Configuration Assistant

Page 66

3.4 Cration d'une base

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base

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]

Voir Annexes pour plus de dtails sur initSid.ora et crsid.sql


Page 67

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 68

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base

3.4 Cration d'une base

Syntaxe gnrale
logFileSpec ::=

Description des mots cls et des paramtres

{ Nomfichier | (Nomfichier [, Nomfichier] ...)}


[SIZE entier [K|M] ] [REUSE]
dataFileSpec ::=
Nomfichier [SIZE entier [K|M] [REUSE]

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

Mot cl
ou paramtre
nombase

LOGFILE

permet de spcifier les fichiers Redo log

GROUP entier

Group de fichiers redolog en miroir

MAXLOGFILES entier

nombre maximum de fichiers Redo log

16 (255)*

MAXLOGMEMBERS
entier

nbre max de membres dans un groupe


Redo log

2 (5)*

MAXLOGHISTORY

Nbre maximum de fichier d'archive


noter dans le fichier de contrle
pour recouvrement automatique si BD parallle

MAXDATAFILES entier Nbre maximum de fichiers de la bas

30(65533)*

MAXINSTANCES entier Nbre max d'instances actives sur cette base

63 (63)*

NOARCHIVELOG |
ARCHIVELOG

Base cre en mode sans archive(avec archive) noarchivelog

CHARACTER SET

Langage de stockage des donnes

NATIONAL CHARACTER SET

Langage nationale de stockage des donnes


(type NCHAR, NVARCHAR2, )

us7ascii

DATAFILE dataFileSpec Fichiers de donnes du tablespace System


* Dpendent de l'OS
Page 70

Default (Max)

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

Copyright G. Mopolo-Mok

nom de la base (8 caractres max)

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.4 Cration d'une base

Description des mots cls et des


paramtres

Page 71

Default (Max)

CONTROLFILE REUSE rutiliser les fichiers de contrle existant en


cas de recration de la base

3.4 Cration d'une base

Mot cl
Description
ou paramtre
default_temp_tablespace
permet de dfinir le TS
temporaire par dfaut.

Description

Administration Oracle 10G

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 72

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.5 Le fichier dinitialisation


init.ora

3.4 Cration d'une base

Rsultat de la cration d'une base

environ 250 paramtres dont la plupart sont


renseigns par dfaut

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

trois classes de valeurs de paramtres


les boolens (TRUE, FALSE)
des chanes de caractres
et des entiers.

ils sont regroups par catgorie

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

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

Page 73

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 74

3.6 Dmarrage d'une base

Procdure Gnrale

Administration Oracle 10G

3.6 Dmarrage d'une base

Description des mots et paramtres

Positionner les variables d'environnement


ORACLE_SID et ORACLE_HOME

FORCE

dmarrage de la base possible par paliers (startup


nomount, startup mount, et startup open)

RESTRICT sert des tches de maintenance. Il faut


avoir le privilge Restricted Session

possder les privilges appropris (SYSDBA,


SYSOPER, OSDBA ou OSOPER, ...)

PFILE

= Indique le fichier des paramtres

OPEN

dmarrer et ouvrir les fichiers de la base

MOUNT

Instance dmarre fichier(s) de contrle


ouvert(s)

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)

Copyright G. Mopolo-Mok

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

Si instance ouverte, Fermeture puis


dmarrage

NOMOUNT Seule l'instance est dmarre


ALTER DATABASE
permet le dmarre par paliers aprs un
startup NOMOUNT ou MOUNT

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.7 Arrt d'une base

3.6 Dmarrage d'une base

Exemple

Procdure Gnrale

Variables denvironnement (sous UNIX)


$ export ORACLE_SID = COURS
$ export ORACLE_HOME=/user/oracle/v9

Possder les privilges OS (osdba, osoper)

Lancer SQLPLUS
$sqlplus
username : sys as sysdba password : manager

Lancer l'outil SQLPLUS

positionner les variables d'environnement (ORACLE_SID et


ORACLE_HOME)

#dmarrer et ouvrir les fichiers de la base


SQL >startup ;
idem
SQL>startup OPEN
pfile= /user/oracle/v9/dbs/initCOURS.ora

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

#dmarrer la base par paliers


$ SQLPLUS

ABORT
Arrt violent de l'instance (recouvrement utile : SMON)

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 ;

Page 77

Copyright G. Mopolo-Mok

Administration Oracle 10G

TRANSACTIONAL
Contrairement IMMEDIATE, laisse finir les transactions en
cours

Page 78

Exemple

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

Positionner les variables d'environnement


(UNIX)
$export ORACLE_SID=COURS
$export ORACLE_HOME=/users/oracle/v9

Lancer SQL
$SQL
username : sys as sysdba

Copyright G. Mopolo-Mok

SQL> ALTER SYSTEM QUIESCE RESTRICTED

password : manager

# 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;

Page 79

Administration Oracle 10G

3.8 Passage de la base en mode


restreint pour le DBA

3.7 Arrt d'une base

Copyright G. Mopolo-Mok

Administration Oracle 10G

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 80

Copyright G. Mopolo-Mok

Administration Oracle 10G

3.9 Suspension et ractivation de


la base

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

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 suspendre la base


SQL>ALTER SYSTEM SUSPEND

3.10 Le dictionnaire de donnes


d'Oracle

Commande excuter pour revenir en mode


normal
SQL>ALTER SYSTEM RESUME

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

3.8 Le dictionnaire de donnes


d'Oracle

Contenu du dictionnaire

Administration Oracle 10G

4. Structure dune Base de


Donnes Oracle

des tables de base du dictionnaire stockes en cluster


et finissant par $. Exemple tab$, ind$, obj$, seg$, ...
(script les contenant : sql.bsq)

Copyright G. Mopolo-Mok

PLAN
4.1 Structure Physique d'une Base de Donnes Oracle

les vues de performances exemple :

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

v_$process, v_$session, v_$syststat, v_$sesstat, ...

des vues sur le dictionnaire de base commenant par :

4.2 Structure logique d'une Base de donnes Oracle

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.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

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

Process
Serveur

Fichiers de donnes
Fichiers de donnes

Page 85

LGWR

Copyright G. Mopolo-Mok

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

Redo log Buffer

CKPT

Fichier de donnes
Fichiers de contrles

Shared Pool Area

Database Buffer

DBWR

4.1.1 Les fichiers de donnes

FICHIERS REDO

Fichier de donnes
Fichiers archives

Que se passe - t - il si MAXDATAFILES est atteint ?


Que se passe - t - il si DB_FILES est atteint ?
Quelles sont les mesures prendre ?

ARCH

Administration Oracle 10G

Page 86

4.1.2 Les Fichiers Redo-Log

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers Redo-Log

Ces fichiers contiennent la trace de lactivit


en terme de mise jour sur la base

Configuration minimale (au moins 2 groupes


avec au moins un fichier chacun)

deux groupes au moins avec chacun au moins


un fichier sont obligatoires

En cas de Log Switch => changement de


groupe

ils doivent tre multiplexs pour plus de


scurit

Un checkpoint intervient si : fin de fichier,


TIMEOUT, intervalle en taille atteinte, Begin
Backup, shutdown normal ou immediate, ...

ne sont utiles quen cas de perte des fichiers


de donnes ou d'arrt anormal de la base

Configuration minimale (sans multiplexage)

Fonctionnent de faon cyclique


Groupe 1

F1a
LOG SWITCH

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 88

LOG SWITCH
LGWR

Groupe 2

Page 87

LGWR

F2a

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers Redo-Log

Utilisation en mode multiplexs (au moins


deux groupes)

4.1.2 Les fichiers REDO LOG

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

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...

Disque 2

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

Groupe 2

Page 89

F1a
Fichier1b
LOG SWITCH

F1a
Fichier2a

Copyright G. Mopolo-Mok

F1a
Fichier2b

Administration Oracle 10G

Page 90

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']...

Page 91

Copyright G. Mopolo-Mok

Administration Oracle 10G

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';

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG

4.1.2 Les Fichiers REDO LOG

Copyright G. Mopolo-Mok

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 92

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG

Informations sur les REDO LOG

v$logfile : table contenant les noms des fichiers Redo Log et leur tat.
Name

Type

Description

GROUP#

NUMBER

Numro du groupe redo Log

STATUS

VARCHAR2(7)

TYPE
MEMBER

VACHAR2(7)
VARCHAR2(513)

INVALID: fichier inaccessible


STALE : contenu incomplet
DELETED : fichier supprim
blanc
: En utilisation
ONLINE : actif,
Nom du fichier membre

Select group, status, member From v$logfile;


Group# Status
1
1
2 STALE
2 STALE
3
3
6 rows selected.

Page 93

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG

Informations sur les REDO LOG

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 94

4.1.2 Les Fichiers 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

Page 95

Copyright G. Mopolo-Mok

Administration Oracle 10G

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.2 Les Fichiers REDO LOG

Informations sur les REDO LOG

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

Page 96

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.3 Les Fichiers dArchives

4.1.3 Les Fichiers dArchives

prsents si mode avec Archives


contiennent l'archivage des fichiers Redo log
plein
la mme taille que le fichier REDO LOG
correspondant

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

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

ARCH
F1a

Fichier1a
F1a
Fichier1b

F1a

Groupe 1

Localisation des fichiers dArchives

COURSarch_123.arc
123 = Nr. de squence

Si un groupe REDO LOG est plein ou si un CHECKPOINT


est intervenu alors ARCH se met action.

Page 97

Copyright G. Mopolo-Mok

Administration Oracle 10G

Que fait Oracle lorsque LGWR tente d'craser


un fichier en cours d'Archivage ?
Page 98

4.1.4 Les fichiers de contrle

Un fichier de contrle contient des


informations de contrle d'une base de
donnes Oracle

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

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

Administration Oracle 10G

4.1.4 Les fichiers de contrle

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.

Le contenu de ce fichier est :

Copyright G. Mopolo-Mok

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;

Page 100

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.1.4 Les fichiers de contrle

4.1.4 Les fichiers de contrle

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

Les tapes
1. Lister les fichiers sauvegarder

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 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

4.2 Structure logique dune Base


de donnes Oracle

Les structures logiques servent organiser le


stockage et la gestion des donnes d'une base
Oracle
Corrlation entre les concepts logiques
Base de donnes

Fichier du SE

comprend

se dcompose en

est li
appartient
Tablespace

appartient
comprend

comprend

appartient

appartient
Segment table
d'Index
Cluster
rollback
temporaire

Page 103

Bloc

comprend
comprend

Extension

appartient

Copyright G. Mopolo-Mok

Administration Oracle 10G

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les tablespaces

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

Page 104

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les tablespaces

4.2.1 Les tablespaces

Gnralits

Rle d'un Tablespace


Organiser logiquement le stockage des donnes
(localisation dune application dans un Tablespace,
cantonnement des utilisateurs dans un tablespace)

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

Contrler l'allocation des espaces disques au


utilisateurs via des quotas

Un tablespace peut aussi tre depuis la Oracle 8


transportable en bases de donnes

Augmenter la disponibilit des donnes (arrt partiel


d'une base via l'arrt d'un Tablespace)

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)

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

4.2.1 Les Tablespaces

BASE DE DONNEES COURS

Fichier1_Sys_disk1.dbf
Table 1

Table 2
Table 1

Extension 1

Extension 2

TABLESPACE INDEX
Fichier1_index_disk3.dbf
Index 1

Extension 1

Index 2
Index 2

Page 107

TABLESPACE USER

Extension 1

Extension 2

Copyright G. Mopolo-Mok

Le tablespace SYSTEM
Tablespace cr par dfaut lors de la cration de la
base

Fichier1_user_disk1.dbf
Table 3

Extension 1

Administration Oracle 10G

4.2.1 Les Tablespaces

Exemple dOrganisation dune base

TABLESPACE SYSTEM

Copyright G. Mopolo-Mok

Extension 1

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

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

Rollback segment 1
Extension 1
Rollback segment 1
Extension 2

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


tablespace System ?

Rollback segment 1
Extension 3

Administration Oracle 10G

Page 108

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces

4.2.1 Les Tablespaces

Les autres tablespaces

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]

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)

Page 109

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 110

Administration Oracle 10G

4.2.1 Les Tablespaces

4.2.1 Les Tablespaces

Copyright G. Mopolo-Mok

La commande CREATE TABLESPACE


Les clause FileSpec et auto Extents

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

Valide pour tout type de tablespace


FileSpec ::=

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

storage_close ::=
STORAGE ( [ INITIAL
[ NEXT
[ PCTINCREASE
[ MINEXTENTS
[ MAXEXTENTS

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

VALEUR/ DEFAUT
INITIAL
NEXT
MINEXTENT
MAXEXTENT
PCTINCREASE

5 blocs
5 blocs
1
dpend taille bloc
50%

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

MIN

MAX

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

OS
OS
OS
OS

LM : Local Management

Page 111

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 112

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces

4.2.1 Les Tablespaces

La commande CREATE TABLESPACE

Cration des tablespaces grs dans le


dictionnaire
Gnralits

Les clauses Extents management et segment


management.

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

Clauses valides uniqument pour les tablespaces grs


localement

Les extensions des segments peuvent avoir des tailles


diffrentes

extents_management_clause ::=
EXTENT MANAGEMENT {DICTIONARY |
LOCAL [ {AUTOALLOCATE |
UNIFORM [SIZE integer [K | M]}]}

Les extensions sont dfinies par le DBA en sappuyant


sur les clauses DEFAULT STORAGE du tablespace
ou STORAGE dun segment

- segments_management_clause ::=
SEGMENT SPACE MANAGEMENT {MANUAL |
AUTO}

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

- Si AUTO spcifi alors les blocs libre pour linsertion


sont grs via des Bitmap autrement ils sont grs via
les FREE LISTS

Page 113

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 114

4.2.1 Les Tablespaces

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces

Cration des tablespaces grs dans le


dictionnaire

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

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;

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

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?

Page 115

Copyright G. Mopolo-Mok

Administration Oracle 10G

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

4.2.1 Les Tablespaces

4.2.1 Les Tablespaces

Cration de tablespaces grs localement

Avantages des Tablespaces grs localement


contrairement aux tablespaces grs via le Dictionnaire
:

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;

pas de requtes rcursives


dfragmentation(Coalesce) automatique du Tablespace

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

CREATE TABLE TestLocal(c1 char(4) )


tablespace tslocal
storage(initial 500k next 500K minextents 4
maxextents 10);
SEGMENT_NAME

TESTLOCAL
TESTLOCAL

Page 117

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 118

4.2.1 Les Tablespaces

EXTENT_ID

0
1

Copyright G. Mopolo-Mok

BYTES

BLOCKS

1048576
1048576

128
128

Administration Oracle 10G

4.2.1 Les Tablespaces

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);

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;

select SEGMENT_NAME , EXTENT_ID, BYTES, BLOCKS


from dba_extents
where
SEGMENT_NAME ='TESTUNIFORM1';
SEGMENT_NAME
TESTUNIFORM1

Page 119

EXTENT_ID
0

Copyright G. Mopolo-Mok

BYTES
204800

BLOCKS
25

Administration Oracle 10G

Page 120

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces

4.2.1 Les Tablespaces

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

Ajout dun fichier


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

ALTER TABLESPACE appli_compta TEMPORARY;

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

4.2.1 Les Tablespaces

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.1 Les Tablespaces

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

Un tablespace peut tre mis read-only (oracle 7.2)


ALTER TABLESPACE appli_compta READ ONLY

DROP TABLESPACE APPLI_COMPTA


INCLUDING CONTENTS
CASCADE CONSTRAINTS ;
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.2 Les Segments et leurs


composants

4.2.1 Les Tablespaces

Vues contenant des informations sur les


Tablespaces et les fichiers

Objets du schma
Le nom d'un schma quivaut celui d'un utilisateur

Vues lies aux extensions : User_extents, dba_extents

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,

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

des segments sont associs aux objets du schma.


On distingue :

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

des segments de donnes (TABLES, CLUSTERS)


des segments d'index (INDEX)
des segments temporaires
des segments ROLLBACK
le segment de dmarrage (contient le dictionnaire)

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

Page 125

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 126

4.2.2 Les Segments et leurs


composants

Objets du schma (suite)

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.2 Les Segments et leurs


composants

Le bloc

un segment est un ensemble dextensions

un bloc est la plus petite unit de stockage et d'change

une extension est un ensemble de blocs contigus

la taille dun bloc Oracle dpend de l'OS (2K, 4K, 8K,


16K, 32K)

les paramtres de stockage donnes et les


paramtres de dimensionnement des blocs de
donnes permettent de contrler l'allocation d'espaces
un segment.

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

4.2.2 Les Segments et leurs


composants

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

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

E
N
T
E
T
E

PCTFREE
(10% par dfaut)

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;

PCTUSED
(40% par dfaut)

NOTE : loption par dfaut est


SEGMENT SPACE MANAGEMENT MANUAL;

Espace libre pour les modifications

A
J
O
U
T

Espace de donnes

S
U
P
P
R
E
S
S
I
O
N

Dou vient la diffrence de 23 octets dans l'entte ?


Page 129

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 130

Une extension

Ensemble de blocs contigus appartenant un segment


est allou soit statiquement ( la cration de la table)
soit dynamiquement
Entte du Segment

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.

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

Extension N

Page 131

Administration Oracle 10G

4.2.2 Les Segments et leurs


composants

4.2.2 Les Segments et leurs


composants

Copyright G. Mopolo-Mok

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 132

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.2 Les Segments et leurs


composants

Les types de donnes Oracle

4.2.2 Les Segments et leurs


composants

La cration d'une table ou d'un cluster, ... ncessite la


connaissance du volume de la table ou du cluster

Les types de segments : rcapitulatif


Les segments de donnes :

Les types entre autre permettent dvaluer la taille d'une


table ou d'un cluster
Type de donnes

Description

Longueur

char(taille)
varchar2(size)
number(p,s)
date
LONG
BLOB
CLOB
BFILE
RAW(size)
LONG RAW
ROWID
MLSLABEL
REF

taille fixe
taille variable
taille variable
taille fixe
taille Variable
taille Variable
taille Variable

1 255 bytes
1 2000 bytes
21bytes max
7 bytes
2Go
4Go
4Go

taille variable
taille variable
Binaire
trusted Oracle
taille fixe

jusqu' 255 bytes


2Go
6 bytes
2 5 bytes
42 octets

Page 133

Copyright G. Mopolo-Mok

Administration Oracle 10G

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 134

4.2.2 Les Segments et leurs


composants

Les segments de donnes

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

Administration Oracle 10G

4.2.3 Les Segments de donnes de


type table

Ce sont des segments de type table et cluster(index ou


hach)

Copyright G. Mopolo-Mok

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

Cration du segment (suite)

Elment de la clause

description

dclaration_colonne

nom/type/contrainte niveau colonne

column_constraint

contrainte au niveau colonne

storage_clause

clause de dfinition des paramtres de stockage

enable_clause

clause d'activation des contraintes

disable_clause

clause de dsactivation des contraintes

PCTFREE

Espace libre pour les modifications

PCTUSED

Seuil au dessous duquel les insertions sont


nouveau autorises

INTITRANS

Nbre d'entre de transactions rserve la


cration d'un bloc(1 par dfaut)

MAXTRANS

Nbre de transaction max pouvant tre actives


dans un bloc

FREELISTS

Nbre de Listes de blocs utilisable en insertion

FREELISTS GROUP

Nbre de groupes de listes de blocs utilisable en


insertion (option parallle)

Large_object_clause

Clause pour localisation des objets volumineux

Partition_Clause

Clause pour le partitonnement des tables

ORGANIZATION index

Table orgnise dans un index

ORGANIZATION heap

Table orgnise sans ordre particulier. Valeur


par dfaut

ORGANIZATION external

Page 137

4.2.3 Les Segments de donnes de


type table
Cration d'un segment (suite)

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;

Table orgnise dans un fichier en dehors


dOracle.

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 138

Cration d'un segment (suite)

Exemple (suite) :
Extensions allouables au segment de la table scott.emp
Nr. Extension

Taille extension

Valeur de lextension suivante

1 (initial/min 1)

100K

50K

2 ( min 2)

50K

75K=1,5*50K

3 (min 3)

75K

112,5K=1,5*75K

112,5K

168,75=1,5*112,5K

168,75

253,125=1,5*168,75K

Page 139

Copyright G. Mopolo-Mok

Administration Oracle 10G

Administration Oracle 10G

4.2.3 Les Segments de donnes de


type table

4.2.3 Les Segments de donnes de


type table

Copyright G. Mopolo-Mok

Modification du segment

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 140

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.3 Les Segments de donnes de


type table

Modification dun segment (suite)

4.2.3 Les Segments de donnes de


type table

Modification dun segment (suite)

clause

Description

Exemple

add_clause

Ajout dune colonne ou dune contrainte niveau table

modify_clause

modification dune colonne

ALTER TABLE scott.emp


STORAGE( NEXT 300K
MAXEXTENT 10
PCTINCREASE 10)
ALLOCATE EXTENT (SIZE 400K
DATAFILE user_data1.dbf) ;

storage_clause

clause de dfinition des paramtres de stockage

enable_clause

clause d'activation des contraintes

disable_clause

clause de dsactivation des contraintes

PCTFREE

Espace libre pour les modifications

PCTUSED

Seuil au dessous duquel les insertions sont nouveau


autorises

INTITRANS

Nbre d'entre de transactions rserve la cration d'un bloc(1


par dfaut)

MAXTRANS

Nbre de transaction max pouvant tre actives dans un bloc

FREELISTS

Nbre de Listes de blocs utilisable en insertion

FREELISTS GROUP

Nbre de groupes de listes de blocs utilisable en insertion


(option parallle)

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


(sert distribuer une grande table sur plusieurs fichiers)
drop_clause

Page 141

Clause de suppression d'une contrainte d'intgrit

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 142

4.2.3 Les Segments de donnes de


type table

suppression dun segment

Copyright G. Mopolo-Mok

4.2.3 Les Segments de donnes de


type table

suppression du segment (suite)

trois approches pour supprimer les donnes d'un


segment :
DROP TABLE : supprime les donnes et le segment
DROP TABLE [ schema. ] table
[ CASCADE CONSTRAINTS ]

Drop table

truncate table

Avantages

Inconvnients

Lorsque lon ne veut plus de

Supprime les index

la table

les contraintes

pas de RBS

Pas de retour arrire

conservation des Contraintes,


triggers, grant

TRUNCATE TABLE : supprime les donnes et libre


la demande l'espace allou au segment
TRUNCATE { TABLE [ schema. ] table
| CLUSTER [ schema. ] CLUSTER }
[ { DROP | REUSE } STORAGE ]

Administration Oracle 10G

pas d'excution de trigger,


gel des Contraintes
delete from

un rollback reste possible

l'utilisation du RBS
peut tre trs long

DELETE FROM : supprime toutes les donnes d'une


table mais l'espace allou au segment est conserv.

Page 143

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 144

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.4 Les Segments de donnes de


type cluster

4.2.3 Les Segments de donnes de


type table

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)
un cluster peut tre index ou hash

Voir Annexe A10

Cluster
Cl cluster
(deptno)
10 dname loc
-------- ---sales Boston
empno
-------7067
7056

ename
------Jones
James

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

Page 145

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 146

4.2.4 Les Segments de donnes de


type cluster

cration d'un segment de cluster

CREATE CLUSTER [schma.]cluster_name

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.4 Les Segments de donnes de


type cluster
cration d'un segment de cluster (suite)

Exemple de cration d'un cluster index

(column datatype [,column datatype] ...)

a)

[PCTUSED integer] [ PCTFREE integer]

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));

[SIZE integer][K | M]
[INITRANS integer] [MAXTRANS integer]
[TABLESPACE tablespace_name]
[STORAGE storage_clause]
[INDEX]
[[HASH IS colonne] HASHKEYS integer]

b)
create table emp(...) cluster cluster_emp_dept (deptno);
create table dept(...) cluster cluster_emp_dept (deptno);

clause

Description

SIZE

taille d'un bloc logique pour le cluster

HASH IS

Colonne qui joue le rle de fonction de hashage

HASHKEYS

Nombre de valeurs de cls

c)
create index idx_emp_dept on cluster cluster_emp_dept ;
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

Modification dun segment de cluster

4.2.4 Les Segments de donnes de


type cluster

suppression du segment de type 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 ]

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

4.2.4 Les Segments de donnes de


type cluster

dimensionnement du segment

Administration Oracle 10G

4.2.5 Les Segments dindex

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)

Voir Annexe A10

Un B-arbre

BLOC DINDEX
RACINE

BLOC DINDEX
INTERMEDIAIRE

Bloc
dindex
feuille

Bloc
dindex
feuille

BLOC DINDEX
INTERMEDIAIRE

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

Le segment dindex

4.2.5 Les Segments dindex

cration d'un segment d'index


CREATE {BITMAP | INDEX } [ schema. ] index
ON { [ schema. ] table ( column [ ASC | DESC ]
[, column [ ASC | DESC ] ] ...]

Gnralits (suite)
King

| CLUSTER [ schema. ] cluster }


[ INITRANS integer ] [ MAXTRANS integer ]

Blake

James

Miller

[ TABLESPACE tablespace ]

Simonth

[ STORAGE storage_clause ]

Simonth Smith
James

Miller
Blake

Clark

[ NOSORT ]

Scott

Ford
King

Adams

[ PCTFREE integer ]

Jones

[REVERSE]

Martin

[PARTITION clause_de_partionnement]

Allen

Modification du segment

Notes :
A chaque feuille on trouve : la valeur cl et le ROWID (index unique) ou la liste

ALTER INDEX [ schema. jindex

des ROWID (Index non unique). Par exemple ADAMS '00000012.0002.0002 '.

[ 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

4.2.6 Les Segments temporaires

Gnralits
Oracle cr automatiquement ces segments si la
zone de tri (paramtre SORT_AREA_SIZE) s'avre
petite

Il est maintenant possible depuis la 7.3 de crer un


tablespace temporaire pour requtes ncessitant les tris

Page 155

Copyright G. Mopolo-Mok

Administration Oracle 10G

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;

plusieurs Ordres SQL provoquent des tris : Group


by, Ordrer by, Oprateurs ensemblistes, Distinct,
Merge join, ...

C'est la cration d'un Utilisateur Oracle qu'on lui


indique son segment temporaire.

Administration Oracle 10G

4.2.6 Les Segments temporaires

pour augmenter les performances, il est utile de les


sparer des segments de donnes

Copyright G. Mopolo-Mok

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 156

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback


manuels ou automatique

4.2.6 Les Segments temporaires

Exemple 3: Cration d'une table


temporaire de session (ligne supprime
la fin de la session)

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.

CREATE GLOBAL TEMPORARY


TABLE itineraire_vol (
startdate DATE,
enddate DATE,
cost NUMBER)
ON COMMIT PRESERVE ROWS
TABLESPACE temp_tab_ts ;

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

Cration d'un RBS manuel

Syntaxe

Administration Oracle 10G

4.2.7 Les Segments rollback


manuels ou automatique

4.2.7 Les Segments rollback


manuels ou automatique

Copyright G. Mopolo-Mok

Modification dun RBS manuel


Il est possible d'activer ou dsactiver un RBS et de
modifier ses paramtres de stockage

CREATE [ PUBLIC ] ROLLBACK SEGMENT rollback_segment

un Rollback segment actif ne peut tre mis OFFLINE

[ TABLESPACE tablespace ]
[ STORAGE (

storage_clause

[ OPTIMAL

integer [ K | M ] | NULL ] )

Syntaxe

Exemple

ALTER ROLLBACK SEGMENT rollback_ segment


{ ONLINE

CREATE PUBLIC ROLLBACK SEGMENT r5


TABLESPACE ts_rbs

| OFFLINE
| STORAGE storage_clause }

STORAGE (INITIAL 100K MINEXTENTS 3 MAXEXTENTS 10


NEXT 100K
OPTIMAL 400K ) ;

Exemple

PUBLIC : segment accessible par toutes les instances dune mme base

ALTER ROLLBACK SEGMENT r5 ONLINE ;

OPTIMAL : Taille optimale du RBS obtenue par Oracle par


dsallocation dynamique
NOTE :

Page 159

par dfaut un RBS cr est inactif


Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 160

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback


manuels ou automatique

4.2.7 Les Segments rollback


manuels ou automatique

Suppression dun RBS manuel

Allocation et libration d'extensions dans un


RBS

Un segment avec des transactions actives ne peut tre


supprim

Un RBS doit avoir au moins 2 extensions

il est utile de sparer les segments RBS des segments


de donnes

un bloc d'une extension est affect une et une seule


transaction

Le RBS SYSTEM ne peut tre ni arrt ni supprim.

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

Reprsentation schmatique

Exemple

E1

DROP ROLLBACK SEGMENT r5;

NOTE :
Page 161

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 162

4.2.7 Les Segments rollback


manuels ou automatique

Le commencement d'une transaction entrane son


assignation un RBS actif

RBS 2
T2 T5 T8

Le paramtre OPTIMAL permet de dsallouer dynamiquement une


extension dun RBS manuel
Copyright G. Mopolo-Mok

Administration Oracle 10G

Activation et Estimation du nombre de RBS


manuels
Les paramtres de init.ora

la rgle d'assignation implicite d'une transaction est


celle de la rpartition quitable des charges entre
RBS
RBS 1

E3

4.2.7 Les Segments rollback


manuels ou automatique

Assignation implicite dune transaction RBS

T1 T4 T7

E2

TRANSACTIONS : Nombres maximum de transactions


concurrentes(par dfaut 1.1 * SESSIONS)
TRANSACTION_PER_ROLLBACK_SEGMENT :
Nombre de transactions par Rollback segment (30 par
dfaut)

RBS 3
T3 T6

T9 ?

Activation automatique des RBS manuels

Assignation explicite dune transaction RBS


manuel
une transaction peut tre oriente vers un RBS cr
manuellement particulier

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)

SET TRANSACTION USE ROLLBACK SEGMENT


nom_rollback_segment ;

Page 163

Copyright G. Mopolo-Mok

Administration Oracle 10G

sql>ALTER ROLLBACK SEGMENT r1 ONLINE ;


Page 164

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback


manuels ou automatique

4.2.7 Les Segments rollback


manuels ou automatique

Estimation du nombre de RBS manuels

N transactions simultanes

Etats dun RBS

Nombre de RBS utiles

n <= 16

16<= n <= 32

32 <= n

nb= n / 4

INVALID

RBS supprim

OFFLINE

donnes recouvres
avec succs
RBS
RBS
mis online mis offline

avec nb < 50

RBS
Supprim

ONLINE
Transaction
distribue
rsolue

transaction
en suspend
rsolue

RBS
Partiellement
Disponible

PB rseaux
transaction
suspendue

Erreur de support
physique
ou corruption
RBS
ncessite un
recouvrement

Erreur de support
physique
ou corruption

Page 165

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 166

4.2.7 Les Segments rollback


manuels ou automatique

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback


manuels ou automatique

Visualisation des RBS

Les vues suivantes contiennent les informations sur les


ROLLBACK SEGMENT

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

dba_rollback_segs, dba_segments, user_segments


v$waitstat, v$sysstat
v$rollname, v$transaction, v$session, v$rollstat (servent
aussi au dimensionnement)

WHERE segment_type = ROLLBACK;


SEGMENT_NAME

TABLESPACE_NAME

BYTES

BLOCKS

SYSTEM

SYSTEM

204800

100

EXTENTS

RB_TEMP

SYSTEM

1484800

725

15

RB1

ROLLBACK_DATA

102400

50

Exemples :

RB2

ROLLBACK_DATA

102400

50

a) Informations sur les RBS

RB3

ROLLBACK_DATA

102400

50

SELECT segment_name, tablespace_name, status FROM sys.dba_rollback_segs ;


SELECT segment_name, status FROM dba_rollback_segs;

RB4

ROLLBACK_DATA

102400

50

c) Transaction actives dans les RBS

Page 167

SEGMENT_NAME

TABLESPACE_NAME

STATUS

SYSTEM

SYSTEM

ONLINE

RB_TEMP

SYSTEM

OFFLINE

RB1

ROLLBACK_DATA

ONLINE

RB2

ROLLBACK_DATA

ONLINE

RB3

ROLLBACK_DATA

ONLINE

RB4

ROLLBACK_DATA

ONLINE

Copyright G. Mopolo-Mok

Administration Oracle 10G

SELECT distinct name, xacts "Transactions actives"


FROM v$rollname vr, v$rollstat vs
WHERE vs.usn = vr.usn and xacts != 0;
NAME
RB1

Page 168

Transactions actives
1

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.7 Les Segments rollback


manuels ou automatique

Contention sur les RBS

4.2.7 Les Segments rollback


manuels ou automatique

La requte suivante permet d'accder aux statistiques :

Les Tablespaces dAnnulations (TSA)


Gnralits

sql> SELECT class, count


FROM v$waitstat
WHERE class IN ('system undo header', 'system undo block',
'undo header', 'undo blocs');
class

count

System undo header


system undo block
undo header
undo block

2089
633
1235
942

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

Calculer le nombre de demandes de buffers


sql>SELECT sum(value) "Buffers demands"
FROM v$sysstat
WHERE name in ('db block gets', 'Consistent Gets');

MANUAL indique que vous devez vous mme crs


vos ROLLBACK SEGMENTS

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

4.2.8 Les Segments rollback


automatiques

Les tablespaces dAnnulations (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

Les tablespaces dAnnulations (TSA)

Copyright G. Mopolo-Mok

b) Dynamiquement
ALTER SYSTEM SET UNDO_TABLESPACE =
undotbs_02;

Administration Oracle 10G

Assignation dun nouveau TSA


a) Dans init.ora
UNDO_TABLESPACE = undotbs_02
UNDO_MANAGEMENT = AUTO

DROP TABLESPACE undotbs_02 ;

Page 171

Modification dun TSA


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

Explicitement aprs la cration de la base


CREATE UNDO TABLESPACE undotbs_02
DATAFILE
'c:\oracle\ora9data\dbgm\tsundo2\undo0201.dbf
size 10M AUTOEXTEND ON

Suppression dun TSA

Administration Oracle 10G

4.2.8 Les Segments rollback


automatiques

Cration dun TSA

Copyright G. Mopolo-Mok

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 172

Copyright G. Mopolo-Mok

Administration Oracle 10G

4.2.8 Les Segments rollback


automatiques

Les tablespaces dAnnulations (TSA)

5. Gestion de la scurit et des


ressources

5.1 Gnralits
5.2 Les Privilges

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

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

5. Gestion de la scurit et des


ressources

PLAN

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.1 Gnralits

Rle de l'Administrateur de scurit et des


ressources

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

Faire les choix du type de scurit : au niveau


systme, au niveau Oracle, au niveau Global (LDAP)
Grer les utilisateurs
Grer les ressources (profiles)

5.6 L'audit

Dfinir une politique de scurit

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

Assurer laffectation et le retrait des droits


Affiner la politique de scurit par l'utilisation des
rles
Effectuer les audits

Page 175

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 176

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.1 Gnralits

5.2 Les Privilges

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

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

Oracle possde deux types de privilges :


les privilges systmes et les privilges objets.

PROFILES

Un privilge peut tre affect (retir) un Utilisateur,


un Rle ou tous les utilisateurs (PUBLIC)

UTILISATEURS

AUDIT
LES VUES

Page 177

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 178

Copyright G. Mopolo-Mok

5.2 Les privilges

5.2 Les privilges

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

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

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

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

: nom dun privilge systme

role

: Nom d'un rle

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


With Admin Option

Page 179

Administration Oracle 10G

Page 180

: le rle pourra tre redistribu par celui qui le reoit

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.2 Les privilges

5.2 Les privilges

Les privilges systmes (suite)

Affectation des privilges systmes (suite)

Les Privilges Systmes (suite)


Rvocation d'un privilge Systme
Syntaxe

L'affectation d'un privilge avec l'option "WITH


ADMIN OPTION" suit les rgles suivantes :

REVOKE { system_priv | role }


FROM { user | role | PUBLIC }

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

Exemple :
REVOKE ALTER ANY TABLE FROM PUBLIC ;
REVOKE CREATE SESSION FROM SCOTT ;

Exemple

Les vues du dictionnaire

GRANT ALTER TABLESPACE TO scott ;

SELECT * FROM DBA_SYS_PRIVS


ORDER BY grantee, privilege ;

GRANT CREATE USER,


CREATE SESSION TO scott
WITH ADMIN OPTION ;

GRANTEE

PRIVILEGE

CONNECT

ALTER SESSION

ADM
NO

CONNECT

CREATE CLUSTER

NO

GRANT ALTER ANY TABLE TO PUBLIC ;


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

5.2 Les privilges

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.2 Les privilges

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

Privilges objets

Libell

Objets concerns

REFERENCES

droit de rfrencer une table


lors d'un alter ou create table
(ne peut tre affect un rle)

table

Privilges objets

Libell

Objets concerns

ALTER

droit de modifier

table, squence

READ

droit de lire dans une directory

directory

DELETE

droit de supprimer

table , vue, VM

SELECT

droit de consulter

EXECUTE

droit dexcuter

procdure, fonction,
package,type user,
oprateur, indextype,
library

table, vue,
snapshot, sequence

UPDATE

droit de mise jour

table ou vue

UNDER

droit de crer des sous vue

vue, type user

WRITE

droit dcrire dans une directory directory

INDEX

droit de crer un index


(ne peut tre affect un rle)

table

INSERT

droit dinsrer

table, vue,VM

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

5.2 Les privilges

Les privilges Objets (suite)

Les privilges Objets (suite)

Affectation de privilges objets

Rvocation 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 ]

Syntaxe
REVOKE { object_priv | ALL [ PRIVILEGES ] }
ON [ schema. ] object
FROM { user | role | PUBLIC } [CASCADE CONSTRAINTS ]
Notes

Notes :
ALL : nest pas un privilge mais signifie "tous les privilges sur un objet"

CASCADE CONSTRAINTS : semploie avec le privilge REFERENCES,


supprime les contraintes d'intgrit mises.

object_priv: Nom du privilge


column : Nom d'une colonne si object_priv= insert, update ou references
schema.objet : Nom de l'objet concern

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.

With Grant Option: L'utilisateur qui reoit le privilge peut le raffecter.

Exemples

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 ;

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 ;

sq>GRANT SELECT ON emp to dupond;


Page 185

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 186

5.2 Les privilges

Visualisation des privilges objets

Les privilges Objets (suite)


Visualisation des privilges objets

DBA_TAB_PRIVS

DBA_COL_PRIVS

ALL_TAB_PRIVS

ALL_COL_PRIVS

USER_TAB_PRIVS

USER_COL_PRIVS

All_TAB_PRIVS_MADE

DBA_COL_PRIVS

USER_TAB_PRIVS_MADE

ALL_COL_PRIVS_MADE

USER_TAB_PRIVS_MADE

USER_COL_PRIVS_MADE

GRANTEE OWNER

ALL_TAB_PRIVS_RECD

ALL_COL_PRIVS_RECD

USER_TAB_PRIVS_RECD

ALL_COL_PRIVS_RECD

TABLE_PRIVILEGES

COLUMN_PRIVILEGES

DUPONT
DUPONT
DUPONT
DUPONT
DUPONT
DUPONT
DUPONT

Principales Colonnes de vues ci-dessus


GRANTEE
OWNER
TABLE_NAME
COLUMN_NAME
GRANTOR
PRIVILEGE
GRANT

: 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.

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.2 Les privilges

Les privilges Objets (suite)

Page 187

Copyright G. Mopolo-Mok

Administration Oracle 10G

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;

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

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

Page 188

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles

5.3 Les rles

Plan

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.

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

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

5.3 Les rles

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles

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

Privilge 2
CREATE ROLE role
[ { NOT IDENTIFIED
| IDENTIFIED { BY password | EXTERNALLY | GLOBALLY |
USING package} ]

Privilge 3

...

Utilisateur 2

Privilge N

Mots cls et paramtres


role
NOT IDENTIFIED
Password
EXTERNALLY
GLOBALLY
USING package

Assignation de privilges aux utilisateurs : VIA UN ROLE


Privilge 1

Utilisateur 1

Privilge 2

Exemple

Role 1

sql> CREATE ROLE rl_etudiant ;

Privilge 3

...

: 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

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

5.3 Les rles

Modification d'un rle

On peut modifier le niveau de scurit d'un rle

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

privilge requis pour modifier un rle ALTER ANY


ROLE.
Syntaxe

Le privilge DROP ANY ROLE et le fait d'avoir


acquis un rle avec WITH ADMIN OPTION
permettent de le supprimer

ALTER ROLE role


{ NOT IDENTIFIED
| IDENTIFIED { BY password | EXTERNALLY |
Globally | USING package} }

Syntaxe

Mots cls et paramtres


role
NOT IDENTIFIED
Password
EXTERNALLY
GLOBALLY
USING package

DROP ROLE role ;

: 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
DROP ROLE rl_admin_secu ;

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

5.3 Les rles

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles

Affectation de privilges ou de rles un rle


Exemple

Affectation de privilges un rle


Privilges ne pouvant tre affects un ROLE
Privilge Systme

Cration de deux rles

UNLIMITED TABLESPACE

# rle rassemblant les privilges pour se connecter


CREATE ROLE rl_connect ;

Ce privilge inhibe tous les quotas et autorise


l'utilisateur crer des objets dans n'importe quel
tablespace.

# rle rassemblant les privilges pour administrer la scurit


CREATE ROLE rl_admin_secu ;

Privilges Objets

Affectation des privilges aux rles

INDEX

GRANT create session, alter session,


Restricted session TO rl_connect ;

# droit de crer un index sur les tables


d'autres utilisateurs

REFERENCES # droit de rfrencer une table dans le


schma d'autres utilisateurs

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 ;
Page 195

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 196

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles

5.3 Les rles

Affectation d'un rle un Utilisateur

Affectation d'un rle un utilisateur (suite)


Affectation d'un rle au niveau de l'OS

Elle peut se faire au niveau :


Oracle
du Systme d'Exploitation (OS)
De lannuaire de lentreprise

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

Affectation d'un Rle au niveau Oracle

Dclarer (sous UNIX) dans le fichier de groupe chaque


rle comme tant un groupe

GRANT role to user [WITH ADMIN OPTION]

Syntaxe
ora_<SID>_<role>[_[D][A] : [user1, [user2], [ ...]]

Lutilisateur ayant reu le rle avec WITH ADMIN


OPTION peut le raffecter, supprimer ou modifier.

Avec

SID
role
D
A

: nom de l'instance
: nom du rle
: rle par dfaut
: WITH ADMIN OPTION

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

Affectation d'un rle un utilisateur (suite)


NOTES sur laffectation d'un rle partir de l'OS

Rles prdfinis

NOM DU ROLE

PRIVILEGES AFFECTES AU ROLE

CONNECT

L'affectation et la rvocation de rles ne se fait plus


qu'au niveau de l'OS. Impossible dutiliser lordre
GRANT role TO user

ALTER SESSION, CREATE CLUSTER,


CREATE DATABASE LINK, CREATE SEQUENCE,
CREATE SESSION, CREATE SYNONYM,
CREATE TABLE, CREATE VIEW

RESOURCE

un rle affect via l'OS peut tre activ ou dsactiv


par l'utilisateur avec la commande
ALTER USER ... SET ROLE ...;

CREATE CLUSTER, CREATE PROCEDURE,


CREATE SEQUENCE, CREATE TABLE,
CREATE TRIGGER

DBA

tous les privilges (annexe A6) WITH ADMIN OPTION

exp_full_database

SELECT ANY TABLE, BACKUP ANY TABLE,


INSERT, DELETE AND UPDATE ON tables
SYS.INCVID, SYS.INCFIL, SYS.INCEXP

imp_full_database

BECOME USER, WRITEDOWN (trusted Oracle)

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

Page 199

Administration Oracle 10G

5.3 Les rles

5.3 Les rles

Copyright G. Mopolo-Mok

Copyright G. Mopolo-Mok

Administration Oracle 10G

Execute_catalog_role

Privilge dexcuter les procdures du dictionnaire

Select_catalog_role

Privilge de consulter tout le dictionnaire Oracle

Delete_catalog_role

Privilge de supprimer la table daudit aud$

Recovery_catalog_ownerFournit les privilges pour le propritaire du catalogue de


recouvrement
Aq_administrator_role Fournit les privilges pour ladministration des Queue
Snmpagent

Page 200

Founit les privilges utiles lagent SNMP dentreprise


manager

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.3 Les rles

5.3 Les rles

Rles prdfinis

NOTES :

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

. Les rles CONNECT, RESOURCE, DBA correspondent aux anciens

privilges systmes sous Oracle V6

. laffectation des rles RESOURCE et DBA un utilisateur


entrane un GRANT unlimited tablespace

Exemple 1 : listing de tous les rles de la base


sql> SELECT * FROM sys.dba_roles ;

Page 201

Copyright G. Mopolo-Mok

Administration Oracle 10G

ROLE

PASSWORD

CONNECT
RESOURCE
DBA
EXP_FULL_DATABASE
IMP_FULL_DATABASE
MONITORER
RL_ADMIN_SECU
RL_CONNECT

NO
NO
NO
NO
NO
NO
NO
NO

Page 202

5.3 Les rles

Exemple 2 : liste des rles affects un role ou un


utilisateur.
sql>SELECT * FROM sys.dba_role_privs
WHERE grantee = 'RL_ADMIN_SECU' ;
RL_ADMIN_SECU

GRANTED_ROLE ADM DEF


RL_CONNECT

Administration Oracle 10G

5.4 Les profiles

Informations sur les rles (suite)

GRANTEE

Copyright G. Mopolo-Mok

NO

Default
YES

Exemple 3 : liste des rles actifs pour la session


sql>SELECT * FROM session_roles ;

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

ROLE

activation et contrle des limites :

MONITORER
DBA
EXP_FULL_DATABASE
IMP_FULL_DATABASE
RL_ADMIN_SECU

dans le fichier initSID.ora positionner :


RESOURCE_LIMIT = TRUE
ou dynamiquement faire sous sqlplus par exemple :
SQL> ALTER SYSTEM SET resource_limit = true;

Page 203

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 204

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles

5.4 Les profiles

Cration d'un profile

Privilge requis CREATE PROFILE

Privilge requis CREATE PROFILE


Syntaxe partie password

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}]

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

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

Mots cls et paramtres

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

Page 205

Copyright G. Mopolo-Mok

Cration d'un profile

Administration Oracle 10G

Page 206

5.4 Les profiles

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles

Cration d'un profile (suite)

Exemple (suite)

Assignation dun profile un utilisateur


A la cration d'un nouvel utilisateur

Exemple 1

CREATE USER rackham IDENTIFIED BY lerouge


PROFILE pf_secretaire ;

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 ;

A la modification d'un utilisateur


ALTER USER rackham
PROFILE pf_agent ;

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

5.4 Les profiles

Modification dun profile

Modification dun profile


Privilge requis : ALTER PROFILE

Privilge requis : ALTER PROFILE


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}]

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}]

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

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

Page 209

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 210

Administration Oracle 10G

5.4 Les profiles

5.4 Les Profiles

Copyright G. Mopolo-Mok

Modification dun profile

Exemple 1 :

Modification des limites du profile par dfaut


DEFAULT

Utilisations des limites composites


Gnralits
Fixe le cot total des limites pour une session

ALTER PROFILE default LIMIT


CPU_PER_SESSION 600

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)

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

5.4 Les profiles

Cration de limites composites

Cration d'une limite composite (suite)


Formule dvaluation du cot total des ressources pour une
session.

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

T = poids * consommation_per_resource_limit

Exemple 1 :
SQL> ALTER RESOURCE COST
cpu_per_session
100
connect_time
1;

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

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

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 ?

Page 213

Copyright G. Mopolo-Mok

Administration Oracle 10G

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

5.4 Les profiles

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.4 Les profiles

Suppression dun profile

En cas de suppression d'un profile existant affect un


utilisateur, ce dernier se verra automatiquement
attribu le profile DEFAULT

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

Le profile DEFAULT ne peut tre supprim

sql> SELECT profile, resource_name, limit FROM dba_profiles


ORDER BY profile, resource_name;

Privilge requis : DROP PROFILE

PROFILE

RESOURCE_NAME

LIMIT

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
...

COMPOSITE_LIMIT

UNLIMITED

CPU_PER_SESSION
COMPOSITE_LIMIT
CONNECT_TIME
CPU_PER_CALL
PRIVATE_SGA
SESSIONS_PER_USER

600
20000
DEFAULT
1000
32768
2

COMPOSITE_LIMIT
CONNECT_TIME
CPU_PER_CALL
CPU_PER_SESSION
IDLE_TIME
LOGICAL_READS_PER_CALL
SESSIONS_PER_USER

DEFAULT
480
1000
UNLIMITED
30
100
2

Syntaxe
DROP PROFILE nom_profile [CASCADE]

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

5.5 Les utilisateurs

Visualisation des informations des profiles (suite)

Exemple 2 :

Liste des cots (poids) des ressources pour la


session courante

La notion d'utilisateur est fondamentale pour accder


aux donnes d'une base Oracle

sql> SELECT resource_name, limit FROM resource_cost


RESOURCE_NAME
CPU_PER_SESSION
LOGICAL_READS_PER_SESSION
CONNECT_TIME
PRIVATE_SGA

Exemple 3 :

Gnralits

Le site d'un client Oracle doit tre tenu jour au


niveau des licences :

UNIT_COST
100
2
0
0

les paramtres de init.ora pour le contrle de la licence (


valeurs par dfaut 0) :
license_max_session, license_sessions_warning,
license_max_users

Liste des limites des ressources de l'utilisateur


courant

Si la limite en nombre de sessions est illimite conserver


les valeurs par dfaut

sql> SELECT resource_name, limit FROM user_resource_limits


RESOURCE_NAME

LIMIT

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

UNLIMITED
UNLIMITED
600
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED

Page 217

Copyright G. Mopolo-Mok

Administration Oracle 10G

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
Page 218

5.5 Les utilisateurs

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs

Gnralits (suite)

Contrle de la limitation du nombre d'utilisateurs

Gnralits (suite)
Authentification des utilisateurs

Au moment du lancement d'une instance


LICENSE_MAX_USERS = 80

Globalement partir de lannuaire LDAP


CREATE USER scott
IDENTIFIED GLOBALLY AS
CN=scott,OU=division1,O=oracle,C=US

Au moment ou l'instance tourne


sqlplus >ALTER SYSTEM
SET LICENSE_MAX_USERS=100;

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

5.5 Les utilisateurs

Gnralits (suite)

Utilisateur et schma

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.

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 :

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}]

CREATE SCHEMA AUTHORIZATION ottocar


CREATE TABLE VOL (
vol#
number(4) primary key,
plnum
number(4) references pilote,
vd
char(12),
va
char(12))

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

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;

Page 221

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 222

5.5 Les utilisateurs

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs

Cration d'un utilisateur (suite)

Modification dun utilisateur


Syntaxe

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.

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

sql> CREATE USER dupond IDENTIFIED BY dupont ;

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

NOTES :
Rle par dfaut = Rle affect directement un utilisateur
Page 224

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs

5.5 Les utilisateurs

Modification dun utilisateur

Exemple 1

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,
...)

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

Privilge requis : DROP USER


Syntaxe

sql> ALTER USER dupont IDENTIFIED BY boules


DEFAULT TABLESPACE user
QUOTA UNLIMITED ON user
QUOTA 0 ON system ;

DROP USER user [ CASCADE ]


Mots cls et paramtres

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.

user
CASCADE

Exemple

sql> ALTER USER tintin


TEMPORARY TABLESPACE temp
DEFAULT ROLE ALL EXECPT rl_admin_secu;
Page 225

Copyright G. Mopolo-Mok

Administration Oracle 10G

DROP USER tsang

Page 226

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
Copyright G. Mopolo-Mok

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs

Affectation de droits un Utilisateur

Page 227

DROP USER dupont CASCADE ;

5.5 Les utilisateurs

: Nom de lutilisateur supprimer


: supprime aussi les objets du schma de
l'utilisateur et les contraintes d'intgrit de
rfrence.

Administration Oracle 10G

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

USER_ID

CREATED

SYSTEM

26/09/95

SCOTT

26/09/95

DUPONT

13

29/04/96

OPS$MOPOLO

22

05/05/96

OTTOCAR

23

07/05/96

Page 228

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.5 Les utilisateurs

5.5 Les utilisateurs

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

Informations sur les utilisateurs (suite)

Exemple 5 :
Informations sur les quotas de tous les utilisateurs

CREATED PROFILE

SYSTEM 5 D4DF7931AB130E37

USER_DATA

TEMPORARY_DATA 26/09/95 DEFAULT

SCOTT

8 F8948444 402B67

USER_DATA

TEMPORARY_DATA 26/09/95 DEFAULT

DUPONT 13 38BD25849F 94015A

SYSTEM

SYSTEM

29/04/96 DEFAULT

OPS$MOPOLO 22 EXTERNAL

SYSTEM

SYSTEM

05/05/96 DEFAULT

OTTOCA 23 5006630829F6EA0E

USER_DATA

TEMPORARY_DATA 07/05/96 DEFAULT

slq> SELECT * FROM dba_ts_quotas;


TABLESPACE_
NAME

TEMPORARY_DATA OTTOCAR
USER_DATA

Exemple 4 : Informations sur les quotas de lutilisateur actuel


SELECT * FROM user_ts_quotas;
TABLESPACE_NAME

BYTES

MAX_BYTES

USER_DATA

552960

270

TTEST

20480

10

Page 229

Copyright G. Mopolo-Mok

BLOCKS MAX_BLOCKS

Administration Oracle 10G

En cas de problmes avec une session


(interblocage, consommation excessive de
resources, ...), sa suppression peut tre dcide

: nombre d'octets dj consomms

blocks

: nombre de blocs dj consomms

Page 230

-1

Copyright G. Mopolo-Mok

Administration Oracle 10G

L'objectif de l'audit est de contrler les accs


mal intentionns ou non autoriss la base

Rgles pour un bon audit

Audit au niveau Oracle(audit_trail=TRUE). Avantage :


audit cibl grce SQL
possibilit d'exploiter les outils Oracle pour gnrer des
rapports

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

select sid, serial#, username FRom v$session ;


Username
tintin
sadm

ALTER SYSTEM KILL SESSION '13, 8';


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

Copyright G. Mopolo-Mok

-1

20

Max_blocks : quota disque en blocs pour un utilisateur

la commande Alter System Kill Session ... permet de


supprimer une session.

Page 231

Max_bytes : quota disque en octets autoriss pour un utilisateur

l'annulation de la transaction concerne,


la libration des verrrous et des resources consommes

Note :

-1

MAX_
BLOCKS

Bien choisir le lieu de mise en oeuvre de l'audit

cette suppression entrane :

Serial#
8
11

40960 -1

BLOCKS

5.6 Laudit

Suppression dune session

sid
13
14

OTTOCAR

BYTES MAX_
BYTES

bytes

5.5 Les utilisateurs

USERNAME

Administration Oracle 10G

possibilit de consolider des audits de sources diverses

Inhiber l'audit (audit_trail = NONE)

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

5.6 Laudit

5.6 Laudit

Types daudits

par utilisateur : auditer l'activit d'un ou plusieurs


utilisateurs

Privilge requis : AUDIT SYSTEM


Syntaxe

par session (en cas de succs ou d'insuccs) : Pour N


activations d'une action dans une session, conserver
une seule trace

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 ]

par accs (en cas de succs ou d'insuccs) : Pour N


activations d'une action dans une session, conserver N
trace

Mots cls et paramtres

Types de surveillance

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

Audit sur les ordres SQL et les privilges systmes


Audit sur les objets.

Page 233

Copyright G. Mopolo-Mok

Audit des ordres sql et des privilges systmes

Administration Oracle 10G

Page 234

Audit des ordres SQL et des privilges


systmes (suite)

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

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 ;

Page 235

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

5.6 Laudit

Copyright G. Mopolo-Mok

Administration Oracle 10G

Options daudit des ordres SQL

Options

Ordres SQL audits

alter system

alter system

cluster

create cluster, alter cluster, drop cluster,


truncate cluster

database link

create database link, drop database link

index

create index, alter index, drop index

not exists

tout ordre sql qui retourne lerreur :


objet inexistant (create table, ...)

procedure

create[or replace] function,


create[or replace] package,
create[or replace] package body,
create[or replace] procedure,
drop package, drop procedure

public database link

create public database link,


drop public database link

public synonym

create public synonym


drop public synonym

role

create role, alter role, set role, drop role

Page 236

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

5.6 Laudit

Options daudit des ordres SQL(suite)

Options daudit des ordres SQL(suite)

Options

Ordres SQL audits

Options

rollback segment

create rollback segment,


alter rollback segment,
drop rollback segment

alter sequence
alter table

alter sequence nom_sequence


alter table nom_table

comment table

comment on table, vue, snapshot,


colonne

sequence

create sequence, drop sequence

synonym

create synonym, drop synonym

delete table

delete from nom_table, bnom_vue

audit, no audit

execute procedure

appel de procedure et de fonction

grant procedure

grant privilge on procedure,


revoke privilge on procedure

grant table

grant privilge on table, vue, snapshot


revoke privilge on table, vue, snapshot

insert table

insert into table, vue

system audit
system grant

GRANT system_privileges/roles
TO user/role
REVOKE system_privileges/roles
FROM user/role

table

create table, alter table, drop table

tablespace

create tablespace, alter tablespace,


drop tablespace

trigger

create trigger,
alter trigger enable or disable
alter table with enable, disable
and drop clauses

user

create user, alter user, drop user

view

create[or replace] view, drop view

Page 237

Copyright G. Mopolo-Mok

Administration Oracle 10G

lock table

rfrence une squence

select table

select * from table, vue, snapshot

update table

update, vue

Context

create context, drop context

DIMENSION

CREATE DIMENSION, ALTER DIMENSION


DROP DIMENSION

DIRECTORY

CREATE DIRECTORY, DROP DIRECTORY

Page 238

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

Audit des objets du schma

Audit des objets du schma (suite)

Exemple 1

Privilge Requis : AUDIT ANY

auditer lordre SQL select sur la table tintin.emp en cas dchec


d'excution de cet ordre.

Syntaxe
AUDIT object_opt [, object_opt] ...
ON {[ schema.]object | DIRECTORY
directory_name | DEFAULT}
[ BY { SESSION | ACCESS } ]
[ WHENEVER [ NOT ] SUCCESSFUL ]
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

Copyright G. Mopolo-Mok

sql> AUDIT select ON tintin.emp


WHENEVER NOT SUCCESSFUL ;

Exemple 2

Mots cls et paramtres

Page 239

lock table table, vue

select sequence

5.6 Laudit

Ordres SQL audits

Administration Oracle 10G

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 240

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

5.6 Laudit

Audit des objets du schma (suite)

la table de base AUD$ contient l'ensemble des


informations sur les audits

Les options daudit des objets


Options

Ordres SQL audits

Objet du
schma concern

alter

alter table | sequence

table, squence, MV, Obj. type

audit

audit (sur les objets)

table, vue, squence, procdure

comment

comment table | view

table, vue

delete

delete from table | view

table | vue

execute

execute procedure

procdure

grant

grant (objets)

table, vue, squence, procdure

index

create index on

table

insert

insert into table| view

table, vue

lock

lock table | view

table, vue

rename

rename ...

table, vue, procdure1

select

select * from ...

table, vue, snapshot

update

update table | vue

table, vue

Note :

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

procdure est mis ici pour: procdure, fonction ou package

all :
Page 241

Exploitation de laudit

remplace toutes les options d'audit des objets

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 242

5.6 Laudit

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

Exploitation de laudit (suite)

Exploitation de laudit (suite)

Les colonnes des vues daudit

Les colonnes des vues daudit (suite)

Colonne

Description

Colonne
GRANTEE
AUDIT_OPTION

nom de celui qui reoit le privilge


options d'audit positionnes avec AUDIT

SES_ACTIONS

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.

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

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)

OS_USERNAME

Nom au niveau OS de lutilisateur auditer

USERNAME

Nom Oracle de l'utilisateur auditer

USERHOST

Numro de l'instance de connexion du user

TERMINAL

identification du terminal de l'utilisateur

TIMESTAMP

date et heure d'enregistrement de l'action

OWNER

propritaire de l'objet concern par l'action

OBJ_NAME

nom de l'objet concern par l'action

ACTION

code de l'action

ACTION_NAME

nom de l'action

NEW_OWNER

propritaire de l'objet dsign dans la


colonne new_name

NEW_NAME

nouveau nom de l'objet aprs RENAME

OBJ_PRIVILEGE

privilgesobjets affects ou retirs l'objet

SYS_PRIVILEGE

privilges systmes affects ou retirs

ADMIN_OPTION

privilges systmes ou rles donns avec


with ADMIN OPTION

Page 243

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 244

Description

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

5.6 Laudit

Exploitation de laudit (suite)

Exploitation daudit (suite)

Exemple

Exemple (suite)

Problme

Actions effectues par rackham

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

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);

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 ;

Page 245

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 246

5.6 Laudit

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

Exploitation de laudit (suite)

Exploitation de laudit (suite)

Exemple (suite)

Exemple (suite)

Visualisation des options daudit des ordres SQL actives

Visualisation des options daudit objet sur la table tintin.emp

sql>SELECT * FROM dba_stmt_audit_opts ;

sql>SELECT * FROM dba_obj_audit_opts


where owner = TINTIN AND object_name like EMP%;

USER_NAME AUDIT_OPTION

SUCCESS

FAILURE

OWNER OBJECT_ OBJECT_TY ALT AUD COM DEL GRA IND INS LOC ...
NAME

LAMA
RACKHAM

BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS

BY ACCESS
BY ACCESS
BY ACCESS
NOT SET

TINTIN EMP
TINTIN EMPLOYES

CREATE SESSION
CREATE SESSION
ALTER USER
LOCK TABLE

TABLE
VIEW

-/- -/- -/- A/- -/- -/- -/--/- -/- -/- -/- -/- -/-...
-/- -/- -/- -/- -/- -/- -/--/- S/S -/- -/- -/- -/-...

Visualisation des options daudit objet par dfaut


sql>SELECT * FROM all_def_audit_opts;

Visualisation des options actives daudit des privilges

ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE

sql>SELECT * FROM dba_priv_audit_opts ;

S/S

USER_NAME

PRIVILEGE

SUCCESS

Notes :
-/- : Audit non positionn (ni en cas de succs ou d'insuccs)

LAMA
RACKHAM

CREATE SESSION
CREATE SESSION
ALTER USER

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

Page 247

Copyright G. Mopolo-Mok

FAILURE

Administration Oracle 10G

-/- -/-

-/- -/-

S/S -/- -/- S/S -/-

-/-

-/-

-/-

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)

Page 248

Copyright G. Mopolo-Mok

Administration Oracle 10G

5.6 Laudit

5.6 Laudit

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

LOCK
DELETE
CREATE INDEX

57

LOGOFF_
PREAD

LOGOFF_ LOGOFF_
LWRITE DLOCK

NOAUDIT { statement_opt | system_priv }


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

SES_ACTIONS

sql>SELECT username, logoff_time, logoff_lread, logoff_pread,


logoff_lwrite, logoff_dlock
FROM dba_audit_session ;
USERNAME LOGOFF_ LOGOFF_
TIME
LREAD

Syntaxe

Mots cls et paramtres

Listing des lignes d'audit pour l'audit des sessions

LAMA
RACKHAM 11/05/96

Dsactivation de l'audit sur les Ordres SQL et


les privilges systmes

: 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

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

5.6 Laudit

Administration Oracle 10G

5.6 Laudit

Dsactivation de l'audit des objets du schma

Syntaxe
NOAUDIT object_opt [, object_opt] ...
ON {[ schema.]object | DEFAULT}
[ WHENEVER [ NOT ] SUCCESSFUL ]

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

Mots cls et paramtres


object_opt
object
DEFAULT
SUCCESSFUL

Copyright G. Mopolo-Mok

: 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

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)

Page 251

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 252

Copyright G. Mopolo-Mok

Administration Oracle 10G

6 Sauvegarde et restauration

Plan

6.1 Gnralits

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

Composants Oracle pour la sauvegarde et


restauration

Fichiers
de donnes
Fichiers
Redo log

Les fichiers
d'archives

La commande
Recover
commandes OS

Page 255

Les fichiers
de sauvegarde

La commande
Alter database
archivelog
begin backup

Segments
rollback

Copyright G. Mopolo-Mok

Multiplexage
des fichiers
Redo log
et de contrle

Administration Oracle 10G

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

Fichiers de
contrle

Sauvegarde et
Restauration

Administration Oracle 10G

6.2 Sauvegarde en Noarchivelog

6.1 Gnralits

Copyright G. Mopolo-Mok

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

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

Page 256

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.2 Sauvegarde en Noarchivelog

Les tapes de sauvegarde en mode sans


archive

6.2 Sauvegarde en Noarchivelog

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
Fichiers de
donnes
donnes

. Fichiers de contrles
SELECT * FROM v$parameter
WHERE name LIKE 'control_files';

Fichiers de
Fichiers
donnes
Redo log

Fichiers de
Fichiers de
donnes
contrle

utiliser les commandes de lOS aprs arrt


normal de la base

. 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

Page 257

Copyright G. Mopolo-Mok

Administration Oracle 10G

Units de sauvegarde : disque, bandes, ...

Page 258

6.3 Sauvegarde en mode


Archivelog

Hypothses

Nous n'acceptons pas l'arrt total de la base

Administration Oracle 10G

6.3 Sauvegarde en mode


Archivelog

Nous n'acceptons pas de perdre des donnes

Copyright G. Mopolo-Mok

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;

Modes de sauvegarde
Backup complet la cration ou intervalles rguliers
(suivre les mmes tapes qu'en mode noarchivelog)

Etape 2 :
. Mettre le Tablespace X OFFLINE NORMAL
sql>ALTER TABLESPACE X OFFLINE NORMAL ;

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 ...)

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 ;

Page 259

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 260

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.3 Sauvegarde en mode


Archivelog

6.3 Sauvegarde en mode


Archivelog

Backup partiel dune base

2. Backup dun Tablespace (TS) ONLINE en 4 tapes

Sauvegarde du fichier de contrle

1. Sauvegarde du fichier de contrle Base ferme

Etape 1 :

Utiliser les commandes de lOS pour sauvegarder

. Identifier les fichiers appartenant au tablespace X


2. Sauvegarde du fichier de contrle Base Ouverte

sql>SELECT file_name FROM sys.dba_data_files


WHERE tablespace_name = X;

sql>ALTER DATABASE BACKUP CONTROLFILE


TO TRACE ;
# Gnre le texte de la commande de cration du fichier de
# contrle
ou

Etape 2 :
. Indiquer Oracle le dbut de la sauvegarde de X
sql>ALTER TABLESPACE X BEGIN BACKUP ;
Etape 3 :

sql>ALTER DATABASE
BACKUP CONTROLFILE nomfic [REUSE] ;

. Utiliser les commandes de l'OS (cp, tar, dump, ...) pour


sauvegarder effectivement les fichiers sur bande ou disque

# Gnre une copy du fichier de contrle

Etape 4 :
. Informer Oracle de la fin de la sauvegarde du tablespace X

1. Les EXPORTS sont - t - ils ncessaires en mode


ARCHIVELOG

sql>ALTER TABLESPACE X END BACKUP ;

2. Pourquoi est - t - il inutile de sauvegarder les REDO LOG


en mode NOARCHIVELOG

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

Page 262

6.3 Sauvegarde en mode


Archivelog

FichierS1

Tablespace
User

Fichieru1

Le fichier REDO LOG peut contenir des donnes non


valides

Tablespace DATA

Fichierd1

FichieruN

Les fichiers Redo log, les fichiers d'archives, les


fichiers de contrles ou les fichiers de donnes
peuvent tre corrompus ou perdus

FichierdN

Sauvegarde
du fichier de
contrle

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

BASE X

Fichier de
Contrle

Administration Oracle 10G

6.4 Restauration dune Base

Synthse

Tablespace
System

Copyright G. Mopolo-Mok

Sauvegarde du tablespace User

Sauvegarde
du fichierdN

Deux types de recouvrement


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

Fichier
Fichiers
redo
log log
Redo
Page 263

Archivage des
Redo log

Copyright G. Mopolo-Mok

Fichier
Fichiers
redo
log
d'Archives
Administration Oracle 10G

Page 264

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base

6.4 Restauration dune base

Principe de la restauration des donnes

Application de limage avant


(ROLLBACK SEGMENT)

Image
Image
aprs
Image
aprs
aprs

Application de limage aprs

Fichier Redo Log

Fichiers de donnes
(Base incohrente)

Image
Image
aprs
aprs

Restauration dinstance
Survient la suite de l'arrt brutal des process tches
de fond (DBWR, LGWR, SMON, PMON, ...)

Fichier de donnes
(Base cohrente)

est valable aussi bien en mode avec ou sans archive.

Image
Image
aprs
aprs

Oracle ralise automatiquement les tapes suivantes :


application de l'image aprs
application de l'image avant.

Donnes non
commites

Donnes commites
Image
Image
aprs
Image
aprs
aprs

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

Annulation des transactions


non commites

Fichiers d'Archives
si ARCHIVELOG

Page 265

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 266

6.4 Restauration dune base

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!!!!!!!!!!!!!!!

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base

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

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)

6.4 Restauration dune base

La commande RECOVER (suite)

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)
Recouvrement complet base ferme

Mots cls ou paramtres

Description

AUTOMATIC

gnrer automatiquement les noms des


fichiers Redo appliquer

FROM location

indiquer la localisation des archives

DATABASE

recouvrer la base entire (par dfaut)

perte d'un ou plusieurs fichiers de donnes du


Tablespace System

UNTIL CANCEL

recouvrer jusqu'au fichier Redo log le


plus rcent possible

perte d'un fichier de contrle (pas de copie)

UNTIL TIMES date

recouvrer jusqu' la date ~ de la panne

UNTIL CHANGE integer

recouvrer jusqu'aux transactions


consistantes avant le SCN (integer)

CAS OU CELA EST UTILE:

perte dun fichier de donnes contenant un segment


RBS

UNTIL BACKUP CONTROLFILE Utiliser la sauvegarde du fichier de contrle


la place du fichier courant

TABLESPACE tablespace

recouvrer uniquement un tablespace

DATAFILE filename

recouvrer un fichier de donnes

LOGFILE filename
fichier

continuer le recouvrement avec ce

CONTINUE [DEFAULT]

continuer en appliquant les redo


automatiquement

CANCEL

finir la restauration base sur l'annulation

Page 269

Copyright G. Mopolo-Mok

Administration Oracle 10G

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

Page 270

6.4 Restauration dune base

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)

. Recouvrement complet base ferme (suite)


Etapes suivre
1. arrter la base

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)

Recouvrement complet base ouverte, tablespace


OFFLINE
CAS OU CELA EST UTILE :

2. remdier la panne

- les fichiers d'un ou plusieurs tablespaces sont endommags

3. reprendre la dernire sauvegarde et les fichiers d'archives

- les fichiers du tablespace SYSTEM ne sont pas endommags

4. redmarrer la base en mode MOUNT


sql>connect sys as sysdba;
sql >startup MOUNT ;

- les fichiers contenant les RBS ne sont pas endommags

5. Renommer ou rlocaliser les fichiers si ncessaire


sql>ALTER DATABASE RENAME FILE ... TO ...
6. Commencer le RECOUVREMENT
sql>RECOVER AUTOMATIC
DATABASE ...;

Dans quels tats doivent tre les fichiers REDO LOG et


d'ARCHIVES ?

7. Ouvrir normalement la base


sql>ALTER DATABASE OPEN ;

Page 271

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 272

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)
Recouvrement complet base ouverte, tablespace
OFFLINE (suite)

6.4 Restauration dune base

. Recouvrement incomplet
- Le recouvrement incomplet est ncessaire :

Etapes suivre

. en cas de perte des fichiers Redolog


. en cas de suppression accidentelle d'une table
. ...

1. Si la Base nest pas dj ouverte, dmarrer une nouvelle


instance (base monte puis ouverte). Mettre le tablespace ayant
des fichiers endommags OFFLINE.

- Le recouvrement incomplet peut tre bas sur :

sql>connect sys as sysdba


(sql>STARTUP MOUNT puis OPEN ;)
sql>ALTER TABLESPACE nomtablespace OFFLINE ;

. 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

2. Remdier la panne
3. Remplacer les fichiers endommags par leur sauvegarde

. 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

4. Recouvrer les fichiers endommags


sql >RECOVER TABLESPACE
nomtablespace1, ..., nomtablespaceN;
sql>RECOVER DATAFILE nomfichier1, ..., nomfichierN;

. le SCN (UNTIL CHANGE scn) : connaissant un Systme


Change Number donn, on souhaite rcuprer toutes les
transactions consistantes d'avant ce SCN

5. Remettre le ou les tablespaces ONLINE


sql>ALTER DATABASE nomtablespace1, ... ONLINE ;
Page 273

Copyright G. Mopolo-Mok

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)

Administration Oracle 10G

Page 274

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)

Administration Oracle 10G

6.4 Restauration dune base

6.4 Restauration dune base

Copyright G. Mopolo-Mok

Restauration aprs une panne disque : En


mode ARCHIVELOG (suite)

. Recouvrement incomplet (suite)

. Recouvrement incomplet (suite)

Etapes du recouvrement bas sur l'annulation,


le temps et le SCN

Etapes du recouvrement bas sur l'annulation,


le temps et le SCN (suite)

1. Fermer si utile la base avec loption ABORT


sql >connect sys as sysdba ;
sql >shutdown abort ;

7. Rlocaliser ou renommer si utile les fichiers endommags

2. Sauvegarder tous les fichiers de la base (donnes, contrles,


paramtres, ...)

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;

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

8. Mettre les fichiers rparer ONLINE si recouvrement bas sur


le temps ou le SCN

6. sous sql, dmarrer une instance (base monte)

Note : si l'on utilise la sauvegarde du fichier de contrle,


prciser l'option USING BACKUP ...

( suivre)
Page 275

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 276

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base

6.4 Restauration dune base

Rcapitulatif des pertes et actions (1/2)


Mode d'archivage

Type de fichiers endommags


Fichiers Fichiers Fichiers
Fichiers de
de
redo log redo log contrles
donnes
archives

Archivelog

X
X
X
X
X

Page 277

X
X

Noarchivelog

Rcapitulatif des pertes et actions (2/2)

recouvrement
complet

partir d' une sauvegarde complte

Recouvrer le
fichier manquant

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

recouvrer le fihchier
de contrle

Exemples de problmes et restauration

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 ...

Page 278

6.4 Restauration dune base

sans effet

Administration Oracle 10G

sans effet

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

Copyright G. Mopolo-Mok

Mode d'archivage

Type de fichiers endommags


Fichiers Fichiers Fichiers
Fichiers de
de
redo log redo log contrles
donnes
archivs

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

Noarchivelog
partir d' une sauvegarde complte
sans effet
partir d' une sauvegarde complte

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

Recouvrer le fichier
de contrle puis faire un recouvrement
incomplet

Copyright G. Mopolo-Mok

sans effet

Administration Oracle 10G

6.4 Restauration dune base

Exemples de problmes et restauration(suite)

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 ;

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

Page 280

Copyright G. Mopolo-Mok

Administration Oracle 10G

6.4 Restauration dune base

Exemples de problmes et restauration(suite)

Exemple 3 : perte dun fichier redo log : plusieurs solutions


sont possibles

6.4 Restauration dune base

Exemples de problmes et restauration(suite)

Exemple 4 : un utilisateur a supprim accidentellement ses


tables (mode avec Archive)

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

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

Exemples de problmes et restauration(suite)

Exemple 5 : un tablespace a t supprim accidentellement

Plan
7. Outils d'administrations et les NLS
7.1 Export/Import

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

3. Exporter les donnes du tablespace supprimes accidentellement


$ exp system/manager ...

7.1.1 Gnralits
7.1.2 Export
7.1.3 Import
7.1.4 Les tablespaces transportables

7.2 Sqlloader
7.3 Sqlplus
7.4 Les NLS
7.5 Oracle Entreprise Manager(OEM)

sql>RECOVER DATABASE UNTIL CHANGE scn ;

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

4. Supprimer la base temporaire


$ rm ... /* des fichiers de donnes, contrles et redos*/

7.5.4 Les composants OEM

5. Revenir sur la base courante et importer les donnes exportes


$ imp system/manager...

7.5.5 Utilisation de OEM

Page 283

Copyright G. Mopolo-Mok

Administration Oracle 10G

Administration Oracle 10G

7. Les outils dadministration et les


NLS

6.4 Restauration dune base

Copyright G. Mopolo-Mok

7.6.4.4 Le Performance Pack OEM

Page 284

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1 Export/Import

7.1.1 Gnralits

Plan

7.1.1 Gnralits
7.1.2 Export
7.1.3 Import

Pourquoi Exporter et importer ?

Tches ralisables avec Export/Import

Page 285

Copyright G. Mopolo-Mok

Administration Oracle 10G

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

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 286

7.1.1 Gnralits

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export

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

BASE DE
DONNEES
ORACLE

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

CIBLE

SOURCE
Import

Export

3. La base entire

Export de toute la base sauf les objets de


lutilisateur SYS dOracle. Il est utile davoir le
privilge EXP_FULL_DATABASE.

FICHIERS
OS

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

Pourquoi est - t - il interdit de travailler SYS ?


Pourquoi est - t - il si fondamental davoir le privilge
EXPORT_FULL_DATABASE ?

Page 288

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export

7.1.2 Export

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

Page 289

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

Copyright G. Mopolo-Mok

Utilisation de lutilitaire EXPORT

Mode FULL

s'assurer que le script catview.sql a t excut

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

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

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

7.1.2 Export

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export

Les paramtres d'exports

Les paramtres d'exports (suite)

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)

Aide en ligne sur les paramtres


$ exp help=y

Nom
paramtre

Description

Valeur par Utilis en mode


dfaut
interactif ?

userid

username/password

none

buffer

rows_in_array*max_row_size

4096

file

nom du fichier en sortie

expdat.dmp

compress

compresser les extents en une

grants

exporter aussi les privilges

indexes

exporter les index

rows

exporter les lignes

constraints

exporter les contraintes

log

fichier log

none

full

exporter toute la base

non

owner

utilisateur(s) exporter

undefined

tables

tables exporter

undefined

record lenght

taille(bytes) de l'enreg. du fichier OS dpendant non

inctype

incrmental, cumulatif, complet ? none

non

record

utile si inctype est mis

non

parfile

fichier des paramtres

none

non

consistent

lecture consistante (read only mis) N

non

statistics

type de stat gnrer en import

estimate

non

help

aide

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

7.1.2 Export

Les paramtres d'exports (suite)

Nom
paramtre

Description

Valeur par Utilis en mode


dfaut
interactif ?

Direct

Chemin direct

feedkack

affiche la progression toute les


N lignes

Consistent

cohrence entre les tables

filesize

taille max de chaque fichier

resumables

suspension en cas derreurs


despace

Export en mode interactif et commande

. Export en mode interactif (options compltes)


$ exp
User name :
password :
Enter array fetch buffer size : 4096 >
Export file : expdat.dmp >

E (ntire database) U(ser), T(ables) : U>

Transport_tablespace
impport des mtadonnes des TS N

Export grants (Y/N) : Y>

Tablespace

TS transporter

Export table data (Y/N) : Y>

Datafile

fichier transporter

Compress extents (Y/N) :Y>


Schema to export : (return to quit)>

TTS_OWNER Utilisateurs propritaires des


donnes

table to be exported : (return to quit)>


. Export

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

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


Page 293

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 294

7.1.2 Export

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export

Export en mode interactif et commande (suite)

Export en mode interactif et commande (suite)

Exemple 1 : export de la table emp de lutilisateur tintin

Exemple 2 : tous les objets de lutilisateur tintin

a) en mode commande

a) en mode commande

$ exp tintin/milou file=tintin_emp.dmp tables=emp

$ exp tintin/milou file=tintin.dmp

b) en mode interactif

b) en mode interactif

$ exp tintin/milou

$ exp tintin/milou

Enter array fetch buffer size : 4096 >

Enter array fetch buffer size : 4096 >

Export file : expdat.dmp >tintin_emp.dmp

Export file : expdat.dmp >tintin.dmp

U(ser), T(ables) : U>T

U(ser), T(ables) : U>U

Export grants (Y/N) : Y>

Export grants (Y/N) : Y>

Export table data (Y/N) : Y>

Export table data (Y/N) : Y>

Compress extents (Y/N) :Y>

Compress extents (Y/N) :Y>

table to be exported : (return to quit)>emp

Page 295

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 296

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export

7.1.2 Export

Export en mode interactif et commande (suite)

Export en mode interactif et commande (suite)

Exemple 3 : export des objets dun utilisateur par un autre

Exemple 4 : export de la la base entire

a) en mode commande

a) en mode commande

$ exp system/manager owner=rackham file=rackham.dmp

$ exp system/manager full=y

b) en mode interactif

b) en mode interactif

$ exp system/manager

$ exp system/manager

Enter array fetch buffer size : 4096 >

Enter array fetch buffer size : 4096 >10000

Export file : expdat.dmp >rackham.dmp

Export file : expdat.dmp >cours.dmp

E(ntire database) U(ser), T(ables) : U>U

E(ntire database) U(ser), T(ables) : U>E

Export grants (Y/N) : Y>

Export grants (Y/N) : Y>

Export table data (Y/N) : Y>

Export table data (Y/N) : Y>

Compress extents (Y/N) :Y>

Compress extents (Y/N) :Y>

Schema to export: (return to quit)>rackham

Page 297

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 298

7.1.2 Export

les paramtres sont passs dans un fichier de


paramtres

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

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

Page 299

Administration Oracle 10G

7.1.2 Export

Export en mode batch

Activation

Copyright G. Mopolo-Mok

trois stratgie de backup incrmental


Type de stratgie

Description

Backup incrmental

Backup uniquement des objets modifis depuis le


dernier backup Incrmental ou Cumulatif ou
Complet.

Backup cumulatif

Backup uniquement des objets modifis depuis le


dernier backup Cumulatif ou Complet

Backup complet

Backup de tous les objets.

$ exp parfile=parfic.par

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 300

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.2 Export

7.1.2 Import

Export incrmental, cumulatif et complet (suite)

Que peut - t - on importer ?

1. tables

Exemple dexport incrmental

Type dexport Objet prsent

import dune ou N tables vers un schma. Le DBA peut


importer les tables de N schma

objet export

1er export
Incrmental

table1, index1,
table2 , table3, table4

table1, table2

2me export
Incrmental

table1, index1
table2 , table3, table4
table5, table6

table1, table5, table6

1er Export
Cumulatif

table1, index1
table2 , table3, table4
table5, table6

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

1er Export
Complet

table1, index1
table2 , table3, table4
table5, table6

table1, index1
table2 , table3, table4
table5, table6

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

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

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

Page 303

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.3 Import

7.1.3 Import

Copyright G. Mopolo-Mok

Utilisation de lImport

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

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

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

7.1.3 Import

7.1.3 Import

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)

Aide en ligne sur les paramtres


$ imp help=y

Page 305

Copyright G. Mopolo-Mok

Administration Oracle 10G

Import en mode interactif et commande

Nom
paramtre

Description

Valeur par Utilis en mode


dfaut
interactif ?

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

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

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

Page 306

7.1.3 Import

Nom
paramtre

Description

Valeur par Utilis en mode


dfaut
interactif ?

Destroy

craser le fichier de donnes

Indexfile

Ecrire les infos de tables/index


dans le fichier indiqu

Administration Oracle 10G

Import en mode interactif et commande (suite)

. Import en mode interactif (options compltes)


$ imp

List contents of import file only (Y/N) : N>

Ignore create errors due to object existence (Y/N) : N>


Import grants (Y/N) : Y>

statistics

importer les statistiques

resumables

suspension en cas derreurs


despace

Compile

Compiler les procdures

Import table data (Y/N) : Y>


Import entire export file (Y/N) : Y>
Si N (non) alors renseigner :
Username :
tablename:

Transport_tablespace
impport des mtadonnes des TS N
fichier transporter

Copyright G. Mopolo-Mok

Enter array fetch buffer size : 10240 >

taille max de chaque fichier vidage

Datafile

OS dpendant
Y
oui
N
oui
non
none
none
oui

Import file : expdat.dmp >

filesize

TS transporter

oui

User name :

toid_novalidate sauter la validation des id

Tablespace

oui
oui

password :

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

oui

7.1.3 Import

Les paramtres dimports (suite)

feedkack

oui

. Import

en mode commande

$ imp [username/passwd] [param1 = value 1] ... [paramN = value N]

TTS_OWNER Utilisateurs propritaires des


donnes

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

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


Page 307

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 308

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.3 Import

7.1.3 Import

Import en mode interactif et commande (suite)

les paramtres sont passs dans un fichier de


paramtres

Exemple 1 : Import de la table emp de lutilisateur tintin par


ladministrateur

permet de s'affranchir de la limite de la taille de la


ligne de commande

a) en mode commande
$ imp system/manager file=tintin.dmp
fromuser=tintin tables="(emp)"

permet de faciliter l'automatisation de l'import

b) en mode interactif

Syntaxe admise dans le fichier des paramtres


MOT CLE= valeur
MOT CLE= (valeur)
MOT CLE=(Valeur 1, Valeur 2, ..., Valeur N)

$ imp system/manager
Import file : tintin.dmp >
Enter array fetch buffer size : 10240 >
List contents of import file only (Y/N) : N>

Exemple de fichier de paramtres PARIMP.PAR


FILE=tintin.dmp
GRANT=Y
INDEX=y
FROMUSER=tintin

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 : .
Page 309

Copyright G. Mopolo-Mok

Import en mode batch

Administration Oracle 10G

tables="(emp)"

Activation
$ imp system/manager parfile=parimp.par
Page 310

7.1.3 Import

Gnralits

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

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

2. importer le plus rcent export COMPLET


3. importer tous les exports CUMULATIFS aprs le
dernier export COMPLET

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)
Copyright G. Mopolo-Mok

Administration Oracle 10G

7.1.3 Import

Import incrmental, cumulatif ou complet

Page 311

Copyright G. Mopolo-Mok

Administration Oracle 10G

4. importer tous les exports INCREMENTAUX aprs le


dernier export CUMULATIF

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

7.1.4 Les tablespaces


transportables

Gnralits

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.

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

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

Avant de dplacer un tablespace, il doit tre mis


READONLY puis le schma des donnes contenus
dans le tablespace doit tre export.

Page 313

Avantages des tablespaces transportables

Page 314

7.1.4 Les tablespaces


transportables

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader

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;

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;

Plan

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

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

7.2 Sqlloader

Gnralits

permet de charger des donnes de format ASCII,


EBCDIC, DBASE, EXCEL, .. dans une base Oracle

Fonctionnement de SQLLOADER

Fichier de donnes
(contient les enregistrements
charger)

peut traiter diffrents formats d'enregistrements


(enregistrements champs fixes et/ou variables
encapsuls ou non avec des dlimiteurs spciaux)

Fichier de contrles
(contient la description
du chargement)

SQLLOADER
(extraction des champs)

permet partir de plusieurs enregistrements physiques


de crer une ligne logique dans la base

rejet

accept

permet partir d'un enregistrement physique de crer


plusieurs lignes logiques dans la base

SQLLOADER
(traitement de la clause
WHEN)

dtruit

Fichier BAD
(mauvais enregistrements)

Slectionn

permet de charger des donnes depuis un disque ou


une bande
permet d'acclrer le chargement de donnes grce au
chemin DIRECT

Fichier DISCARD
(enregistrements
dtruits :
clause WHEN)

SGBD Oracle

Rejet

Insr
Base de donnes Orcale

Fournit des rapports prcis de chargement


Page 317

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 318

Copyright G. Mopolo-Mok

7.2 Sqlloader

Administration Oracle 10G

7.2 Sqlloader

Le fichier de donnes

Le fichier de donnes contient les enregistrements


charger

Le fichier de donnes (suite)

Exemple 1:

Fichier avec des enregistrements fixes


champ 2
INTEGER

champ 1 CHAR de 7

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"

T I

R A

M A

champ 2
INTEGER

K
L

Administration Oracle 10G

champ 1
CHAR

R A

Copyright G. Mopolo-Mok

Exemple 2: Fichier avec des enregistrements variables

T I

Page 319

Page 320

H
A

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader

7.2 Sqlloader

Le fichier de contrle

Ce fichier contient les commandes de description des


enregistrements : C'EST LE LDD DE SQLLOADER

Le fichier LOG
Ce fichier contient les informations suivantes :
1) Informations d'en-tte (version Sqlloader, la date, ...)

Ce fichier peut contenir aussi les donnes

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

Il est possible de rcuprer conditionnellement des


enregistrements CLAUSE WHEN
Notes : Nous reviendrons plus loins sur le LDD de
SQLLOADER

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

7.2 Sqlloader

Le fichier Discard

son format est celui du fichier de donnes


son extension est nomfic.dis

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

La commande SQLLOADER

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

Tableau des paramtres


Mot cl

description

valeur / dfaut

BAD
BINDSIZE
CONTROL
DATA
DIRECT
DISCARD
DISCARDMAX
ERRORS
FILE
LOAD

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

nomcontrolfile.BAD
os dpendant
ctl.if
nomcontrolefile.dat

LOG
PARFILE
PARALLEL
ROWS
SILENT
SKIP
USERID
Page 323

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader

Ce fichier reoit les enregistrements valides mais ne


vrifiant pas la condition derrire la clause WHEN

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 324

Copyright G. Mopolo-Mok

nomcontrolfile.date

tous
nomcontrolfile.log
aucun

Administration Oracle 10G

7.2 Sqlloader

7.2 Sqlloader

La commande SQLLOADER (suite)

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

Copyright G. Mopolo-Mok

Le LDD de SQLLOADER

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] } [, ...] )

Contenu de utlexple1.par
userid= system/manager
control=utlexple1.ctl
log=utlexple1.log
bad=utlexple1.bad
silent=(HEADER, ERRORS, DISCARDS)
errors=200

Page 325

[INTO TABLE ...]


[BEGINDATA]
donnes
Administration Oracle 10G

Page 326

7.2 Sqlloader

Description

OPTIONS (options) positionne des options de sqlloader (load, skip, errors,


rows, binsize, silent)
INFILE | INDDN

STREAM

Administration Oracle 10G

7.2 Sqlloader

Le LDD de SQLLOADER (suite)

Mot cl

Copyright G. Mopolo-Mok

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

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)

RECORD

sqlloader utilise le systme de gestion de fichiers de


l'OS hte

FIXED

sqlloader utilise un enreg. de taille fixe

APPEND | REPLACE | INSERT


mode d'insertion d'enregistrements dans la base
RECLEN n

longueur max d'un enregistrement logique

BEGIN DATA
12,RESEARCH,"SARATOGA"
10,"ACCOUNTING",CLEVELAND
11,"ART",SALEM
13,FINANCE,"BOSTON"
21,"SALES",PHILA.
22,"SALES",ROCHESTER
42,"INTL","SAN FRAN"

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

7.2 Sqlloader

Le LDD de SQLLOADER (suite)

Le LDD de SQLLOADER (suite)

Exemple (suite)

Exemple (suite)

Exemple 2 :

Exemple 3 :

Fichier de contrle : ulcase2.ctl

Fichier de contrle : ulcase3.ctl

LOAD DATA

-- Variable length, delimited and enclosed data format

INFILE ulcase2.dat

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) )

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

Page 329

MANAGER
PRESIDENT
CLERK
MANAGER
SALESMAN
SALESMAN
ANALYST

Copyright G. Mopolo-Mok

7839 2572.50
5500.00
7782 920.00
7839 3123.75
7698 1600.00
7698 1312.50
7566 3450.00

300.00
1400.00

10
10
10
20
30
30
20

Administration Oracle 10G

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

7.2 Sqlloader

Copyright G. Mopolo-Mok

7.2 Sqlloader

Le LDD de SQLLOADER (suite)

Le LDD de SQLLOADER (suite)

Exemple (suite)

Exemple (suite)

Exemple 4 :

Exemple 5:

Fichier de contrle : ulcase4.ctl

Fichier de contrle : ulcase5.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)

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)

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

Page 331

Copyright G. Mopolo-Mok

Administration Oracle 10G

Administration Oracle 10G

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

7.2 Sqlloader

7.2 Sqlloader

Le LDD de SQLLOADER (suite)

Exemple (suite)

deux modes de chargement de donnes : le chemin


tradionnel et le chemin direct

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

Page 333

Sqlloader chemin traditionnel et direct

10
10
20
10
20
20
10
xx
10
11
12
25

9999
9999
2893
9999
4555
5634
4532
4555
9999
3452
9940
5532

Copyright G. Mopolo-Mok

101
777
425
321
236
236
102
294
40
665
132
200

102
888
abc
55
456
456
321
40

103
999
102
40

133

456

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

le chemin direct

40
14

Administration Oracle 10G

courcircuite le moteur SQL


acclre les chargements dans certains cas.

Page 334

7.2 Sqlloader

Administration Oracle 10G

7.2 Sqlloader

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

chemin traditionnel

chemin direct

traitement des ordres sql

allocation de
nouveaux extents

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

recherche et crit dans les


blocs partiellement pleins

si le nombre de lignes charger dans une table


indexe (index grand) est faible

buffer cache
Lecture des blocs
de donnes

Page 335

Copyright G. Mopolo-Mok

Copyright G. Mopolo-Mok

si l'on veut appliquer des fonctions SQL


criture des blocs
de donnes

Administration Oracle 10G

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


chargement

Page 336

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.2 Sqlloader

7.2 Sqlloader

Sqlloader chemin traditionnel et direct (suite)

Sqlloader chemin traditionnel et direct (suite)

Quand utiliser le chemin Direct ?

Avantages du chemin direct

en cas de besoin de chargement rapide d'une grande


quantit de donnes

pas d'utilisation de blocs partiellement pleins


pas de gnration d'Ordre SQL

en cas de besoin de paralllisation du chargement de


donnes

pas d'accs au cache d'Oracle

en cas de besoin de chargement des donnes dans une


police de caractres non supportes pendant la session

paralllisation des I/O possible


tri rapide

Activation du chemin direct

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

$ sqlldr system/manager DIRECT=Y ...

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

7.3 Sqlplus

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.5 Sqlplus

Gnralits

Commandes de Sqlplus (sql)

Commande

Description

Outil d'administration Graphique

ARCHIVELOG

Dmarrage, arrt ou affichage des informations sur l'archivage des


Redo Log

supporte les principaux GUI du march

CONNECT

Connexion une base

DESCRIBE

Description d'une table, d'une vue, d'une procdure

DISCONNECT

dconnexion une base

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

Serveur manager fonctionne en mode graphique


(srvmgr) ou ligne (srvmgrl)

EXECUTE

Excution d'une commande PL/SQL limite une ligne

EXIT

Quitter Sqlplus

HELP

Afficher les informations d'aide

HOST

Excuter une commande de l'OS sans quitter Sqlplus

MONITOR

Observer les statistiques sur : FILE, PROCESS, I/O, LATCHES,


LOCKS, ROLLBACK, SESSIONS, STATISTICS, TABLE (non
valable en mode ligne)

PRINT

affichage du contenu d'une variable

RECOVER

restauration d'un fichier, d'un Tablespace ou d'un Base de donnes

REMARK
SET

Page 339

Copyright G. Mopolo-Mok

Administration Oracle 10G

Indique une ligne de commentaire


Modification des paramtres de la session courante de sql

SHOW

Affichage des paramtres de la session courante de sql

SHUTDOWN

Arrt de l'instance courante

SPOOL

activation/dsactivation de la rdirection des rsultats vers un fichier

STARTUP

dmarrage d'une base base (MOUNT , OPEN)

VARIABLE

dfinition d'une variable utilisable dans un bloc PL/SQL ou lors d'un


EXECUTE ou PRINT

Page 340

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS

7.4 Les NLS

Plan

Gnralits

Gnralits
Les NLS permettent de mettre en oeuvre une ou
plusieurs applications dans des langues diffrentes

Activation des NLS au niveau de l'OS

L'entreprise et le march se mondialisent

Activation des NLS au niveau d'une instance

certains pays pratiquent plusieurs langues

Modification des NLS au niveau d'une session

les NLS permettent de prendre en compte les


particularits d'un pays (monnaie, date, ...)

Modification des NLS au niveau d'une fonction SQL

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

7.4 Les NLS

Administration Oracle 10G

7.4 Les NLS

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

Positionnement du paramtre NLS_LANG


NLS_LANG=langue_pays.jeux 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 :

Exemple

la langue utilise pour les messages du serveur

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

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, ...

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

Page 343

Copyright G. Mopolo-Mok

Copyright G. Mopolo-Mok

Administration Oracle 10G

Exemple
NLS_LANGUAGE=FRENCH
Notes:
Page 344

a) la valeur de ce paramtre est fixe dans init.ora


b) la valeur par dfaut est AMERICAN

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS

7.4 Les NLS

Activation des NLS au niveau dune instance


(suite)

Le paramtre d'initialisation NLS_TERRITORY (


dfinir dans init.ora) permet de dfinir :

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, ...

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.

Les paramtres suivants ( fixer dans init.ora) :

Exemple
NLS_LANGUAGE=FRANCE
format date
caractre dcimal
sparateur de millier
Notes:

: JJ/MM/AA
:,
:.

NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_NUMERIC_CHARACTERS
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_SORT
permettent d'agir explicitement.

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 345

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 346

7.4 Les NLS

Activation des NLS au niveau dune session


Les paramtres d'initialisation :

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)

rend le caractre dcimal

G (Groupe)

rend le sparateur de milliers

L(monnaie locale) rend le symbole de monnaie local

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 ;

NLS_ISO_CUYRRENCY=FRANCE

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

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

rend le symbole de monnaie ISO

Exemple

Page 347

Administration Oracle 10G

7.4 Les NLS

Format des dates et des Nombres

C(monnaie ISO)

Copyright G. Mopolo-Mok

=> FF3.234,44

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 348

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.4 Les NLS

7.4 Les NLS

Activation des NLS au niveau dune session


(suite)

Exemple dordre SQL exploitant les NLS

Modification des NLS au niveau dune


fonction SQL
Les paramtres pouvant tre modifis au niveau
d'une fonction SQL pour une requte sont :

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 ;

NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_NUMERIC_CHARACTERS
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_SORT

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

7.4 Les NLS

Tableau des paramtres et les fonctions pouvant


agir dessus
TO_DATE :

NLS_DATE_LANGUAGE

TO_NUMBER :

NLS_NUMERIC_CHARACTERS,
NLS_CURRENCY,
NLS_ISO_CURRENCY

TO_CHAR :

NLS_DATE_LANGUAGE
NLS_NUMERIC_CHARACTERS,
NLS_CURRENCY,
NLS_ISO_CURRENCY
NLS_SORT

NLS_LOWER :

NLS_SORT

NLS_INITCAP :

NLS_SORT

NLSSORT :

NLS_SORT

Administration Oracle 10G

7.4 Les NLS

Modification des NLS au niveau dune


fonction SQL(suite)

NLS_UPPER :

Copyright G. Mopolo-Mok

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);

Page 351

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 352

Copyright G. Mopolo-Mok

Administration Oracle 10G

7.5. Oracle Entreprise


Manager(OEM)

8. Loption procdurale

OEM

Outil dadministration graphique doracle


Voir Annexe

Page 353

Copyright G. Mopolo-Mok

Administration Oracle 10G

PLAN

Page 354

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

Administration Oracle 10G

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

Page 355

Copyright G. Mopolo-Mok

8.2 Procdures et fonctions

8.1 Gnralits

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

une procdure ou une fonction comporte deux


parties cres en mme temps :
la partie spcification (l'entte)
la partie implmentation (le corps)

Page 356

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.2 Procdures et fonctions


Appel de procdures et fonctions depuis un
applicatif

Application base
de donnes

8.2 Procdures et fonctions

plus de scurit : il nest plus utile de donner des droits


aux utilisateurs sur les objets de base manipuls par les
procdures (tables, vues, ...)

Serveur Oracle

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

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

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

Economie despace mmoire : une seule copie en SGA


mais des excutions par plusieurs applications
possibles

...
code du programme
....
creer_emp(...);
...
code du programme
...
liste_emp(...);
...
Page 357

Copyright G. Mopolo-Mok

Avantages des procdures et fonctions


stockes dans la base

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

Administration Oracle 10G

une plus grande productivit :


volutivit : la modification du corps d'une procdure
n'implique pas celle des applications qui l'appelle
centralisation des modifications

Page 358

8.2 Procdures et fonctions

Cration de procdures et de fonctions


privilge requis : CREATE PROCEDURE ou
CREATE ANY PROCEDURE

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

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.2 Procdures et fonctions

Cration de procdures et de fonctions (suite)

Exemple de cration de procdure


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 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;

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

Modification et rcompilation de procdures


et fonctions

8.2 Procdures et fonctions

rcompilation :En cas dvolution des objets du


schma (tables, ...) manipuls dans une procdure ou
une fonction

Suppression dune procdure ou d'une


fonction
privilge requis DROP PROCEDURE ou DROP ANY
PROCEDURE
Syntaxe

privilge requis : ALTER PROCEDURE ou ALTER


ANY PROCEDURE

DROP FUNCTION | PROCEDURE


[schema.]nomproc;

Syntaxe
ALTER { FUNCTION | PROCEDURE }
[schema.]nom COMPILE ;
Mots cls ou
paramtres
nom
schema
COMPILE

Exemple

Description

DROP PROCEDURE tintin.nouveau_sal ;

nom de la procdure ou fonction


propritaire de l'objet
rcompiler l'objet en cas d'volution
des objets rfrencs

Exemple
ALTER FUNCTION emp_info COMPILE;

Page 361

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 362

8.3 Packages

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages

Gnralits

Gnralits (suite)

Reprsentation schmatique
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

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

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.

Nom du package : Nom_pack

Package spcification
nom_var1 type_var 1 ;
nom_var2 type_var2 ;
nom_proc1(...) ;
nom_proc2(...);
nom_fonct1(...);

Package body

nom_proc1(...)
BEGIN
nom_var1 := nom_var_2;
...
END
nom_proc2(...)
BEGIN
nom_proc1(...);
...
END
nom_fonct1(...)
BEGIN
...
END

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

8.3 Packages

Cration d'un Package

La cration d'un package consiste crer la


spcification puis le corps du package
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 ...

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

Description

schma

Nom du schma auquel le package


appartient
Nom du package dans le schma

Mots cls ou paramtres

Description

schma

Nom du schma auquel le package


appartient
Nom du package dans le schma

nom_package

dclaration de variables, fonctions,


procdures, ... globales

Note : Les noms utiliss dans la partie spcification doivent tre les
mmes que dans la partie implmentation.

nom_package
spcification PL/SQL
Page 365

Copyright G. Mopolo-Mok

Administration Oracle 10G

corps PL/SQL

Page 366

Cration

Cration d'un package (suite)

Exemples de cration de la partie spcification


CREATE OR REPLACE
IS

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages

8.3 Packages

dclaration de variables, ..., corps


fonctions, des procdures, ...

PACKAGE tintin.gestion_employes

PROCEDURE pnouveau_sal (empid IN NUMBER, taux IN NUMBER);


FUNCTION pemp_info(empid IN number) RETURN emp%ROWTYPE;

END gestion_employes ;

d'un package (suite)

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
;

END gestion_employes;

Page 367

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 368

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages

8.3 Packages

Avantages des packages

Excution d'une procdure


Etapes

Encapsulation et modularit : le package se comporte


comme une bote noire

1. Vrifier les droits de l'utilisateur (privilge objet


EXECUTE)

Possibilit de cacher des informations

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 ?

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, ...)

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

8.3 Packages

Listes des vues utiles

Informations sur les packages et les fonctions


(suite)

Exemple 2 : Vue USER_ERRORS

. ALL_ERRORS, USER_ERRORS, DBA_ERRORS


. ALL_SOURCE, USER_SOURCE , DBA_SOURCE
. USER_OBJECT_SIZE, DBA_OBJECT_SIZE

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

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';

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Packages

Informations sur les packages et les fonctions

Page 371

Copyright G. Mopolo-Mok

Administration Oracle 10G

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';

Page 372

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.3 Les packages

8.3 Les packages

Packages fournis par Oracle et utilisables la


place de certains ordres SQL

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

Packages additionnels fournis par Oracle

Nom du
package

Description

Procdures

dbms_alert

Gestion asynchrone des


alertes des events de la BD

register, remove, signal,


waitany, waitone, set_defaults

dbms_describe

permet de dcrire les arguments


des procdures stockes

describe_procedure

dbms_job

permet de grer la soumission des


job

submit, remove, change, what,


next_date, sys as sysdba, broken,

run

Package dbms_ddl : Analyse et compilation des objets du schma


Procdures : alter_compile, analyze_object
Package dbms_transaction : Gestion des transactions

dbms_lock

Permet d'utiliser les mcanismes de allocate_unique, request,


verrouillage
convert, release, sleep

dbms_output

Permet d'utiliser les mcanismes de allocate_unique, request,


verrouillage
convert, release, sleep

dbms_pipe

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

dbms_shared_
pool

permet de conserver des objets


dans shared pool area

sizes, keep, unkeep,


aborted_request_threshold

dbms_application_info

permet de grer les infos d'une


application des fins de performance ou d'audit

set_module, set_action,
set_client_info, read_module
read_client_info

dbms_system

permet d'activer des utilitaires systmes tel tracer des requtes

set_sql_trace_in_session

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

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

Page 373

Copyright G. Mopolo-Mok

Administration Oracle 10G

Page 374

Packages additionnels fournis par Oracle (suite)

Nom du
package

Description

dbms_space

fourni les infos sur lespace des segments non accessibles via les vues

dbms_sql

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

dbms_refresh

permet de grer des groupes de


snapshot

(voir dbmssnap.sql)

dbms_snapshot

permet de rafraichir des snapshot


non membre d'un groupe

(voir dbmssnap.sql)

Procdures

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

Application cliente

dbms_defer,
permet construire et administrer des
dbms_defer_sys, appels de procdures distantes
dbms_defer_query

(voir dbmdefr.sql)

UPDATE
TABLEX ...

dbms_repcat

(voir dbmsrepc.sql)

INSERT INTO
TABLEX ...

permet d'utilier les mcanismes de


rplication statique

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

8.4 Les triggers Base de donnes

8.3 Les packages

Copyright G. Mopolo-Mok

(voir dbmsrepc.sql)

Administration Oracle 10G

DELETE FROM
TABLEX ...

Page 376

Copyright G. Mopolo-Mok

Base de donnes Oracle


TABLEX

Trigger de
MAJ
Trigger
dinsertion
Trigger
de suppression

Administration Oracle 10G

8.4 Les triggers Base de donnes

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

le moment de son dclenchement (avant le dbut des


traitements PRE-CONDITION ou la fin des
traitements POST-CONDITION)
BEFORE
AFTER

BEFORE

UPDATE

FOR EACH ROW

INSERT
AFTER

DELETE

Statement Level

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

8.4 Les triggers Base de donnes

Administration Oracle 10G

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

Mots cls
ou paramtres

Description

OR REPLACE
schma
trigger
BEFORE
AFTER
Delete, update, insert

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

on schema.table
FOR EACH ROW
WHEN
PL/SQL BLOCK
Page 378

8.4 Les triggers Base de donnes

Cration d'un trigger (suite)

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

Administration Oracle 10G

8.4 Les triggers Base de donnes

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

Copyright G. Mopolo-Mok

Cration d'un trigger BD(suite)

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;
/

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

Page 380

Copyright G. Mopolo-Mok

Administration Oracle 10G

8.4 Les triggers Base de donnes

Cration d'un trigger BD(suite)

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.

8.4 Les triggers Base de donnes

Etapes
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)

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);

Excution d'un trigger BD

3. Excuter le trigger
Notes
a) un trigger doit avoir moins de 60 lignes
b) utiliser les procdures pour tendre la taille dun trigger

END IF;

c) pour un trigger ligne avec la clause WHEN, ce dernier ne sera


excut que si la clause WHEN est vrife

END;

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

8.4 Les triggers Base de donnes

Modification dun trigger BD

Administration Oracle 10G

8.4 Les triggers Base de donnes

Domaines dapplications

Modifier un trigger consiste l'activer, dsactiver ou


rcompiler (privilge requis : ALTER TRIGGER)

fournir des mcanismes sophistiqus d'audit

Syntaxe
ALTER TRIGGER [schema.]trigger
{ENABLE | DISABLE | COMPILE}

renforcer les contraintes dintgrit non supportes


par Oracle en natif

Exemple
sql> ALTER TRIGGER updateset COMPILE ;
sql> ALTER TRIGGER updateset DISABLE ;

Copyright G. Mopolo-Mok

Suppression dun trigger

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

Privilge requis : CREATE TRIGGER ou DROP


ANY TRIGGER

assurer la rplication synchrone distance de tables

Syntaxe: DROP TRIGGER [schema.]trigger ;

propager des actions sur dautres tables en fonction


des vnements survenus

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

Domaines dapplications (suite)

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

8.4 Les triggers Base de donnes

Visualisation des informations sur les triggers


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

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

TRIGGERING_EVENT

TABLE_NAME

AFTER EACH ROW UPDATE OR DELETE

DEPT

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

Vous aimerez peut-être aussi