Professional Documents
Culture Documents
1. Introduction
1.1 Objectifs du cours 1.2 Les tches de l'administrateur 1.3 L'offre Oracle 1.4 Oracle 10G Prsentation Gnrale 2.1 Architecture Gnrale 2.2 La notion d'instance 2.3 Structure de la mmoire d'Oracle 2.4 La SGA 2.5 La PGA 2.6 La Zone de tri 2.7 Diffrentes configurations d'Oracle 2.8 Les process autour d'Oracle 2.9 Les process utilisateurs 2.10 Les Processus Serveurs 2.11 Les Process tches de fond 2.12 Autres process 2.13 Mcanismes de lecture et criture 2.14 Mcanisme de validation et invalidation
2. Architecture dOracle
Page
Copyright G. Mopolo-Mok
Page
Copyright G. Mopolo-Mok
Plan Gnral
I
Plan Gnral
4.2 Structure logique d'une Base de donnes Oracle
I 4.2.1 Les Tablespaces 4.2.2 Les Segments et leurs composants 4.2.3 Les Segments de donnes de type table 4.2.4 Les Segments de donnes de type cluster 4.2.5 Les Segments d'index 4.2.6 Les Segments temporaires 4.2.7 Les Segments rollback
6 Sauvegarde et restauration
6.1 Gnralits 6.2 Sauvegarde en Noarchivelog
Page
Copyright G. Mopolo-Mok
Page
Copyright G. Mopolo-Mok
Plan Gnral
6.3 Sauvegarde en mode Archivelog 6.4 Restauration d'une Base
I I
Plan Gnral
8. Loption procdurale
8.1 Gnralits 8.2 Procdures et fonctions
7.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
Page
Copyright G. Mopolo-Mok
Page
Copyright G. Mopolo-Mok
Plan Gnral
8.2 Procdures et fonctions 8.3 Packages 8.4 Les triggers Base de donnes
I
1. Introduction
I
Plan
1.1 Objectifs du cours 1.2 Les tches de l'administrateur 1.3 L'offre Oracle 1.4 Oracle 10G prsentation gnrale
les versions d'Oracle les options d'Oracle les architectures d'Oracle
I I
A1. Arborescence d'Oracle sous UNIX A2. Arborescence d'Oracle sous Windows NT A3. Les paramtres d'initialisation A4. Les vues du dictionnaires A5. Les vues de performance A6. Les privilges systmes A7. Scripts de cration d'une base et fichiers d'initialisation A8. Diffrences entre les Versions d'Oracle A9. Schma de la base de travail A10. Dimensionnement de segments
Page
Copyright G. Mopolo-Mok
Page
Copyright G. Mopolo-Mok
Comprendre le fonctionnement du moteur Oracle 10G Comprendre larchitecture logique et physique dune BD Oracle Effectuer les tches d'administration de base Administrer la scurit (utilisateurs, rles, profiles,...) Grer l'intgrit de donnes Grer les procdures stockes et les alertes Manipuler et administrer des donnes rparties Faire une introduction loptimisation dOracle
Copyright G. Mopolo-Mok Administration Oracle 10G
installer et upgrader Oracle allouer des espaces systmes et planifier des besoins futurs crer des objets des schmas grer la scurit et les ressources planifier l'archivage de donnes sauvegarder et restaurer les donnes arrter et dmarrer la base contrler et optimiser les performances
I I
I I I I
Page
Page 10
Copyright G. Mopolo-Mok
LOffre Oracle
Conception dapplications
Designer : - case designer - case dictionary - case generator
Progiciels
Oracle General Ledger Oracle Purchasing Oracle Payables Oracle Assets
oracle 10G (sql): - standard et PLSQL - parallle - parallle Query - distribu - Cartridge - Java VM - ORB -IAS Oracle Vido Server
Administration et interconnexion
. Administration : sqlloader, Sqlplus, import/export, Entreprise Manager . Interconnexion : Sqlnet, Sqlconnect, Oracle Gateway IIOP (ORB) . Oracle Application Server
Outils Groupware et Multimdia Oracle office Context Oracle mail Oracle Media Object Developper : . Forms,reports,Graphics, . . Programmer : . pro*C/C++, Pro*Cobol, ... Autres : . SQLJ,Jdevelopper, Webdb,...
Dveloppement d''applications
Page 12
Page 11
Copyright G. Mopolo-Mok
Copyright G. Mopolo-Mok
Oracle Replication
Architecture multithread
une SGA des process tche de fond un process serveur pour plusieurs process utilisateurs Machine virtuelle java ORB(Object Request Brocker) intgr partir de SQLNET
Option distribue
Interrogation distribue (y compris via des Gateways) Mise jour distribue rplication de donnes COMMIT deux phases
JAVA VM
SQL
PL/SQL
SERVER MULTITHREAD
Cartouches de donnes
Objet Relationnel
Relationnel
Disques
Page 15
Copyright G. Mopolo-Mok
Page 16
Copyright G. Mopolo-Mok
2. Architecture dOracle
I
Plan
2.1 Architecture gnrale 2.2 La notion d'instance 2.3 Structure de la mmoire d'Oracle 2.4 La SGA 2.5 La PGA 2.6 La Zone de Tri 2.7 Diffrentes configurations d'Oracle 2.8 Les process autour Oracle 2.9 Les process utilisateurs 2.10 Les Process Serveurs 2.11 Les Process tches de fond 2.12 Autres process 2.13 Mcanismes de lecture et criture 2.14 Mcanisme de validation et invalidation
Reprsentation schmatique
Process utilisateur Listener Process utilisateur Serveur ddi
Dispatchers
Request queue
Response queue Q1 Q2
Serveurs partags
SHARED POOL AREA (requtes SQL, procdures stockes, cache du dictionnaire) JAVA POOL LARGE POOL(mmoire Additionnelle pour la gestion des session: process server, io, xa, parallle, )
SMON
DBWx
CKPT
LGWR
ARCH
Fichiers de contrles
Fichiers d'archives
Copyright G. Mopolo-Mok
Principales composantes :
la SGA (System Global Area) la PGA (Program Global Area) la zone de Tri (Sort Area Size) Java Pool Large Pool
Database Buffer
Grer essentiellement selon le principe dit LRU (Last Recent Used) La taille de ces zones est dtermine grce des paramtres d'initialisation Un sous-dimensionnement peut entraner des pertes importantes de performances
Java Pool
Large Pool
I
Shared Pool Area PGA Stack Session utilisateur Etat des curseurs Dispatcher Stack
SGA
User Session info & tats des curseurs (Serveur Multithread) PGA
Serveurs partags Utilisateur SERVEUR DEDIE Page 19 Utilisateur Utilisateur SERVEUR MULTITHREAD Copyright G. Mopolo-Mok Administration Oracle 10G Page 20 Copyright G. Mopolo-Mok Administration Oracle 10G
2.4 La SGA
I
2.4 La SGA
I
La figure ci-dessous reprsente les principales composantes de la SGA (System Global Area)
Buffers de donnes
Zone de chargement et de mise jour en mmoire des blocs de donnes (blocs les plus rcemment utiliss) Ces blocs proviennent des fichiers de donnes Les blocs concerns peuvent tre :
Database Buffer (Buffer De donnes) Java Pool Shared Pool Area(zone Des requtes partages)
Redo log Buffer(Buffer Redolog) Large Pool User Session info & tats des curseurs (Serveur Multithread)
des blocs de tables et clusters des blocs d'index (B-tree, Bitmap, Reverse Key, ) des blocs des rollback segments
SGA
Le buffer de donnes est gr selon le mcanisme LRU (Last Recent Used). Seul les blocs les plus rcemment utiliss sont maintenus en mmoire. Les blocs les moins rcemment utiliss sont jects du Buffer de donnes, ceux modifis crits dans les fichiers de donnes
Page 21
Copyright G. Mopolo-Mok
Page 22
Copyright G. Mopolo-Mok
2.4 La SGA
I
2.4 La SGA
I
Page 23
Copyright G. Mopolo-Mok
Page 24
Copyright G. Mopolo-Mok
2.4 La SGA
I
2.4 La SGA
I
Database Buffer (Buffer De donnes) Java Pool Shared Pool Area(zone Des requtes partages)
Redo log Buffer(Buffer Redolog) Large Pool User Session info & tats des curseurs (Serveur Multithread)
SGA
La table v$sysstat contient les statistiques utiles : SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets', 'physical reads'); Name db block gets consistent gets physical reads Value 85792 278888 13182
FICHIERS DE DONNEES
Page 25
Copyright G. Mopolo-Mok
Page 26
Copyright G. Mopolo-Mok
2.4 La SGA
I
2.4 La SGA
I
Page 27
Copyright G. Mopolo-Mok
Page 28
Copyright G. Mopolo-Mok
2.4 La SGA
I
2.4 La SGA
I
SGA
Fichier de donnes
FICHIERS REDO
Page 29
Copyright G. Mopolo-Mok
Page 30
Copyright G. Mopolo-Mok
2.4 La SGA
I
2.4 La SGA
I
Large Pool
Le DBA peut configurer une zone de la SGA appel Large Pool pour soulager le Buffer de donnes ou la Zone des requtes partags pour certaines oprations gourmandes en mmoire Que peut fournir la Large pool ? :
Lespace mmoire ncessaire pour les sessions grs par les serveurs partags Lespace mmoire pour les transactions XA (moniteur transactionnel) Lespace mmoire pour effectuer les Backup et Restauration Lespace mmoire pour le traitement des requtes parallles si paramtre AUTOMATIC_TUNING=TRUE
Java POOL
Zone de mmoire ncessaire pour la machine virtuelle Java intgr dans Oracle Cette zone permet dexcuter le code Java stock dans le noyau Oracle Dimensionnement de la Java POOL
java_pool_size=33554432
Page 31
Copyright G. Mopolo-Mok
Page 32
Copyright G. Mopolo-Mok
2.5 La PGA
I
2.5 La PGA
I
Buffer contenant des donnes et des informations de contrle pour un process serveur La PGA est une zone de mmoire prive Les tables v$sesstat, v$statname, permettent de dterminer la taille de la PGA pour une session
Select ss.sid, ss.value, sn.name FROM v$sesstat ss, v$statname sn, v$session se WHERE ss.statistic#=sn.statistic# and sn.name in ('session pga memory') and se.sid=ss.sid and type != 'BACKGROUND';
SGA
STACK SPACE (zone mmoire contenant) : . des variables de sessions . des tableaux . ... Informations de session : . en SGA avec le serveur Multithread . contient la sql private area Page 33 Copyright G. Mopolo-Mok Administration Oracle 10G Page 34 Copyright G. Mopolo-Mok Administration Oracle 10G
2.5 La PGA
I
La taille maximum de la PGA est influence en plus par les paramtres d'initialisations suivants :
sort_area_size hash_area_size bitmap_merge_area_size and create_bitmap_area_size
Une zone de tri est associe un Serveur (ddi ou non) pour traiter des ordres ncessitant des tris (Group by, Order by, Join, ...) la taille de la zone de tri est dtermine par le paramtre SORT_AREA_SIZE (en bytes)
Par dfaut cette taille est de 65000 bytes Si cette zone est pleine un Segment temporaire est gnr
SORT_AREA_RETAINED_SIZE (exprime en byte, 0 min, Sort_area_size par dfaut et max) : espace ne pas librer en cas d'criture dans le segment temporaire tuning de la zone de tri ; table v$sysstat
SELECT name, value FROM v$sysstat WHERE name in ('sorts (memory)', 'sorts (disk)'); NOTE : Si le nombre de tris sur disque croit, augmenter Sort_area_size. Maisattention au Swapping de l'OS.
En mode serveur ddi il est difficile de grer lallocation des paramtres *_area_size. Depuis la 9i le DBA peut fixer sa PGA maximale grce au paramtre :
PGA_AGGREGATE_TARGET
Page 35
Copyright G. Mopolo-Mok
Page 36
Copyright G. Mopolo-Mok
Trois approches
Single task Oracle Serveur ddi Serveur Multithread
Page 37
Copyright G. Mopolo-Mok
Page 38
Copyright G. Mopolo-Mok
Serveur ddi
code du process utilisateur spar de celui du process serveur un process utilisateur est associ un process serveur
Serveur Multithread
Permet une meilleure exploitation des ressources SQL*NET V2 au moins est un pr requis
Process utilisateur
Listener
Dispatchers
Request queue
Serveurs partags
Page 39
Copyright G. Mopolo-Mok
Page 40
Copyright G. Mopolo-Mok
Process client excutant le code d'une application (PRO*C, FORMS, ...) ou dun Outil Oracle (SQL*PLUS, ENTREPRISE MANAGER, ...) Process souvent excut sur une machine diffrente de celle ou rside le serveur Oracle process qui tablit une communication avec Oracle via un protocole de communication et SQLNET La communication est gre via le User Programme Interface (UPI)
Process Oracle
Les process tches de fond (SMON, PMON, LGWR, DBWR, CKPT, ARCH, RECO, ...) Les process serveurs autres process
Page 41
Copyright G. Mopolo-Mok
Page 42
Copyright G. Mopolo-Mok
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
Process serveur ddi Fichier de donnes Page 43 Copyright G. Mopolo-Mok Administration Oracle 10G Page 44 Copyright G. Mopolo-Mok Administration Oracle 10G
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
Page 46
Copyright G. Mopolo-Mok
Le Process ARCH
sauvegarde le fichier REDO LOG lorsqu'il est plein c'est un process facultatif. Jusqu 10 process : ARC010 peuvent tre activs.
Le paramtre log_archive_max_processes permet fixer le nombre maximum. Il est conseill de garder la valeur par dfaut car Oracle alloue lui-mme de nouveaux process en cas de besoin
Les archives peuvent tre rediriges sur une bande La base doit tre dmarre en mode avec Archive
Page 47
Copyright G. Mopolo-Mok
Page 48
Copyright G. Mopolo-Mok
Le Process ARCH
Activation et configuration de ARCH sous UNIX :
log_archive_start = TRUE # activation des process ARCn log_archive_dest = /dev/rmt0:100M ou /backup/DB1/COURSarch
Destination des archives jusqu la version 8 dOracle
System Monitor(SMON)
Rpare linstance au dmarrage en cas d'arrt brutal Libre les segments temporaires compacte les extensions libres pour les rendre contigus (Alter Tablespace nomtablespace Coalesce) recouvre les process suspendus suite un crash
log_archive_format = %t_%s.arc ou t : THREAD, s : Squence number log_archive_duplex_dest : destination alternative jusqu la version 8 dOracle log_archive_min_succeed_dest=1 5 depuis la version (1 2 avant).Ce paramtre indique le nombre de copie faire lors de larchivage dun fichier Redo log log_archive_dest_state_n (n de 1 10) = enable ou Defer. Permet de grer ltat dune destination de sauvegarde log_archive_dest_n log_archive_dest_n (n de 1 10)=/backup/DB1/COURSarch standby_archive_dest : destination des archives pour une base en Standy
Page 49 Copyright G. Mopolo-Mok Administration Oracle 10G
Process Monitor (PMON) Fait le mnage en cas de disparition brutale d'un process utilisateur.
Supprime au niveau Oracle les process en erreur Annule les transactions en cours Libre les verrous contrle les process dispatchers et serveurs. S'ils ne sont plus prsents, il les redmarre.
Page 50
Copyright G. Mopolo-Mok
Recover (RECO)
Sert uniquement si option distribue termine les transactions distribues en suspens d une erreur rseau ou systme se rveille par intervalles rguliers pour finir ou annuler des transactions suspendues
tnslnr : permet la connexion de client SQL*NET protocole TCP/IP dnslnr : permet la connexion de client SQL*NET protocole DECNET Jn (J000 J999): Job queue Processes
Permet de traiter des tches Batch programmes dans Oracle Un process coordinateur CJQ0 est le seul au dpart dmarr. Cest lui qui dmarre automatiquement les process Jnnn et leur affecte des tches Les tches peuvent tre aussi des tches de rplication entre bases Oracle Avant Oracle 10G on parlait de SNP0 SNP36
Dispatcher (Dnnn)
rceptionne les requtes des process utilisateurs et les met disposition d'un process serveur lit les rsultats d'une requte et les redirige vers le process utilisateur concern au moins un dispatcher par type de protocole rseau permet de partager les process serveurs
LOCK (LCKn)
Utile avec l'option parallle jusqu' 10 Lock process peuvent tre dmarrs
Queue Monitor (QMNn avec n de 0 9) : ces process servent au monitoring des queues de messages en cas de gestion de queues de messages avance
Copyright G. Mopolo-Mok Administration Oracle 10G
Page 51
Copyright G. Mopolo-Mok
Page 52
1. Association d'un Rollback Segment ou dun undo tablespace ou dun undo tablespace la transaction 2. Verrouillage exclusif des lignes modifier
Un SELECT en cours peut - t - il accder des donnes valides (COMMIT) par une autre transaction ?
Page 53
Copyright G. Mopolo-Mok
Page 54
Copyright G. Mopolo-Mok
COMMIT
Un enregistrement contenant le COMMIT est crit dans le buffer Redo Log par le process Serveur Le contenu du buffer Redo Log est trac dans le fichier Redo Log par le process LGWR Les donnes valides sont considres comme tant "Propres" L'utilisateur reoit le message "COMMIT COMPLETED"
Plan
3.1 Installation du noyau et des outils Oracle 3.2 Etats d'une base 3.3 Privilges utiles 3.4 Cration d'une base 3.5 Le fichier d'initialisation init.ora 3.6 Dmarrage d'une base 3.7 Arrt d'une base 3.8 Activation de la base en mode priv pour le DBA 3.9 Suspension et ractivation de la base 3.10 Le Dictionnaire de donnes d'Oracle
ROLLBACK
Un enregistrement contenant le ROLLBACK est crit dans le buffer Redo Log par le process Serveur Le contenu du buffer Redo Log est trac dans le fichier Redo Log par le process LGWR Les donnes modifies sont remises dans leur tat ancien L'utilisateur reoit le message "ROLLBACK COMPLETED"
Page 55
Copyright G. Mopolo-Mok
Page 56
Copyright G. Mopolo-Mok
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
Page 58
Copyright G. Mopolo-Mok
Installation 1. lancer lexcutable fournit avec la distribution : - sous UNIX : dans lenvironnement motif lancer oracleInstaller - sous NT : lancer SETUP depuis le premier CD 2. choix de la HOMEDIR dOracle 3. choix d'un type d'installation (complete, custom, minimal, ...) 4. Choix du ou des produits installer ou upgrader 5. Saisie des informations lies la base de dpart (si premire installation)
Page 59
Copyright G. Mopolo-Mok
Page 60
Copyright G. Mopolo-Mok
Privilges ncessaires pour crer, dmarrer ou arrter une base (UNIX ou NT)
SYSDBA (arrt, dmarrage, modification, cration dune base, ) SYSOPER(arrt dmarrage dune base, modification)
NOMOUNT . Instance monte . Utilisation : cration d'une base, crer un fichier de contrle
MOUNT . Instance dmarre et fichiers de contrle ouverts . Utilisation : tches de maintenance tels que renommer les fichers (donnes, rdos, ...), activer/dsactiver le mode avec archive, recouvrer les donnes, ...
OPEN . Instance dmarre fichiers de contrle et de donnes ouverts . Utilisation : mode de fonctionnement normal
Activation
OS_ROLE = TRUE # dans init.ora ORA_SID_ROLE_D(default)/A(with admin option) nom d'un groupe dans le fichier /etc/group
Exemple ORA_COURS_OSOPER_D :none:3:clement ORA_COURS_OSDBA_A:mopolo, miranda
Page 61
Copyright G. Mopolo-Mok
Page 62
Copyright G. Mopolo-Mok
# Configuration du fichier
control_files=("C:\oracle\oradata\DBTEST\CONTROL01.CTL", "C:\oracle\oradata\DBTEST\CONTROL02.CTL", "C:\oracle\oradata\DBTEST\CONTROL03.CTL")
# Diagnostics et statistiques
background_dump_dest=C:\oracle\admin\DBTEST\bdump core_dump_dest=C:\oracle\admin\DBTEST\cdump timed_statistics=TRUE user_dump_dest=C:\oracle\admin\DBTEST\udump
# Divers
compatible=9.0.0 db_name=DBTEST
# Inscription rseau
instance_name=DBTEST
Page 63
Copyright G. Mopolo-Mok
Page 64
Copyright G. Mopolo-Mok
Etapes suivre pour crer une base avec le Database Configuration Assistant
1. Dmarrer lassistant start->programme->OracleHome->Configuration and Migration Tools->Database Configuration Assistant 2. Choisir crer une base 3. Choisir un template (modle) de base 4. Donner le nom global de la base (exemple DBTEST.CERAM.FR) ainsi que le SID (DBTEST) 5. Slectionner le mode de dploiement de la base (mode ddi) ou (mode serveurs multithreads) 6. Fixer la taille de la SGA(buffer cache, shared pool, large pool, java pool) 7. slectionner le mode darchivage de la base (Archivelog ou noarchivelog).Localiser les fichiers darchive 8. Fixer la taille maximale de la zone de tri ainsi que les caractres sets 9. Localiser les fichiers de contrles, de donnes et redo log 10. Modifier tout moment les paramtres ditialisation supplmentaires et dmarrer la cration de la base
# Pools
java_pool_size=33554432 large_pool_size=1048576 shared_pool_size=33554432
# Processus et sessions
processes=150
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
Page 66
Copyright G. Mopolo-Mok
Syntaxe gnrale
CREATE DATABASE [nombase] [CONTROLFILE REUSE] [LOGFILE {[GROUP entier] logFileSpec, }] [MAXLOGFILES entier] [MAXLOGMEMBERS entier] [MAXLOGHISTORY entier] [MAXDATAFILES entier] [MAXINSTANCES entier] [{NOARCHIVELOG | ARCHIVELOG}] [CHARACTER SET nomCaracterSet] [NATIONAL CHARACTER SET nomCaracterSet] [DATAFILE {dataFileSpec [ClauseAutoExtend], }] [default_temp_tablespace] [undo_tablespace_clause] [SET STANDBY DATABASE {PROTECTED UNPROTECTED}] [set_time_zone_clause]
Page 67
Copyright G. Mopolo-Mok
Page 68
Copyright G. Mopolo-Mok
{ Nomfichier | (Nomfichier [, Nomfichier] ...)} [SIZE entier [K|M] ] [REUSE] dataFileSpec ::= Nomfichier [SIZE entier [K|M] [REUSE]
CONTROLFILE REUSE rutiliser les fichiers de contrle existant en cas de recration de la base LOGFILE GROUP entier MAXLOGFILES entier MAXLOGMEMBERS entier MAXLOGHISTORY permet de spcifier les fichiers Redo log Group de fichiers redolog en miroir nombre maximum de fichiers Redo log nbre max de membres dans un groupe Redo log 16 (255)* 2 (5)*
ClauseAutoExtend ::= {OFF | ON [NEXT entier [K | M]] [MAXISZE {UNLIMITED | entier [K|M]}] } default_temp_tablespace::= [DEFAULT TEMPORARY TABLESPACE tablespace [TEMPFILE filespec] temp_tablespace_extent_clause] temp_tablespace_extent::= EXTENT MANAGEMENT LOCAL UNIFORM SIZE integer [K | M] [undo_tablespace_clause::= UNDO TABLESPACE tablespace [DATAFILE filespec1 [autoextend_clause1], ]]
Page 69 Copyright G. Mopolo-Mok Administration Oracle 10G
Nbre maximum de fichier d'archive noter dans le fichier de contrle pour recouvrement automatique si BD parallle 30(65533)* 63 (63)*
MAXDATAFILES entier Nbre maximum de fichiers de la bas MAXINSTANCES entier Nbre max d'instances actives sur cette base NOARCHIVELOG | ARCHIVELOG CHARACTER SET
NATIONAL CHARACTER SET
Base cre en mode sans archive(avec archive) noarchivelog Langage de stockage des donnes Langage nationale de stockage des donnes (type NCHAR, NVARCHAR2, ) us7ascii
DATAFILE dataFileSpec Fichiers de donnes du tablespace System * Dpendent de l'OS Page 70 Copyright G. Mopolo-Mok Administration Oracle 10G
3.4 Cration d'une base Description des mots cls et des paramtres
Mot cl Description ou paramtre default_temp_tablespace permet de dfinir le TS temporaire par dfaut. undo_tablespace_clause permet de dfinir le TS des donnes Rollback par dfault SET STANDBY DATABASE li une base en standby set_time_zone_clause fixer lhorloge Default (Max)
Page 71
Copyright G. Mopolo-Mok
Page 72
Copyright G. Mopolo-Mok
Les paramtres
environ 250 paramtres dont la plupart sont renseigns par dfaut trois classes de valeurs de paramtres
les boolens (TRUE, FALSE) des chanes de caractres et des entiers.
Page 73
Copyright G. Mopolo-Mok
Page 74
Copyright G. Mopolo-Mok
Procdure Gnrale
Positionner les variables d'environnement ORACLE_SID et ORACLE_HOME dmarrage de la base possible par paliers (startup nomount, startup mount, et startup open) possder les privilges appropris (SYSDBA, SYSOPER, OSDBA ou OSOPER, ...) indiquer si ncessaire le fichier des paramtres dmarrer la base sous sqlplus (Unix et NT) ou via les services(NT) ou Oradim (NT), travers Entreprise Manager: database administration assistant (NT ou Unix)
RESTRICT sert des tches de maintenance. Il faut avoir le privilge Restricted Session PFILE OPEN MOUNT = Indique le fichier des paramtres dmarrer et ouvrir les fichiers de la base Instance dmarre fichier(s) de contrle ouvert(s)
NOMOUNT Seule l'instance est dmarre ALTER DATABASE permet le dmarre par paliers aprs un startup NOMOUNT ou MOUNT
Syntaxe de la commande
STARTUP [FORCE] [RESTRICT] [PFILE=fich_param] [OPEN | MOUNT | NOMOUNT] ALTER DATABASE [nom_base] MOUNT | OPEN
Page 75
Copyright G. Mopolo-Mok
Page 76
Copyright G. Mopolo-Mok
Exemple
Variables denvironnement (sous UNIX) $ export ORACLE_SID = COURS $ export ORACLE_HOME=/user/oracle/v9 Lancer SQLPLUS $sqlplus username : sys as sysdba password : manager #dmarrer et ouvrir les fichiers de la base SQL >startup ; idem SQL>startup OPEN pfile= /user/oracle/v9/dbs/initCOURS.ora #dmarrer la base par paliers $ SQLPLUS
username : sys as sysdba password : manager # Instance dmarre, fichiers de contrles ouverts SQL >startup mount ; #En plus les fichiers de donnes sont ouverts SQL > alter database open ;
Procdure Gnrale
Possder les privilges OS (osdba, osoper) positionner les variables d'environnement (ORACLE_SID et ORACLE_HOME) Lancer l'outil SQLPLUS
Syntaxe de la commande
SHUTDOWN [NORMAL | IMMEDIATE | ABORT | TRANSACTIONAL]
NORMAL attend la dconnexion de l'ensemble des utilisateurs IMMEDIATE Invalide les transactions en cours et dconnecte les users ABORT Arrt violent de l'instance (recouvrement utile : SMON) TRANSACTIONAL Contrairement IMMEDIATE, laisse finir les transactions en cours
Page 77
Copyright G. Mopolo-Mok
Page 78
Copyright G. Mopolo-Mok
Exemple
Positionner les variables d'environnement (UNIX)
$export ORACLE_SID=COURS $export ORACLE_HOME=/users/oracle/v9
Afin de permettre au DBA doprer des tches incompatibles avec la concurrence daccs tels que : la modification du schma, la suppression / recration dindex, il est possible de passer la base en mode QUIESCED alors quelle est ouverte normalement. Le passage en mode QUIESCED est obtenu base en ligne
SQL> ALTER SYSTEM QUIESCE RESTRICTED
password : manager
I
# arrt normal avec attente de dconnexion SQL>shutdown ou # Arrt immdiat : Annulation des transactions en # cours et dconnexion . # Les utilisateurs ont le message suivant : # ORA-03113 : end-of-file on communication channel SQL>shutdown immediate ; ou # Arrt brutal (pas dattente de dconnexion, pas # d'invalidation de transactions en cours) SQL >shutdown abort;
La vue V$INSTANCE permet davoir les information le mode dactivation dune instance NOTE :
Le mode QUIESCE peut tre aussi obtenu en dmarrant la base en mode RESTRICTED SESSION Seul les utilisateur SYS et SYSTEM peuvent activer ce mode
Page 79
Copyright G. Mopolo-Mok
Page 80
Copyright G. Mopolo-Mok
Afin de permet une sauvegarde base en ligne sans activit de mise jour dans les fichiers de donnes il est possible maintenant de suspendre lactivit de mise jour Commande excuter pour suspendre la base
SQL>ALTER SYSTEM SUSPEND
un dictionnaire par base de donnes Ensemble de tables, vues et synonymes permettant la gestion des objets d'une base (proprit de l'utilisateur SYS) Il est accessible via des ordres SQL Il est modifi indirectement via des ordres dits DDL Il ne doit tre modifi directement Contient des informations persistantes (objets crs tels que les tables, les index, les clusters, ...) et des informations dynamiques (tels les sessions ouvertes, les E/S effectues, ...)
I I
NOTE : les rgles de sauvegarde base ouverte doivent tre respectes (voir le chapitre Sauvergarde et Restauration)
Page 81
Copyright G. Mopolo-Mok
Page 82
Copyright G. Mopolo-Mok
Contenu du dictionnaire
des tables de base du dictionnaire stockes en cluster et finissant par $. Exemple tab$, ind$, obj$, seg$, ... (script les contenant : sql.bsq) les vues de performances exemple :
v_$process, v_$session, v_$syststat, v_$sesstat, ...
PLAN
4.1 Structure Physique d'une Base de Donnes Oracle
4.1.1 Les fichiers de donnes 4.1.2 Les fichiers Redo log 4.1.3 Les fichiers d'Archives 4.1.4 Les fichiers de Contrle
Page 83
Copyright G. Mopolo-Mok
Page 84
Copyright G. Mopolo-Mok
Physiquement, une base de donnes Oracle est compose d'un certain nombres de fichiers :
des Fichiers de donnes des fichiers REDO LOG des fichiers de contrle des fichiers d'Archivage (si fonctionnement avec Archive) SGA
Shared Pool Area
Ils contiennent toutes les donnes relatives une base de donnes (dictionnaire Oracle, Tables, index, clusters, rollback segments, segment temporaires) Ces fichiers sont lus par les process Serveurs et modifis par DBWn L'unit de dcoupage est le bloc (2K, 4K, 8K, 16K, 32K) selon l'OS Ces fichiers sont de taille fixe et optionnellement variables depuis la 7.2 Ils appartiennent une et une seule base
Que se passe - t - il si MAXDATAFILES est atteint ? Que se passe - t - il si DB_FILES est atteint ? Quelles sont les mesures prendre ?
Process Serveur
I
Fichiers de donnes Fichiers de donnes Database Buffer
DBWR CKPT
ARCH
Page 85
Copyright G. Mopolo-Mok
Page 86
Copyright G. Mopolo-Mok
Ces fichiers contiennent la trace de lactivit en terme de mise jour sur la base deux groupes au moins avec chacun au moins un fichier sont obligatoires ils doivent tre multiplexs pour plus de scurit ne sont utiles quen cas de perte des fichiers de donnes ou d'arrt anormal de la base Fonctionnent de faon cyclique
Configuration minimale (au moins 2 groupes avec au moins un fichier chacun) En cas de Log Switch => changement de groupe Un checkpoint intervient si : fin de fichier, TIMEOUT, intervalle en taille atteinte, Begin Backup, shutdown normal ou immediate, ... Configuration minimale (sans multiplexage)
F1a
Groupe 2
F2a
Page 87
Copyright G. Mopolo-Mok
Page 88
Copyright G. Mopolo-Mok
Groupe 2
F1a Fichier2a
F1a Fichier2b
Page 89
Copyright G. Mopolo-Mok
Page 90
Copyright G. Mopolo-Mok
Forcer un checkpoint
pour rendre le groupe courant inactif en cas de problme pour des besoins de maintenance pour provoquer un archivage immdiat si le REDO LOG est trop grand Commande excuter (privilge requis : ALTER SYSTEM)
ALTER SYSTEM SWITCH LOGFILE ;
Exemple
ALTER DATABASE DBCOURS ADD LOGFILE GROUP 4 (' /oracle/oradata/DBCOURS/disk1/log4adbcours.dbf') size 500K; ALTER DATABASE DBCOURS ADD LOGFILE MEMBER /oracle/oradata/DBCOURS/disk2/log4bdbcours.dbf' TO GROUP 4; ALTER DATABASE DBCOURS ADD LOGFILE MEMBER /oracle/oradata/DBCOURS/disk1/log4adbcours.dbf' TO /oracle/oradata/DBCOURS/disk3/log4cdbcours.dbf'; I
Page 91
Copyright G. Mopolo-Mok
Page 92
Copyright G. Mopolo-Mok
v$logfile : table contenant les noms des fichiers Redo Log et leur tat. Name GROUP# STATUS Type NUMBER VARCHAR2(7) Description Numro du groupe redo Log INVALID: fichier inaccessible STALE : contenu incomplet DELETED : fichier supprim blanc : En utilisation ONLINE : actif, Nom du fichier membre
TYPE MEMBER
VACHAR2(7) VARCHAR2(513)
Select group, status, member From v$logfile; Group# Status 1 1 2 STALE 2 STALE 3 3 6 rows selected. MEMBER C:\ORADATA\DBCOUR\DISK1\LOG1ACOUR.DBF C:\ORADATA\DBCOUR\DISK2\LOG2ACOUR.DBF C:\ORADATA\DBCOUR\DISK1\LOG1BCOUR.DBF C:\ORADATA\DBCOUR\DISK2\LOG2BCOUR.DBF C:\ORADATA\DBCOUR\DISK1\LOG1CCOUR.DBF C:\ORADATA\DBCOUR\DISK2\LOG2CCOUR.DBF
v$log : Vue contenant les informations issues du fichier de contrle sur les fichiers Redo Log. Name Type Description GROUP# NUMBER Numro de groupe de redo log THREAD# NUMBER Numro du Thread d'un fichier log Sequence# NUMBER Numro de squence d'un fichier log BYTES NUMBER Taille du fichier log en bytes MEMBERS NUMBER Nombre de membre dans un group de Log ARCHIVED Varchar2 Fichier en Archivage ? :YES, NO STATUS Varchar2 UNUSED : Fichier non utilis (il vient d'tre ajout, il ya eu un resetlogs) CURRENT :Fichier courant et actif ACTIVE : log actif mais pas courant CLEARING : Recration la suite d'un Alter Database Clear Logfile CLEARING_CURRENT : effacement du log courant INACTIVE : log non utile pour le recouvrement first_change# NUMBER Plus petit SCN dans le fichier Log First_time DATE Date du 1er SCN dans le fichier Log
Page 93
Copyright G. Mopolo-Mok
Page 94
Copyright G. Mopolo-Mok
v$log_history : Vue contenant les informations sur lhistorique des fichiers Log Name Type Description THREAD# NUMBER Numro de thread du log archiv Sequence# NUMBER Numro de squence du log archiv First_time DATE Date du plus petit SCN dans le fichier Log first_change# NUMBER Plus petit SCN dans le fichier log next_change# NUMBER Plus grand SCN dans le fichier log. RECID NUMBER Nr. d'enregistrement dans le fichier de controle STAMP NUMBER Controlfile record stamp
V$THREAD: vue contenant des informations issues du fichier de contrle sur les Log Thread. Name Type THREAD# NUMBER STATUS Varchar2 ENABLED Varchar2 ENABLE_ CHANGE# NUMBER ENABLE_TIME DATE disable_change# Number DISABLE_TIME DATE GROUPS NUMBER INSTANCE Varchar2 OPEN_TIME DATE Current_group# Number SEQUENCE# NUMBER CHECKPOINT _CHANGE# Number Cheickpoint_time DATE Description numro du Thread status du Thread: OPEN, CLOSED Enabled status: DISABLED, (enabled) PRIVATE, or (enabled) PUBLIC SCN at which thread was enabled Time of enable SCN SCN at which thread was disabled Time of disable SCN Nombre de groupe redo affectes ce thread Nom de l'instance Dernire date de lancement du thread Groupe Redo Log courant Nr. De squence du fichier Log courant SCN du dernier checkpoint Date du dernier checkpoint
Page 95
Copyright G. Mopolo-Mok
Page 96
Copyright G. Mopolo-Mok
prsents si mode avec Archives contiennent l'archivage des fichiers Redo log plein la mme taille que le fichier REDO LOG correspondant
ARCH F1a Fichier1a F1a F1a Fichier1b COURSarch_123.arc 123 = Nr. de squence
Groupe 1
log_archive_format = %t_%s.arc ou t : THREAD, s : Squence number log_archive_duplex_dest : destination alternative jusqu la version 8 dOracle log_archive_min_succeed_dest=1 5 depuis la version (1 2 avant).Ce paramtre indique le nombre de copie faire lors de larchivage dun fichier Redo log log_archive_dest_state_n (n de 1 10) = enabled ou Deffered ou Alternate. Permet de grer ltat dune destination de sauvegarde log_archive_dest_n log_archive_dest_n (n de 1 10)=/backup/DB1/COURSarch
Si un groupe REDO LOG est plein ou si un CHECKPOINT est intervenu alors ARCH se met action.
Que fait Oracle lorsque LGWR tente d'craser un fichier en cours d'Archivage ?
Page 98 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 97
Copyright G. Mopolo-Mok
Un fichier de contrle contient des informations de contrle d'une base de donnes Oracle Le contenu de ce fichier est :
nom de la base date (timestamp) de cration de la base noms et localisation des fichiers de donnes et redo log numro de squence du fichier redo log courant informations sur les CHECKPOINT
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
Page 100
Copyright G. Mopolo-Mok
Les tapes
1. Lister les fichiers sauvegarder
Les fichiers de donnes (vue dba_data_files) les fichiers redo log (vues v$logfile)
2. Arrter la base et faire une sauvegarde complte dmarrer une nouvelle instance en NOMOUNT crer un nouveau fichier fichier de contrle Modifier le fichier des paramtres de la base Recouvrer la base si utile et redmarrer
Sql>select name, value from v$parameter where name =control_files Sql>Select * from v$controlfile_record_section;
La commande
CREATE CONTROLFILE [REUSE][RESET] DATABASE nombase LOGFILE ... DATAFILE ...
Page 101
Copyright G. Mopolo-Mok
Page 102
Copyright G. Mopolo-Mok
Les structures logiques servent organiser le stockage et la gestion des donnes d'une base Oracle Corrlation entre les concepts logiques
Base de donnes comprend est li appartient Tablespace comprend appartient Segment table d'Index Cluster rollback temporaire comprend comprend Bloc
Gnralits
Un Tablespace est l'espace de stockage logique des donnes Une Base de donnes Oracle comprend 1 N Tablespaces. Un tablespace est compos de 0 ou N Fichiers OS Un Tablespace peut tre mis OFFLINE. Toutefois le Tablespace SYSTEM ne peut tre mis OFFLINE Un tablespace peut tre TEMPORARY ou PERMANENT (mode par dfaut). Un tablespace temporaire contient des donnes temporaires lis au TRI par exemple Il maintenant possible de crer des tablespaces pour contenir les tables temporaires. CREATE TEMPORARY TABLESPACE nom_tablespace TEMPFILE .Il peut aussi contenir les donnes de tri sil est affect un utilisateur Un tablespace peut tre rserv contenir des donnes Rollback : UNDO TABLESPACE
appartient comprend
Extension
appartient
Page 103
Copyright G. Mopolo-Mok
Page 104
Copyright G. Mopolo-Mok
Gnralits
Un tablespace peut maintenant tre gr localement. Pas de donnes dans le dictionnaire lors de la cration de segment (mot cl LOCAL) : ATTENTION ! OPTION PAR DEFAUT Un tablespace peut aussi tre depuis la Oracle 8 transportable en bases de donnes Deux TABLESPACES peuvent depuis Oracle 10G avoir des blocs de taille diffrente. Grs dans des segments de SGA diffrents (Voir le chapitre concernant la SGA)
Page 105
Copyright G. Mopolo-Mok
Page 106
Copyright G. Mopolo-Mok
Le tablespace SYSTEM
Tablespace cr par dfaut lors de la cration de la base contient le dictionnaire de donnes contient un Rollback segment cr par dfaut SYSTEM ne peut tre mis OFFLINE il est dconseill d' y stocker des donnes autres que celles du dictionnaire
Table 2 Table 1
Fichier2_user_disk2.dbf Table 3 Extension 2 Table 4 Extension 1 TABLESPACE RBS Fichier1_rbs_disk3.dbf Rollback segment 1 Extension 1 Rollback segment 1 Extension 2 Rollback segment 1 Extension 3
Extension 2
Index 2 Index 2
Extension 2
Page 107
Copyright G. Mopolo-Mok
Page 108
Copyright G. Mopolo-Mok
Page 109
Copyright G. Mopolo-Mok
Page 110
Copyright G. Mopolo-Mok
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 LM : Local Management 5 blocs 5 blocs 1 dpend taille bloc 50%
MAX OS OS OS OS
Page 111
Copyright G. Mopolo-Mok
Page 112
Copyright G. Mopolo-Mok
Les extensions des segments peuvent avoir des tailles diffrentes Les extensions sont dfinies par le DBA en sappuyant sur les clauses DEFAULT STORAGE du tablespace ou STORAGE dun segment Ce type de tablespace partir de la version 9i ne peut tre cre que si le tablespace System est lui mme gr dans le dictionnaire
Page 113
Copyright G. Mopolo-Mok
Page 114
Copyright G. Mopolo-Mok
La taille dune extension ici peut tre calcule automatiquement (AUTOALLOCATE) on peut tre fixe (UNIFORM SIZE) Si l'on utilise la clause AUTOALLOCATE Oracle dtermine la taille optimale des extensions de chaque segment avec un minimum de 64K. Vous pouvez prciser la taille de lextension INITIALE lors de la cration du segment. Oracle sen sert pour calculer la taille des extensions du segment Si l'on utilise la clause UNIFORM SIZE toutes les extensions de tous les segments auront la mme taille : celle spcifie lors de la cration du tablespace ou celle part dfaut qui est de 1 Mo
Page 116 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 115
Copyright G. Mopolo-Mok
NOTES :
Les paramtres de stockage NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, DEFAULT STORAGE sont ignors pour les Tablespaces grs localement Avec la clause UNIFORM SIZE, INITIAL nest pas en plus pris en compte
TESTLOCAL TESTLOCAL
0 1
1048576 1048576
128 128
Page 117
Copyright G. Mopolo-Mok
Page 118
Copyright G. Mopolo-Mok
Page 119
Copyright G. Mopolo-Mok
Page 120
Copyright G. Mopolo-Mok
Page 121
Copyright G. Mopolo-Mok
Page 122
Copyright G. Mopolo-Mok
Un tablespace peut tre mis read-only (oracle 7.2) ALTER TABLESPACE appli_compta READ ONLY
Quand doit - t - on mettre un fichier OFFLINE ou ONLINE ? Pourquoi l'arrt d'un fichier ncessite l'option DROP en mode sans archive ? Quelles sont les conditions pour rendre un tablespace read-only?
Que doit-t-on faire pour renommer un fichier dans le un tablespace tablespace autre que System ?
Page 123
Copyright G. Mopolo-Mok
Page 124
Copyright G. Mopolo-Mok
Objets du schma
Le nom d'un schma quivaut celui d'un utilisateur les objets suivants appartiennent un schma : les tables, les vues, les squences, les synonymes, les indexes, les procdures, les fonctions, les packages, les snapshots, les index, les contraintes, les clusters, les database links, les triggers, les types, des segments sont associs aux objets du schma. On distingue :
des segments de donnes (TABLES, CLUSTERS) des segments d'index (INDEX) des segments temporaires des segments ROLLBACK le segment de dmarrage (contient le dictionnaire)
Page 125
Copyright G. Mopolo-Mok
Page 126
Copyright G. Mopolo-Mok
Le bloc
un bloc est la plus petite unit de stockage et d'change la taille dun bloc Oracle dpend de l'OS (2K, 4K, 8K, 16K, 32K) un bloc comprend une entte et une zone pour stocker les enregistrements les paramtres suivants permettent de contrler la taille d'un bloc en insertion ou en mise jour :
PCTFREE : 10 % par dfaut, rserve l'espace pour les mises jour, permet un meilleur remplissage en insertion, ... PCTUSED : 40% par dfaut, lorsqu'un bloc est plein, les insertions ne peuvent y reprendre que si PCTUSED <= 40% INITRANS : Nombre de transactions pr-alloues pouvant tre actives dans un bloc, par dfaut 1 pour un segment de table et 2 pour un d'index ou de cluster.
Page 127
Copyright G. Mopolo-Mok
Page 128
Copyright G. Mopolo-Mok
Le bloc
Format d'un bloc (table, index, cluster)
Partie fixe et Partie variable : de 84 107 octets Rpertoire des tables = tables ayant des lignes dans le bloc rpertoire des lignes = adresse des lignes dans le bloc E N T E T E
Le bloc
Pour les tablespaces locaux dont lespace dans les segments est gr automatiquement, les blocs libres sont identifis via les bitmaps. PCTUSED, FREELIST, GROUP LIST ne sont pas utiliss
CREATE TABLESPACE tslocaluniformauto DATAFILE D:\oracle\oradata\dbtp92\TSLOCAL\ts_local_unif3.dbf SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 200K SEGMENT SPACE MANAGEMENT AUTO; NOTE : loption par dfaut est SEGMENT SPACE MANAGEMENT MANUAL;
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 Copyright G. Mopolo-Mok Administration Oracle 10G
Une extension
Ensemble de blocs contigus appartenant un segment est allou soit statiquement ( la cration de la table) soit dynamiquement
Une extension
Les paramtres de stockage permettent de contrler le nombre d'extensions pour un segment le nombre maximum dextensions allouables un segment dpend de la taille du bloc (jusqu' Oracle 7.2). Il peut maintenant tre illimit. mode dallocation des extensions DICTIONARY
1.1 Oracle recherche les blocs contigus quivalents la demande 1. 2 Si pas trouv, Oracle recherche les blocs contigus > ou = la demande 1.3 si pas trouv, Oracle regroupe les blocs libres proches dans le tablespace (SMON) 1.4 si pas trouv, erreur.
Entte du Segment
Extension 1
Extension 2
2. si trouv, Oracle alloue l'extension 3. Oracle met jour l'entte du segment et le dictionnaire de donnes si ncessaire
Page 132 Copyright G. Mopolo-Mok Administration Oracle 10G
Extension N
Page 131
Copyright G. Mopolo-Mok
Les segments d'index (index Btree, bitmap, Table Oraganis dans un Index) les segments temporaires les segments rollback ou d'annulation
Page 133
Copyright G. Mopolo-Mok
Page 134
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
Page 136
Copyright G. Mopolo-Mok
Elment de la clause dclaration_colonne column_constraint storage_clause enable_clause disable_clause PCTFREE PCTUSED INTITRANS MAXTRANS FREELISTS FREELISTS GROUP Large_object_clause Partition_Clause ORGANIZATION index ORGANIZATION heap ORGANIZATION external
Page 137
Copyright G. Mopolo-Mok
Page 138
Copyright G. Mopolo-Mok
Modification du segment
Exemple (suite) :
Extensions allouables au segment de la table scott.emp
Nr. Extension 1 (initial/min 1) 2 ( min 2) 3 (min 3) 4 5 Taille extension 100K 50K 75K 112,5K 168,75 Valeur de lextension suivante 50K 75K=1,5*50K 112,5K=1,5*75K 168,75=1,5*112,5K 253,125=1,5*168,75K
ALTER TABLE [ schema.] table [ ADD {column datatype [ DEFAULT EXPR ] [ column_constraint ] ... | table_constraint }] [ MODIFY { column [ datatype ] [ DEFAULT EXPR ] [ column_constraint ] ...}] [ PCTFREE integer ] [ PCTUSED integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ STORAGE storage_clause ] [ DROP drop_clause ] ... [ ALLOCATE EXTENT [ ( [ SIZE integer [ K | M ] ] [ DATAFILE filename ] [ INSTANCE integer ] ) ] {[ ENABLE enable_clause | DISABLE disable_clause ] ...}
Page 139
Copyright G. Mopolo-Mok
Page 140
Copyright G. Mopolo-Mok
clause add_clause modify_clause storage_clause enable_clause disable_clause PCTFREE PCTUSED INTITRANS MAXTRANS FREELISTS FREELISTS GROUP
Exemple ALTER TABLE scott.emp STORAGE( NEXT 300K MAXEXTENT 10 PCTINCREASE 10) ALLOCATE EXTENT (SIZE 400K DATAFILE user_data1.dbf) ;
Pourquoi nest -t -il pas possible de modifier INITIAL et MINIEXTENTS ? Quels sont les diffrentes exploitations possibles de la clause ALLOCATE EXTENT ?
ALLOCATE EXTENT Allocation explicite d'une extension dans un fichier donn drop_clause Clause de suppression d'une contrainte d'intgrit
Page 141
Copyright G. Mopolo-Mok
Page 142
Copyright G. Mopolo-Mok
Drop table
truncate table
pas de RBS conservation des Contraintes, triggers, grant pas d'excution de trigger, gel des Contraintes
delete from
Page 143
Copyright G. Mopolo-Mok
Page 144
Copyright G. Mopolo-Mok
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)
Page 145
Copyright G. Mopolo-Mok
Page 146
Copyright G. Mopolo-Mok
Description taille d'un bloc logique pour le cluster Colonne qui joue le rle de fonction de hashage Nombre de valeurs de cls
Exemple de cration d'un cluster hach a) create cluster cluster_dept_emp (deptno number(3)) SIZE 2K HASHKEYS 1000; b) create table dept (deptno number(3), ...) CLUSTER cluster_dept_emp;
Page 147
Copyright G. Mopolo-Mok
Page 148
Copyright G. Mopolo-Mok
Page 149
Copyright G. Mopolo-Mok
Page 150
Copyright G. Mopolo-Mok
dimensionnement du segment
Gnralits
Acclrateur de requte peut tre unique ou non unique peut tre cr explicitement ou implicitement (depuis Oracle7) sa structure interne est un arbre balanc (B-arbre)
Un B-arbre
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
Page 152
Copyright G. Mopolo-Mok
Le segment dindex
Gnralits (suite)
King
Blake
James
Miller
[PARTITION clause_de_partionnement]
Notes : A chaque feuille on trouve : la valeur cl et le ROWID (index unique) ou la liste des ROWID (Index non unique). Par exemple ADAMS '00000012.0002.0002 '.
Modification du segment
ALTER INDEX [ schema. jindex [ INITRANS integer ] [MAXTRANS integer ] [ STORAGE storage_ clause ]
Suppression du segment
DROP INDEX [ schema.] index
Page 153
Copyright G. Mopolo-Mok
Page 154
Copyright G. Mopolo-Mok
Gnralits
Oracle cr automatiquement ces segments si la zone de tri (paramtre SORT_AREA_SIZE) s'avre petite plusieurs Ordres SQL provoquent des tris : Group by, Ordrer by, Oprateurs ensemblistes, Distinct, Merge join, ...
Exemple 1 : Cration dun tablespace pour stocker les donnes temporaires (tri)
CREATE TABLESPACE temp_ts DATAFILE ts_temp_01.dbf SIZE 20M TEMPORARY AUTOEXTEND ON;
pour augmenter les performances, il est utile de les sparer des segments de donnes C'est la cration d'un Utilisateur Oracle qu'on lui indique son segment temporaire. Il est maintenant possible depuis la 7.3 de crer un tablespace temporaire pour requtes ncessitant les tris
Exemple 2 : Cration d'un tablespace temporaire (pour stocker les tables temporaires voir les donnes de tri)
SQL>CREATE TEMPORARY TABLESPACE temp_tab_ts TEMPFILE ts_temp_tab01.dbf SIZE 20M AUTOEXTEND ON;
Page 155
Copyright G. Mopolo-Mok
Page 156
Copyright G. Mopolo-Mok
Exemple 3: Cration d'une table temporaire de session (ligne supprime la fin de la session) CREATE GLOBAL TEMPORARY TABLE itineraire_vol ( startdate DATE, enddate DATE, cost NUMBER) ON COMMIT PRESERVE ROWS TABLESPACE temp_tab_ts ;
Gnralits
il permet d'effectuer des Lectures consistantes, d'annuler les transactions et de recouvrer la base de donnes. une entre Rollback contient les informations sur le fichier Rollback, le numro du bloc et l'tat avant les entres rollback sont stockes aussi dans le buffer redo log puis dans le fichier Redo Log En cas de crash, Oracle restaure d'abord les RBS En cas de problme, Oracle annule les transactions non commites une extension dun RBS peut contenir les blocs de N transactions : les blocs rollback d'une transaction sont chans. Depuis la version 9i deux approches de cration de RBS existent : cration manuelle ou automatique (Tablespace dAnnulation : TSA)
Page 157
Copyright G. Mopolo-Mok
Page 158
Copyright G. Mopolo-Mok
Syntaxe CREATE [ PUBLIC ] ROLLBACK SEGMENT rollback_segment [ TABLESPACE tablespace ] [ STORAGE ( [ OPTIMAL Exemple CREATE PUBLIC ROLLBACK SEGMENT r5 TABLESPACE ts_rbs STORAGE (INITIAL 100K MINEXTENTS 3 MAXEXTENTS 10 NEXT 100K OPTIMAL 400K ) ; PUBLIC : segment accessible par toutes les instances dune mme base OPTIMAL : Taille optimale du RBS obtenue par Oracle par dsallocation dynamique
NOTE :
par dfaut un RBS cr est inactif Copyright G. Mopolo-Mok Administration Oracle 10G Page 160 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 159
Syntaxe DROP ROLLBACK SEGMENT robllack_segment Exemple DROP ROLLBACK SEGMENT r5;
Reprsentation schmatique
E1 E2 E3
NOTE : Page 161 Copyright G. Mopolo-Mok Administration Oracle 10G Page 162
Le paramtre OPTIMAL permet de dsallouer dynamiquement une extension dun RBS manuel Copyright G. Mopolo-Mok Administration Oracle 10G
Activation explicite des RBS (paramtre ROLLBACK_SEGMENTS dans le fichier d'initialisation init.ora ou par une commande SQL)
ROLLBACK_SEGMENTS=(r1, r2, r3, r4) sql>ALTER ROLLBACK SEGMENT r1 ONLINE ;
Page 164 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 163
Copyright G. Mopolo-Mok
OFFLINE
RBS supprim donnes recouvres avec succs RBS RBS mis online mis offline
INVALID
ONLINE Transaction distribue rsolue transaction en suspend rsolue PB rseaux transaction suspendue
RBS Supprim
Page 165
Copyright G. Mopolo-Mok
Page 166
Copyright G. Mopolo-Mok
b) Affichage des informations sur les RBS partir de la vue dba_segments SELECT segment_name, tablespace_name, bytes, blocks, extents FROM dba_segments WHERE segment_type = ROLLBACK;
SEGMENT_NAME TABLESPACE_NAME BYTES BLOCKS EXTENTS
100 725 50 50 50 50
4 15 2 2 2 2
Exemples :
a) Informations sur les RBS SELECT segment_name, tablespace_name, status FROM sys.dba_rollback_segs ; SELECT segment_name, status FROM dba_rollback_segs; SEGMENT_NAME SYSTEM RB_TEMP RB1 RB2 RB3 RB4 Page 167 TABLESPACE_NAME SYSTEM SYSTEM ROLLBACK_DATA ROLLBACK_DATA ROLLBACK_DATA ROLLBACK_DATA STATUS ONLINE OFFLINE ONLINE ONLINE ONLINE ONLINE
c) Transaction actives dans les RBS SELECT distinct name, xacts "Transactions actives" FROM v$rollname vr, v$rollstat vs WHERE vs.usn = vr.usn and xacts != 0; NAME RB1 Transactions actives 1
Copyright G. Mopolo-Mok
Page 168
Copyright G. Mopolo-Mok
La requte suivante permet d'accder aux statistiques : sql> SELECT class, count FROM v$waitstat WHERE class IN ('system undo header', 'system undo block', 'undo header', 'undo blocs'); class System undo header system undo block undo header undo block count 2089 633 1235 942
Calculer le nombre de demandes de buffers sql>SELECT sum(value) "Buffers demands" FROM v$sysstat WHERE name in ('db block gets', 'Consistent Gets'); Buffers demands 929530 Ratio par class ci = classi / sum(value) Si le ratio est > 1% alors ajouter des RBS
Page 169 Copyright G. Mopolo-Mok Administration Oracle 10G Page 170
Copyright G. Mopolo-Mok
Page 171
Copyright G. Mopolo-Mok
Page 172
Copyright G. Mopolo-Mok
Plan
5.1 Gnralits 5.2 Les Privilges
Introduction Les privilges Systmes Les privilges Objets
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
I
PLAN
5.5 Les utilisateurs
La politique de licences d'Oracle Les Utilisateurs prdfinis Les diffrents mode d'authentification Cration d'un Utilisateur Modification d'un Utilisateur Suppression d'un Utilisateur Affectation des droits un Utilisateur
5.6 L'audit
Intrt de l'audit Types d'audit et modes d'activation Audit Systme Audit objet La table aud$
Page 175
Copyright G. Mopolo-Mok
Page 176
Copyright G. Mopolo-Mok
5.1 Gnralits
I
Intrtoduction
Un privilge donne le droit d'excuter certaines commandes SQL ou le droit d'accder certaines ressources
PROFILES
Oracle possde deux types de privilges : les privilges systmes et les privilges objets.
UTILISATEURS
Un privilge peut tre affect (retir) un Utilisateur, un Rle ou tous les utilisateurs (PUBLIC)
Page 177
Copyright G. Mopolo-Mok
Page 178
Copyright G. Mopolo-Mok
Page 179
Copyright G. Mopolo-Mok
Page 180
Copyright G. Mopolo-Mok
Exemple GRANT ALTER TABLESPACE TO scott ; GRANT CREATE USER, CREATE SESSION TO scott WITH ADMIN OPTION ; 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 Copyright G. Mopolo-Mok Administration Oracle 10G
Objets concerns table, squence table , vue, VM procdure, fonction, package,type user, oprateur, indextype, library table table, vue,VM
directory table, vue, snapshot, sequence table ou vue vue, type user
INDEX INSERT
droit de crer un index (ne peut tre affect un rle) droit dinsrer
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
Syntaxe REVOKE { object_priv | ALL [ PRIVILEGES ] } ON [ schema. ] object FROM { user | role | PUBLIC } [CASCADE CONSTRAINTS ] Notes CASCADE CONSTRAINTS : semploie avec le privilge REFERENCES, supprime les contraintes d'intgrit mises. Retrait dun privilge et WITH GRANT OPTION: Si un utilisateur U1 a affect un privilge P1 U2 et U2 l'a affect U3, le retrait U2 entrane le retrait U3 : le retrait se fait en cascade. Exemples sql>REVOKE DELETE ON Bonus FROM scott ; sql>REVOKE UPDATE ON emp FROM public; sql>REVOKE REFERENCES ON scott.emp FROM dupont ; sql>REVOKE ALL ON bonus FROM PUBLIC ;
Page 185
Copyright G. Mopolo-Mok
Page 186
Copyright G. Mopolo-Mok
Principales Colonnes de vues ci-dessus GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRANT
Page 187
: utilisateur ayant reu le privilge : propritaire de la table : nom de la table : Nom de la colonne concern : Utilisateur ayant affect le privilge : privilge affect : privilge reu.
Administration Oracle 10G
Tous les droits sur toutes les colonnes des tables dans la base SELECT * FROM sys.dba_col_privs ;
Copyright G. Mopolo-Mok
Page 188
Copyright G. Mopolo-Mok
Plan
Gnralits Cration d'un rle Modification d'un rle Suppression d'un rle Affectation de privilges un rle Affectation d'un rle un utilisateur Rles prdfinis Informations sur les rles
Gnralits
Dfinition Un rle est un concept Oracle qui permet de regrouper plusieurs privilges et / ou rles afin de les affecter ou retirer en bloc un utilisateur et / ou un rle. un rle facilite la gestion des privilges l'affectation d'un rle un utilisateur peut se faire sous Oracle ou travers l'OS pour des raisons de scurit, un mot de passe peut tre assign un rle Oracle fournit un certain nombre de rles par dfaut (connect, resource, dba, exp_full_database, imp_full_data_base, select_catalog_role, delete_catalog_role / execute_catalog_role, ) pour crer un rle, il faut avoir le privilge "CREATE ROLE"
Page 189
Copyright G. Mopolo-Mok
Page 190
Copyright G. Mopolo-Mok
Gnralits (suite)
Assignation de privilges aux utilisateurs : SANS ROLES
Privilge 1 Utilisateur 1
Privilge 2
Privilge 3
...
Privilge N
Utilisateur 2
Exemple
sql> CREATE ROLE rl_etudiant ; Utilisateur 2 sql> CREATE ROLE rl_admin_backup; sql> CREATE ROLE rl_admin_secu IDENTIFIED BY secu_pass ;
...
Privilge N Page 191 Copyright G. Mopolo-Mok
Page 192
Copyright G. Mopolo-Mok
Exemple
sql> ALTER ROLE ROLE rl_etudiant IDENTIFIED EXTERNALLY ; sql> ALTER ROLE rl_admin_backup IDENTIFIED BY backup_pass; sql> ALTER ROLE rl_admin_secu NOT IDENTIFIED; Page 193 Copyright G. Mopolo-Mok Administration Oracle 10G Page 194 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 195
Copyright G. Mopolo-Mok
Page 196
Copyright G. Mopolo-Mok
Affectation d'un Rle au niveau Oracle GRANT role to user [WITH ADMIN OPTION] Lutilisateur ayant reu le rle avec WITH ADMIN OPTION peut le raffecter, supprimer ou modifier.
Page 197
Copyright G. Mopolo-Mok
Page 198
Copyright G. Mopolo-Mok
Rles prdfinis
PRIVILEGES AFFECTES AU ROLE ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER tous les privilges (annexe A6) WITH ADMIN OPTION SELECT ANY TABLE, BACKUP ANY TABLE, INSERT, DELETE AND UPDATE ON tables SYS.INCVID, SYS.INCFIL, SYS.INCEXP BECOME USER, WRITEDOWN (trusted Oracle) Privilge dexcuter les procdures du dictionnaire Privilge de consulter tout le dictionnaire Oracle Privilge de supprimer la table daudit aud$
RESOURCE
DBA exp_full_database
Recovery_catalog_owner Fournit les privilges pour le propritaire du catalogue de recouvrement Aq_administrator_role Fournit les privilges pour ladministration des Queue Snmpagent Founit les privilges utiles lagent SNMP dentreprise manager
Page 199
Copyright G. Mopolo-Mok
Page 200
Copyright G. Mopolo-Mok
Rles prdfinis
. Les rles CONNECT, RESOURCE, DBA correspondent aux anciens
NOTES :
. laffectation des rles RESOURCE et DBA un utilisateur entrane un GRANT unlimited tablespace
Page 201
Copyright G. Mopolo-Mok
Page 202
Copyright G. Mopolo-Mok
Gnralits
Un profile est un concept Oracle qui permet l'administrateur d'une base de contrler la consommation des ressources systmes et des mots de passes Il existe un profile par dfaut appel DEFAULT. Il est par dfaut affect un utilisateur lors de sa cration Les limites du profile DEFAULT sont positionnes UNLIMITED Le profile DEFAULT ne peut tre supprim. Les limites de ce profile peuvent par contre tre modifies activation et contrle des limites :
dans le fichier initSID.ora positionner : RESOURCE_LIMIT = TRUE ou dynamiquement faire sous sqlplus par exemple : SQL> ALTER SYSTEM SET resource_limit = true;
Exemple 3 : liste des rles actifs pour la session sql>SELECT * FROM session_roles ;
ROLE MONITORER DBA EXP_FULL_DATABASE IMP_FULL_DATABASE RL_ADMIN_SECU
Page 203
Copyright G. Mopolo-Mok
Page 204
Copyright G. Mopolo-Mok
Failed_login_attempts : nombre dchecs avant le blocage du compte password_life_time : dure en jours avant lexpiration du mot de passe password_reuse_time : dure en jours avant la rutilisation dun password password_reuse_max : nombre de modif du password avant rutilisation password_lock_time : dure en jours du verrouillage dun compte password_grace_time : dlai de tolrance du password avant son expiration password_verify_function : fonction de contrle des mots de passes
Copyright G. Mopolo-Mok Administration Oracle 10G
Page 205
Copyright G. Mopolo-Mok
Page 206
Exemple 1
CREATE PROFILE pf_secretaire LIMIT sessions_per_user 2 cpu_per_session unlimited cpu_per_call 1000 logical_reads_per_session unlimited logical_reads_per_call 100 idle_time 30 connect_time 480 ;
Exemple 2
CREATE profile pf_agent LIMIT sessions_per_user 2 cpu_per_session unlimited cpu_per_call 1000 composite_limit 20000 private_sga 32K ;
Exemple 3
CREATE PROFILE pf_admin PASSWORD_LIFE_TIME 200 LIMIT PASSWORD_REUSE_MAX DEFAULT PASSWORD_REUSE_TIME UNLIMITED CPU_PER_SESSION UNLIMITED
Page 207 Copyright G. Mopolo-Mok Administration Oracle 10G Page 208 Copyright G. Mopolo-Mok Administration Oracle 10G
Session_per_user : Nombre maximum de sessions par utilisateurs Logical_read_per_session: blocs de donnes en lecture par session cpu_per_session : temps CPU max par session en % de scondes cpu_per_call : temps CPU pour un appel (en acs de parse, execute ou fetch) en % de secondes connect_time : temps coul maximum (en minutes) idle_time : temps maximum d'inactivit. private_sga : taille prive de SGA alloue un utilisateur unlimited : limite de la ressource illimite default : positionne la limite par dfaut de la ressource
Copyright G. Mopolo-Mok Administration Oracle 10G
Failed_login_attempts : nombre dchecs avant le blocage du compte password_life_time : dure en jours avant lexpiration du mot de passe password_reuse_time : dure en jours avant la rutilisation dun password password_reuse_max : nombre de modif du password avant rutilisation password_lock_time : dure en jours du verrouillage dun compte password_grace_time : dlai de tolrance du password avant son expiration password_verify_function : fonction de contrle des mots de passes
Copyright G. Mopolo-Mok Administration Oracle 10G
Page 209
Page 210
Exemple 2 :
Page 211
Copyright G. Mopolo-Mok
Page 212
Copyright G. Mopolo-Mok
Syntaxe
ALTER RESOURCE COST [ CPU_PER_SESSION integer ] [ CONNECT_TIME integer ] [ LOGICAL_READS_PER_SESSION integer] [ PRIVATE_SGA integer ]
Exemple 1 :
SQL> ALTER RESOURCE COST cpu_per_session 100 connect_time 1; T = 100*cpu_per_session_consomm + 1*connect_time_consomm + 0*logical_reads_per_session + 0*private_sga
Exemple 2 :
SQL> ALTER RESOURCE COST logical_reads_per_session connect_time 2 0;
Page 213
Copyright G. Mopolo-Mok
Exemple
sql>DROP PROFILE pf_secretaire CASCADE ;
Page 215 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 216
Copyright G. Mopolo-Mok
Gnralits
La notion d'utilisateur est fondamentale pour accder aux donnes d'une base Oracle Le site d'un client Oracle doit tre tenu jour au niveau des licences :
les paramtres de init.ora pour le contrle de la licence ( valeurs par dfaut 0) : license_max_session, license_sessions_warning, license_max_users
Si la limite en nombre de sessions est illimite conserver les valeurs par dfaut
Exemple 2 :
sql> SELECT resource_name, limit FROM resource_cost RESOURCE_NAME CPU_PER_SESSION LOGICAL_READS_PER_SESSION CONNECT_TIME PRIVATE_SGA UNIT_COST 100 2 0 0
Exemple 3 :
sql> SELECT resource_name, limit FROM user_resource_limits RESOURCE_NAME COMPOSITE_LIMIT SESSIONS_PER_USER CPU_PER_SESSION CPU_PER_CALL LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_CALL IDLE_TIME CONNECT_TIME PRIVATE_SGA
Page 217 Copyright G. Mopolo-Mok
Seuls les utilisateurs avec le privilge RESTRICTED SESSION peuvent se connecter en cas de dpassement de la limite en cas de mise en oeuvre de l'architecture parallle, chaque instance ses limites mais la somme doit quivaloir la somme des limites du site visualisation des limites des licences v$license
Copyright G. Mopolo-Mok Administration Oracle 10G
Gnralits (suite)
Contrle de la limitation du nombre d'utilisateurs
Au moment du lancement d'une instance LICENSE_MAX_USERS = 80 Au moment ou l'instance tourne sqlplus >ALTER SYSTEM SET LICENSE_MAX_USERS=100;
Gnralits (suite)
Authentification des utilisateurs
Globalement partir de lannuaire LDAP CREATE USER scott IDENTIFIED GLOBALLY AS CN=scott,OU=division1,O=oracle,C=US
Page 219
Copyright G. Mopolo-Mok
Page 220
Copyright G. Mopolo-Mok
Gnralits (suite)
Utilisateur et schma
A chaque utilisateur est associ un schma Les objets appartenant un schma sont : tables, index, vues, squences, synonymes, clusters, database links, fonction, procdures et package, ... La commande CREATE SCHEMA AUTHORIZATION permet crer en un trait des tables, des vues et d'attribuer des droits. En cas d'erreur, un ROLLBACK peut tre effectu. Exemple :
CREATE SCHEMA AUTHORIZATION ottocar CREATE TABLE VOL ( vol# number(4) primary key, plnum number(4) references pilote, vd char(12), va char(12)) CREATE TABLE PILOTE ( pl# number(4) primary key, plnom varchar2(20), sal number (5, 2) not null) GRANT select, update(plnom, sal) ON pilote TO tintin;
Page 221
Copyright G. Mopolo-Mok
Page 222
Copyright G. Mopolo-Mok
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
Page 225
Copyright G. Mopolo-Mok
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
Page 227
Copyright G. Mopolo-Mok
Page 228
Exemple 3 : toutes les informations sur tous les utilisateurs SELECT username, user_id, password, default_tablespace, temporray_tablespace, created FROM user_users;
USERNAME USER_ID PASSWORD DEFAULT_ TEMPORARY_ TABLESPACE TABLESPACE USER_DATA USER_DATA SYSTEM SYSTEM USER_DATA CREATED PROFILE
Exemple 5 : Informations sur les quotas de tous les utilisateurs slq> SELECT * FROM dba_ts_quotas;
TABLESPACE_ NAME USER_DATA USERNAME BYTES MAX_ BYTES 0 -1 40960 -1 BLOCKS 0 20 MAX_ BLOCKS -1 -1
SYSTEM 5 D4DF7931AB130E37 SCOTT 8 F8948444 402B67 DUPONT 13 38BD25849F 94015A OPS$MOPOLO 22 EXTERNAL OTTOCA 23 5006630829F6EA0E
TEMPORARY_DATA 26/09/95 DEFAULT TEMPORARY_DATA 26/09/95 DEFAULT SYSTEM SYSTEM 29/04/96 DEFAULT 05/05/96 DEFAULT
Exemple 4 : Informations sur les quotas de lutilisateur actuel SELECT * FROM user_ts_quotas;
TABLESPACE_NAME USER_DATA TTEST BYTES 0 0 MAX_BYTES 552960 20480 BLOCKS MAX_BLOCKS 0 0 270 10
Max_bytes : quota disque en octets autoriss pour un utilisateur bytes blocks : nombre d'octets dj consomms : nombre de blocs dj consomms
Page 229
Copyright G. Mopolo-Mok
Page 230
Copyright G. Mopolo-Mok
5.6 Laudit
I
L'objectif de l'audit est de contrler les accs mal intentionns ou non autoriss la base Rgles pour un bon audit
Bien choisir le lieu de mise en oeuvre de l'audit
Audit au niveau Oracle(audit_trail=TRUE). Avantage :
audit cibl grce SQL possibilit d'exploiter les outils Oracle pour gnrer des rapports
la commande Alter System Kill Session ... permet de supprimer une session. select sid, serial#, username FRom v$session ; sid 13 14 Serial# 8 11 Username tintin sadm
Bien cibler l'audit pour en limiter le volume Avoir une dmarche d'audit par raffinement successif protger la table d'audit (sys.aud$) en limitant l'affectation du privilge DROP ANY TABLE crer les vues d'audit en excutant le script cataudit.sql (catnoaudit.sql permet de les supprimer)
Page 232 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 231
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Types daudits
par utilisateur : auditer l'activit d'un ou plusieurs utilisateurs par session (en cas de succs ou d'insuccs) : Pour N activations d'une action dans une session, conserver une seule trace par accs (en cas de succs ou d'insuccs) : Pour N activations d'une action dans une session, conserver N trace
Types de surveillance
Audit sur les ordres SQL et les privilges systmes Audit sur les objets.
Page 233
Copyright G. Mopolo-Mok
Page 234
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Exemples 1
Options alter system cluster database link index not exists procedure
Exemples 2 auditer les ordres select, insert, delete pour toutes les tables et le privilge execute any procedure par accs et ceci en cas d'chec. sql> AUDIT select table, insert table, delete table, execute any procedure BY ACCESS WHENEVER NOT SUCCESSFUL ; ou sql> AUDIT table, execute any procedure BY ACCESS WHENEVER NOT SUCCESSFUL ;
Page 235
Copyright G. Mopolo-Mok
Page 236
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
user view
Page 237
Page 238
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Exemple 1
Exemple 2 auditer l'insertion, la modification et la slection sur la table haddock.dept par accs. sql> AUDIT insert, update, select ON haddock.dept BY ACCESS ;
Page 239
Copyright G. Mopolo-Mok
Page 240
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Exploitation de laudit
la table de base AUD$ contient l'ensemble des informations sur les audits les vues daudit :Elles sont cres en lanant le script cataudit.sql et supprimes en lanant catnoaudit.sql
USER_AUDIT_CONNECT USER_AUDIT_RESOURCE DBA_AUDIT_DBA DBA_PRIV_AUDIT_OPTS DBA_TAB_AUDIT_OPTS ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS USER_OBJ_AUDIT_OPTS, DBA_OBJ_AUDIT_OPTS USER_AUDIT_TRAIL, DBA_AUDIT_TRAIL USER_AUDIT_STATEMENT, DBA_AUDIT_STATEMENT USER_AUDIT_OBJECT, DBA_AUDIT_OBJECT DBA_AUDIT_EXISTS, USER_AUDIT_SESSION, DBA_AUDIT_SESSION USER_TAB_AUDIT_OPTS
Note :
procdure est mis ici pour: procdure, fonction ou package remplace toutes les options d'audit des objets Administration Oracle 10G Page 242 Copyright G. Mopolo-Mok Administration Oracle 10G
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
LOGOFF_TIME LOGOFF_LREAD LOGOFF_PREAD LOGOFF_LWRITE LOGOFF_DLOCK COMMENT_TEXT SESSIONID ENTRYID STATEMENTID RETURNCODE PRIV_USED OBJECT_LABEL SESSION_LABEL
Page 243
Copyright G. Mopolo-Mok
Page 244
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Exemple
Problme Nous souhaitons effectuer laudit sur les activits suspectes suivantes : - l'affectation des mots de passes, tablespace et quotas pour certains utilisateurs ont ts modifis sans autorisation - un trop grand nombre de verrous exclusifs est pos - des lignes sont supprimes arbitrairement de la table emp de l'utilisateur tintin Nous suspectons pour cela les utilisateurs rackham et lama. Actions effectues par l'administrateur
sql>AUDIT ALTER, INDEX, RENAME ON DEFAULT BY SESSION ; sql> CREATE VIEW tintin.employes AS SELECT * FROM tintin.emp ; sql>AUDIT session BY rackham, lama; sql>AUDIT alter user ; sql>AUDIT lock table BY ACCESS WHENEVER SUCCESSFUL ; sql> AUDIT delete ON tintin.emp BY ACCESS WHENEVER SUCCESSFUL ;
Exemple (suite)
Actions effectues par rackham sql>ALTER USER tintin QUOTA 0 ON USER_DATA; sql>DROP USER dupont ; Actions effectues par lama sql>LOCK TABLE tintin.emp IN EXCLUSIVE MODE ; sql>DELETE FROM tintin.emp WHERE mgr=7698 ; sql>ALTER TABLE tintin.emp ALLOCATE EXTENT (SIZE 100K) ; sql>CREATE INDEX tintin.idx_ename ON tintin.emp(ename); sql>CREATE PROCEDURE tintin.fire_employe(idemp NUMBER) AS BEGIN DELETE FROM tintin.emp WHERE empno=idemp; END; / sql>EXECUTE tintin.fire_employe(7902);
Page 245
Copyright G. Mopolo-Mok
Page 246
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Exemple (suite)
Visualisation des options daudit des ordres SQL actives
sql>SELECT * FROM dba_stmt_audit_opts ; USER_NAME AUDIT_OPTION LAMA RACKHAM CREATE SESSION CREATE SESSION ALTER USER LOCK TABLE SUCCESS BY ACCESS BY ACCESS BY ACCESS BY ACCESS FAILURE BY ACCESS BY ACCESS BY ACCESS NOT SET
Exemple (suite)
Visualisation des options daudit objet sur la table tintin.emp sql>SELECT * FROM dba_obj_audit_opts where owner = TINTIN AND object_name like EMP%;
OWNER OBJECT_ OBJECT_TY ALT AUD COM DEL GRA IND INS LOC ... NAME TINTIN EMP TINTIN EMPLOYES TABLE VIEW -/- -/- -/- A/- -/- -/- -/--/- -/- -/- -/- -/- -/-... -/- -/- -/- -/- -/- -/- -/--/- S/S -/- -/- -/- -/-...
Visualisation des options daudit objet par dfaut sql>SELECT * FROM all_def_audit_opts;
ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE S/S -/- -/-/- -/S/S -/- -/- S/S -/-/-/-/-
Notes : -/- : Audit non positionn (ni en cas de succs ou d'insuccs) S/- : Option d'audit positionne par Session A/- : Option d'audit positionne par accs (en cas de succs) S/S : Par session ( en cas de succs ou d'insuccs)
Page 247
Copyright G. Mopolo-Mok
Page 248
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Exemple (suite)
Listing des lignes daudit gnres par l'audit des ordres et audit des objets sql>SELECT username, obj_name, action_name, ses_actions FROM dba_audit_object; USERNAME OBJ_NAME ACTION_NAME LAMA LAMA LAMA EMP EMP IDX_ENAME SES_ACTIONS
Syntaxe
Listing des lignes d'audit pour l'audit des sessions sql>SELECT username, logoff_time, logoff_lread, logoff_pread, logoff_lwrite, logoff_dlock FROM dba_audit_session ;
LAMA RACKHAM 11/05/96
USERNAME LOGOFF_ LOGOFF_ TIME LREAD LOGOFF_ PREAD LOGOFF_ LOGOFF_ LWRITE DLOCK
57
Exemples sql>NOAUDIT session; sql>NOAUDIT role; sql>NOAUDIT session BY tintin, cyclone ; sql>NOAUDIT delete any table; sql>NOAUDIT select any table, insert any table, delete any table, execute any procedure; sql>NOAUDIT select table, insert table, delete table; sql>NOAUDIT ALL ; sql>NOAUDIT ALL PRIVILEGES ; Note : le privilge requis est AUDIT SYSTEM
Page 249
Copyright G. Mopolo-Mok
Page 250
Copyright G. Mopolo-Mok
5.6 Laudit
I
5.6 Laudit
I
Syntaxe NOAUDIT object_opt [, object_opt] ... ON {[ schema.]object | DEFAULT} [ WHENEVER [ NOT ] SUCCESSFUL ] Mots cls et paramtres
object_opt object DEFAULT SUCCESSFUL : option dobjet daudit dsactiver : nom de l'objet sur lequel l'audit va tre dsactiv : dsactiver les options d'audit par dfaut : dsactiver l'audit uniquement en cas de succs
Exemples sql>NOAUDIT select ON tintin.emp ; sql>NOAUDIT select ON tintin.emp WHENEVER SUCCESSFUL; sql>NOAUDIT ALL ON tintin.emp ; sql>NOAUDIT ALL ON DEFAULT ; Note : le privilge requis est AUDIT SYSTEM
Page 251
Copyright G. Mopolo-Mok
Page 252
Copyright G. Mopolo-Mok
6 Sauvegarde et restauration
I
6.1 Gnralits
I
Plan
6.1 Gnralits 6.2 Sauvegarde en mode NOARCHIVELOG 6.3 Sauvegarde en mode ARCHIVELOG 6.4 Restauration d'une Base de donnes 6.5 Recovery Manager (voir Annexe)
Bien 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
Page 254
Copyright G. Mopolo-Mok
6.1 Gnralits
I
Hypothses
nous acceptons de perdre les donnes l'arrt de la base n'est pas gnant
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
Sauvegarde et Restauration
Segments rollback
La commande Alter database archivelog begin backup Multiplexage des fichiers Redo log et de contrle
NOTE : Il faut aussi dfinir une priodicit des sauvegardes adaptes aux besoins.
Page 255
Copyright G. Mopolo-Mok
Page 256
Copyright G. Mopolo-Mok
1. liste les noms des fichiers sauvegarder . Fichiers de donnes SELECT * FROM dba_data_files . Fichiers de contrles SELECT * FROM v$parameter WHERE name LIKE 'control_files'; . Les fichiers Redolog SELECT * FROM v$logfile 2. Arrter la base normalement (shutdown normal ou immediate) et utiliser les commandes de lOS (tar, cp, rcp, dump, copy, arj, ...) pour effectuer les sauvegardes 3. redmarrer la base aprs un CONNECT sys as sysdba SQL >startup 4. Effectuer en fonction de la quantit des donnes qu'on accepte de perdre des exports rguliers et dimensionner si utile les fichiers Redo log en fonction
Page 257
Copyright G. Mopolo-Mok
Page 258
Copyright G. Mopolo-Mok
Hypothses
Nous n'acceptons pas de perdre des donnes Nous n'acceptons pas l'arrt total de la base
Backup partiel
1. Backup dun Tablespace OFFLINE en 4 tapes Etape 1 : . Identifier les fichiers appartenant au tablespace X sql>SELECT file_name FROM sys.dba_data_files WHERE tablespace_name = X; Etape 2 : . Mettre le Tablespace X OFFLINE NORMAL sql>ALTER TABLESPACE X OFFLINE NORMAL ; Etape 3 : . Utiliser les commandes de lOS (cp, tar, dump, ...) pour sauvegarder effectivement les fichiers sur bande ou disque Etape 4 : . Ractiver le Tablespace X sql>ALTER TABLESPACE X ONLINE ;
Modes de sauvegarde
Backup complet la cration ou intervalles rguliers (suivre les mmes tapes qu'en mode noarchivelog) Backup partiel de la base Archivage automatique ou manuelle de fichiers REDO LOG Backup du fichier de contrle en cas de modification de la structure de la base (ajout dun tablespace ...)
Page 259
Copyright G. Mopolo-Mok
Page 260
Copyright G. Mopolo-Mok
2. Backup dun Tablespace (TS) ONLINE en 4 tapes Etape 1 : . Identifier les fichiers appartenant au tablespace X sql>SELECT file_name FROM sys.dba_data_files WHERE tablespace_name = X; Etape 2 : . Indiquer Oracle le dbut de la sauvegarde de X sql>ALTER TABLESPACE X BEGIN BACKUP ; Etape 3 : . Utiliser les commandes de l'OS (cp, tar, dump, ...) pour sauvegarder effectivement les fichiers sur bande ou disque Etape 4 : . Informer Oracle de la fin de la sauvegarde du tablespace X sql>ALTER TABLESPACE X END BACKUP ; Note : La sauvegarde de plusieurs TS peut se faire squentiellement ou en parallle BEGIN BACKUP X BEGIN BACKUP Y sauvegardes - END BACKUP X END BACKUP Y.
Page 261 Copyright G. Mopolo-Mok Administration Oracle 10G
2. Sauvegarde du fichier de contrle Base Ouverte sql>ALTER DATABASE BACKUP CONTROLFILE TO TRACE ; # Gnre le texte de la commande de cration du fichier de # contrle ou sql>ALTER DATABASE BACKUP CONTROLFILE nomfic [REUSE] ; # Gnre une copy du fichier de contrle
1. Les EXPORTS sont - t - ils ncessaires en mode ARCHIVELOG 2. Pourquoi est - t - il inutile de sauvegarder les REDO LOG en mode NOARCHIVELOG
Page 262
Copyright G. Mopolo-Mok
Synthse
BASE X
Pourquoi restaurer ?
Au moment d'une panne, les blocs de donnes modifis par une transaction peuvent ne pas avoir t crits dans les fichiers REDO LOG Le fichier REDO LOG peut contenir des donnes non valides Les fichiers Redo log, les fichiers d'archives, les fichiers de contrles ou les fichiers de donnes peuvent tre corrompus ou perdus
Tablespace System
Tablespace User
Tablespace DATA
Fichier de Contrle
FichierS1
Fichieru1
FichieruN
Fichierd1
FichierdN
Sauvegarde du fichierdN
Fichier Fichiers redo log d'Archives Administration Oracle 10G Page 264 Copyright G. Mopolo-Mok Administration Oracle 10G
Copyright G. Mopolo-Mok
Restauration dinstance
Survient la suite de l'arrt brutal des process tches de fond (DBWR, LGWR, SMON, PMON, ...) est valable aussi bien en mode avec ou sans archive. Oracle ralise automatiquement les tapes suivantes :
application de l'image aprs application de l'image avant.
+
Image Image aprs Image aprs aprs
Donnes non commites Donnes commites Annulation des transactions non commites
Page 265
Copyright G. Mopolo-Mok
Page 266
Copyright G. Mopolo-Mok
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
Page 268
Copyright G. Mopolo-Mok
UNTIL BACKUP CONTROLFILE Utiliser la sauvegarde du fichier de contrle la place du fichier courant
TABLESPACE tablespace DATAFILE filename LOGFILE filename fichier CONTINUE [DEFAULT] CANCEL
Page 269
recouvrer uniquement un tablespace recouvrer un fichier de donnes continuer le recouvrement avec ce continuer en appliquant les redo automatiquement finir la restauration base sur l'annulation
Administration Oracle 10G Page 270
Copyright G. Mopolo-Mok
Copyright G. Mopolo-Mok
Dans quels tats doivent tre les fichiers REDO LOG et d'ARCHIVES ?
Page 271
Copyright G. Mopolo-Mok
Page 272
Copyright G. Mopolo-Mok
. Recouvrement incomplet
- Le recouvrement incomplet est ncessaire : . en cas de perte des fichiers Redolog . en cas de suppression accidentelle d'une table . ... - Le recouvrement incomplet peut tre bas sur : . l'annulation (UNTIL CANCEL). En cas de perte d'un ou plusieurs groupes de Redo Log, le recouvrement s'arrte sur le fichier Redo Log le plus rcent . le temps (UNTIL TIME date) : connaissant la date approximative laquelle est survenue une panne, on souhaite rcuprer l'activit sur la base d'avant cette date . le SCN (UNTIL CHANGE scn) : connaissant un Systme Change Number donn, on souhaite rcuprer toutes les transactions consistantes d'avant ce SCN
Page 273
Copyright G. Mopolo-Mok
Page 274
Copyright G. Mopolo-Mok
Type de fichiers endommags Fichiers Fichiers Fichiers Fichiers de de redo log redo log contrles donnes archives X
Type de fichiers endommags Fichiers Fichiers Fichiers Fichiers de de redo log redo log contrles donnes archivs X X X X X X
X X
sans effet sans effet Recrer un fichier de contrle si arrt normal sinon partir d'un backup complet sans effet
X X
X X X
Faire un recouvresans effet ment incomplet Recouvrer le fichier sans effet de contrle puis recouvrement incomplet Recouvrer le fichier Recouvrer le de contrle puis fichier manquant recouvrement incomplet
Page 277
Copyright G. Mopolo-Mok
Page 278
Copyright G. Mopolo-Mok
Exemple 2 : perte dun fichier de donnes en ARCHIVELOG occasionnant l'arrt de la base 1. Si la base est encore ouverte, faire un shutdown abort sql>connect sys as sysdba; sql> shutdown abort ; 2. A partir de la sauvegarde la plus rcente, reconstruire uniquement les fichiers perdus (vers l'ancienne localisation ou vers une nouvelle localisation) $ cp ... sql> startup mount nombase pfile=path/initsid.ora sql>ALTER DATABASE RENAME ... 3. Effectuer un recouvrement de donnes avec la commande RECOVER en donnant les noms des archives appliquer sql>RECOVER DATABASE ... 4. Ouvrir normalement la base sql>ALTER DATABASE OPEN ;
Page 280
Copyright G. Mopolo-Mok
Exemple 3 : perte dun fichier redo log : plusieurs solutions sont possibles 1. Les Fichiers Redo Log sont multiplexs 1.1 si le Fichier Redo Log est le fichier courant, provoquer un SWITCH LOG FILE pour passer au groupe suivant. sql>ALTER SYSTEM SWITCH LOGFILE ; 1.2 Supprimer les fichiers problme et les remplacer par la copie (miroir) 2. Un groupe de fichiers Redo Log entier est Inaccessible 2.0 Recrer le groupe endommag 2.1 Le groupe n'tait pas actifs alors une rparation Base ouverte est possible 2.2 Si le groupe tait courant, arrter la base 2.3 Redmarrer la base et faire si ncessaire un RECOVER DATABASE UNTIL CANCEL
Page 281 Copyright G. Mopolo-Mok Administration Oracle 10G
Exemple 4 : un utilisateur a supprim accidentellement ses tables (mode avec Archive) 1. Sauvegarder la base existante (BE) 2. Reconstruire une copie temporaire de la base (BT) - Faire une Recouvrement bas sur le temps (date approximative de la suppression de donnes) sql>RECOVER DATABASE UNTIL TIME date; 3. Export les donnes supprimes accidentellement $ exp system/manager owner=nomuser 4. Supprimer la base temporaire $ rm ... /* des fichiers de donnes, contrles et Redo log*/ 5. Revenir sur la base courante (BE) et importer les donnes de l'utilisateurs $ imp system/manager fromuser=nomuser touser=nomuser
Page 282
Copyright G. Mopolo-Mok
Plan
7. Outils d'administrations et les NLS
7.1 Export/Import
7.1.1 Gnralits 7.1.2 Export 7.1.3 Import 7.1.4 Les tablespaces transportables
Exemple 5 : un tablespace a t supprim accidentellement 1. Sauvegarder la base existante 2. Reconstruire une copie temporaire de la base - Faire une Recouvrement bas sur le temps (date approximative de la suppression de donnes) ou le SCN sql>RECOVER DATABASE UNTIL TIME date; ou sql>RECOVER DATABASE UNTIL CHANGE scn ; 3. Exporter les donnes du tablespace supprimes accidentellement $ exp system/manager ... 4. Supprimer la base temporaire $ rm ... /* des fichiers de donnes, contrles et redos*/ 5. Revenir sur la base courante et importer les donnes exportes $ imp system/manager...
7.2 Sqlloader 7.3 Sqlplus 7.4 Les NLS 7.5 Oracle Entreprise Manager(OEM)
7.5.1 Objectifs 7.5.2 Rappel sur les outils d'administration Oracle 7.5.3 L'Architecture de OEM 7.5.4 Les composants OEM
7.5.4.1 La console OEM 7.5.4.2 Les services communs de OEM 7.5.4.3 Outils d'administration bases de donnes OEM
Page 283
Copyright G. Mopolo-Mok
Page 284
Copyright G. Mopolo-Mok
7.1 Export/Import
I
7.1.1 Gnralits
I
Plan
7.1.1 Gnralits 7.1.2 Export 7.1.3 Import
Page 285
Copyright G. Mopolo-Mok
Page 286
Copyright G. Mopolo-Mok
7.1.1 Gnralits
I
7.1.2 Export
I
1. tables Export dune ou N tables dans un schma. Le DBA peut exporter les tables de N schma
2. Utilisateur ou schma Export de tous les objets appartenant au schma c'est dire un utilisateur (tables, vues, squences, donnes, privilges, index, ...) 3. La base entire
FICHIERS OS
Export de toute la base sauf les objets de lutilisateur SYS dOracle. Il est utile davoir le privilge EXP_FULL_DATABASE.
Les bases de donnes Oracle source et cible peuvent tre : - la mme - diffrentes sur une mme machine - diffrentes sur deux machines diffrentes ...
Page 287 Copyright G. Mopolo-Mok Administration Oracle 10G Page 288
Pourquoi est - t - il interdit de travailler SYS ? Pourquoi est - t - il si fondamental davoir le privilge EXPORT_FULL_DATABASE ?
Copyright G. Mopolo-Mok
7.1.2 Export
I
7.1.2 Export
I
Mode FULL
schma de la table donnes de la table grant sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues profiles catalogue de rplication cot des ressources rles dfinition des RBS Options d'audit systme privilges systmes dfinition des tablespaces quotas sur les tablespaces dfinition des utilisateurs Administration Oracle 10G
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
Page 289
Copyright G. Mopolo-Mok
7.1.2 Export
I
7.1.2 Export
I
Nom paramtre
userid buffer file compress grants indexes rows constraints log full owner tables record lenght inctype record parfile consistent statistics help
taille(bytes) de l'enreg. du fichier OS dpendant non incrmental, cumulatif, complet ? none utile si inctype est mis fichier des paramtres type de stat gnrer en import aide Y none estimate N
7.1.2 Export
I
7.1.2 Export
I
Nom paramtre
Direct feedkack Consistent filesize resumables
Transport_tablespace impport des mtadonnes des TS N Tablespace Datafile TS transporter fichier transporter
en mode commande
$ exp [username/passwd] [param1 = value 1] ... [paramN = value N] Notes : 1) un des paramtres au moins doit tre mis explicitement 2) si table, owner ou full n'est pas mis, il s'agit d'exporter l'utilisateur qui fait l'export
Page 294 Copyright G. Mopolo-Mok Administration Oracle 10G
7.1.2 Export
I
7.1.2 Export
I
Page 295
Copyright G. Mopolo-Mok
Page 296
Copyright G. Mopolo-Mok
7.1.2 Export
I
7.1.2 Export
I
Page 297
Copyright G. Mopolo-Mok
Page 298
Copyright G. Mopolo-Mok
7.1.2 Export
I
7.1.2 Export
I
Description
Backup uniquement des objets modifis depuis le dernier backup Incrmental ou Cumulatif ou Complet. Backup uniquement des objets modifis depuis le dernier backup Cumulatif ou Complet Backup de tous les objets.
Backup cumulatif
Backup complet
Page 299
Copyright G. Mopolo-Mok
Page 300
Copyright G. Mopolo-Mok
7.1.2 Export
I
7.1.2 Import
I
1. tables
objet export
table1, table2
import dune ou N tables vers un schma. Le DBA peut importer les tables de N schma 2. Utilisateur ou schma
Import de tous les objets appartenant au schma c'est dire un utilisateur (tables, vues, squences, donnes, privilges, index) 3. La base entire
table1, table2,table5,table6 (fusion des fichiers d'export incrmental) table1, index1 table2 , table3, table4 table5, table6
7.1.3 Import
I
7.1.3 Import
I
Mode FULL
schma de la table donnes de la table grant sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues profiles catalogue de rplication cot des ressources rles dfinition des RBS Options d'audit systme privilges systmes dfinition des tablespaces quotas sur les tablespaces dfinition des utilisateurs Administration Oracle 10G
Utilisation de lImport
sassurer que le script catview.sql a t excut sassurer quon a les privilges qu'il faut :
import d'objet dans son propre schma :
avoir les privilges utiles pour crer les objets concerns. Exemple : import d'une table, avoir le privilge Create table avoir les quotas ncessaires sur les tablespaces
Mode Utilisateur
schma de la table donnes de la table grant fait sur les tables Index sur la table contraintes sur la table trigger de la table Types utilisateurs Tables imbriques Indexes d'autres users Triggers d'autres users cluster databases link job queue refresh group squences snapshot snapshot log procdure stocke synonymes privs Les vues
importer les 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
Page 303
Copyright G. Mopolo-Mok
7.1.3 Import
I
7.1.3 Import
I
Nom paramtre
buffer charset commit destroy feedback file fromuser full grants help ignore inctype indexes indexfile log mls* record lenght rows show tables touser userid
Page 305
Copyright G. Mopolo-Mok
Page 306
Copyright G. Mopolo-Mok
7.1.3 Import
I
7.1.3 Import
I
Nom paramtre
Destroy Indexfile
Skip_unusable_index Ignorer la maintenance dindex unitilisables feedkack affiche la progression toute les N lignes
N 0
toid_novalidate sauter la validation des id filesize statistics resumables Compile taille max de chaque fichier vidage importer les statistiques suspension en cas derreurs despace Compiler les procdures Y N
Transport_tablespace impport des mtadonnes des TS N Tablespace Datafile TS transporter fichier transporter
en mode commande
$ imp [username/passwd] [param1 = value 1] ... [paramN = value N] Notes : 1) un des paramtres au moins doit tre mis explicitement 2) si table, owner ou full ne sont pas mis, il s'agit d'importer vers l'utilisateur qui fait l'export
Administration Oracle 10G Page 308 Copyright G. Mopolo-Mok Administration Oracle 10G
7.1.3 Import
I
7.1.3 Import
I
Page 309
Copyright G. Mopolo-Mok
7.1.3 Import
I
7.1.3 Import
I
La commande dIMPORT IMP username/passwd INCTYPE={SYSTEM|RESTORE} SYSTEM : importe les objets systmes les plus rcents grce l'export incrmental le plus rcent. Pas d'import des objets et donnes des utilisateurs. RESTORE : importe tous les objets et donnes des utilisateurs en appliquant les export incrmentaux dans un ordre chronologie ascendant (du plus vieux export au plus rcent)
Page 311 Copyright G. Mopolo-Mok Administration Oracle 10G
Exemple
temps ... COM1 ... CUM1 INC1 INC2
$ imp system/manager INCTYPE=SYSTEM FULL=Y FILE=INC2 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=COM1 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=CUM1 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=INC1 $ imp system/manager INCTYPE=RESTORE FULL=Y FILE=INC2
Page 312 Copyright G. Mopolo-Mok Administration Oracle 10G
Gnralits
Depuis la version 8i Oracle permet de dplacer un Tablespace d'une base vers une autre Cette mthode de transport de donnes est plus rapide que le traditionnel Import/Export Le systme d'exploitation et le matriel de la machine source doivent tre le mme que celui de la machine cible les bases source et cible doivent avoir la mme taille de bloc et mme CHARACTER SET Avant de dplacer un tablespace, il doit tre mis READONLY puis le schma des donnes contenus dans le tablespace doit tre export.
Page 313
Copyright G. Mopolo-Mok
Page 314
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
Plan
Gnralits Fonctionnement de SQLLOADER Le langage de dfinition de donnes de SQLLOADER Le mode chargement traditionnel et direct Les exemples
7.2 Sqlloader
I
7.2 Sqlloader
I
Gnralits
permet de charger des donnes de format ASCII, EBCDIC, DBASE, EXCEL, .. dans une base Oracle peut traiter diffrents formats d'enregistrements (enregistrements champs fixes et/ou variables encapsuls ou non avec des dlimiteurs spciaux) permet partir de plusieurs enregistrements physiques de crer une ligne logique dans la base permet partir d'un enregistrement physique de crer plusieurs lignes logiques dans la base permet de charger des donnes depuis un disque ou une bande permet d'acclrer le chargement de donnes grce au chemin DIRECT Fournit des rapports prcis de chargement
Fonctionnement de SQLLOADER
Fichier de contrles (contient la description du chargement)
SQLLOADER (extraction des champs) accept SQLLOADER (traitement de la clause WHEN) Slectionn Fichier DISCARD (enregistrements dtruits : clause WHEN) SGBD Oracle
rejet
dtruit
Rejet
Page 317
Copyright G. Mopolo-Mok
Page 318
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
Le fichier de donnes
Le fichier de donnes contient les enregistrements charger Un enregistrement dans le fichier est compos de N champs spars par des sparateurs (virgule, espace, ...) Un champ peut tre :
numrique ou de type chane de caractres fixe ou variable encapsul entre des ctes ou libre. Exemple "Rackham le Rouge"
Exemple 1:
champ 1 CHAR de 7 T I R A L A N C T K I H
M A
Page 319
Copyright G. Mopolo-Mok
Page 320
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
Le fichier de contrle
Ce fichier contient les commandes de description des enregistrements : C'EST LE LDD DE SQLLOADER Ce fichier peut contenir aussi les donnes Il est possible de rcuprer conditionnellement des enregistrements CLAUSE WHEN Notes : Nous reviendrons plus loins sur le LDD de SQLLOADER
Le fichier LOG
Ce fichier contient les informations suivantes :
1) Informations d'en-tte (version Sqlloader, la date, ...) 2) Les informations gnrales
nom des fichiers utiliss (fichiers de contrle, de donnes, bad et discard) la commande lance avec ces arguments bilan du chargement
3) les informations sur les tables charges 4) les informations sur le fichier de donnes (lignes traites, rejetes, dtruites, ...) 5) Rsum des statistiques (espace utilis, dbut / fin de chargement, temps coul, cpu consomme, ...).
Page 321
Copyright G. Mopolo-Mok
Page 322
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
Le fichier Discard
Ce fichier reoit les enregistrements valides mais ne vrifiant pas la condition derrire la clause WHEN son format est celui du fichier de donnes son extension est nomfic.dis
La commande SQLLOADER
Syntaxe
sqlldr username/passwd [param1=value1] ... [paramN=vauleN]
description
spficie le fichier de rejet taille max de la bind array nom fichier de contrle nom du fichier ayant les enreg. mode direct Ficher des enreg. dtruits Max de lignes rejetable nbre d'erreurs d'insertion utile en option parallle Nbre max d'enreg. logique charger Fichier d'info. sur le chargement fichier de paramtre chargement concurrent NB Lignes dans le bind array suppression de messages Enreg. sauter depuis le dbut nom utilisateur + passwd
valeur / dfaut
nomcontrolfile.BAD os dpendant ctl.if nomcontrolefile.dat nomcontrolfile.date
Le fichier bad
ce fichier reoit deux types d'enregistrements :
ceux non dcrits dans le fichier de Contrle et ceux violant les contraintes de la Base Oracle
Page 323
Copyright G. Mopolo-Mok
Page 324
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
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] } [, ...] ) [INTO TABLE ...] [BEGINDATA] donnes
Page 325
Copyright G. Mopolo-Mok
Page 326
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
Mot cl
OPTIONS (options) positionne des options de sqlloader (load, skip, errors, rows, binsize, silent) INFILE | INDDN indique le nom du fichier de donnes. Si * alors les donnes sont la fin du fichier de contrle (clause BEGIN DATA) Fichier de donnes = suites de caractres. Newline indique la fin de chaque enregistrement sqlloader utilise le systme de gestion de fichiers de l'OS hte sqlloader utilise un enreg. de taille fixe
STREAM
RECORD FIXED
APPEND | REPLACE | INSERT mode d'insertion d'enregistrements dans la base RECLEN n longueur max d'un enregistrement logique
CONCATENATE n | CONTINUEIF construction d'un enreg. logique partir de plusieurs enreg. physiques INTO TABLE
Page 327
7.2 Sqlloader
I
7.2 Sqlloader
I
Exemple (suite)
Exemple 3 :
Fichier de contrle : ulcase3.ctl -- Variable length, delimited and enclosed data format LOAD DATA INFILE * APPEND INTO TABLE EMP FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY " (empno, ename, job, mgr, hiredate DATE(20) "DD-Month-YYYY", sal, comm, deptno CHAR TERMINATED BY :, projno, loadseq SEQUENCE(MAX,1) ) BEGINDATA 7782, "Clark", "Manager", 7839, 09-June-1981, 2572.50,, 10:101 7839, "King", "President", , 17-November-1981, 5500.00,, 10:102 7934, "Miller", "Clerk", 7782, 23-January-1982, 920.00,, 10:102 7566, "Jones", "Manager", 7839, 02-April-1981, 3123.75,, 20:101 7499, "Allen", "Salesman", 7698, 20-February-1981, 1600.00, 300.00, 30:103 7654, "Martin", "Salesman", 7698, 28-September-1981, 1312.50, 1400.00, 30:103 7658, "Chan", "Analyst", 7566, 03-May-1982, 3450,, 20:101
Page 330 Copyright G. Mopolo-Mok Administration Oracle 10G
300.00 1400.00
Page 329
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
Exemple (suite)
Exemple 4 :
Fichier de contrle : ulcase4.ctl LOAD DATA INFILE "ulcase4.dat" DISCARDFILE "ulcase4.dis" DISCARDMAX 999 REPLACE CONTINUEIF (1) = * INTO TABLE EMP ( EMPNO POSITION(01:04) INTEGER EXTERNAL, ENAME POSITION(06:15) CHAR, JOB POSITION(17:25) CHAR, MGR POSITION(27:30) INTEGER EXTERNAL, SAL POSITION(32:39) DECIMAL EXTERNAL COMM POSITION(41:48) DECIMAL EXTERNAL, DEPTNO POSITION(50:51) INTEGER EXTERNAL, HIREDATE POSITION(52:60) INTEGER EXTERNAL) Fichier de donnes: utlcase4.dat *7782 CLARK MANAGER 7839 2572.50 -10 2512-NOV-85 *7839 KING PRESIDENT 5500.00 2505-APR-83 *7934 MILLER CLERK 7782 920.00 2508-MAY-80
Exemple (suite)
Exemple 5:
Fichier de contrle : ulcase5.ctl
LOAD DATA INFILE ulcase5.dat BADFILE ulcase5.bad DISCARDFILE ulcase5.dis REPLACE INTO TABLE EMP (EMPNO POSITION(1:4) INTEGER EXTERNAL, ENAME POSITION(6:15) CHAR, DEPTNO POSITION(17:18) CHAR, MGR POSITION(20:23) INTEGER EXTERNAL) INTO TABLE PROJ -- PROJ has two columns, both not null: EMPNO and PROJNO WHEN PROJNO != (EMPNO POSITION(1:4) INTEGER EXTERNAL, PROJNO POSITION(25:27) INTEGER EXTERNAL) -- 1er projet INTO TABLE PROJ WHEN PROJNO != (EMPNO POSITION(1:4) INTEGER EXTERNAL, PROJNO POSITION(29:31) INTEGER EXTERNAL) -- 2 me projet INTO TABLE PROJ WHEN PROJNO != ' ' (EMPNO POSITION(1:4) INTEGER EXTERNAL, PROJNO POSITION(33:35) INTEGER EXTERNAL) -- 3 me projet Page 332 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 331
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
Exemple (suite)
Exemple 5 (suite) :
Fichier de donnes: utlcase5.dat 1234 1234 2664 5321 2134 2414 6542 2849 4532 1244 123 1453 BAKER JOKER YOUNG OTOOLE FARMER LITTLE LEE EDDS PERKINS HUNT DOOLITTLE MACDONALD 10 10 20 10 20 20 10 xx 10 11 12 25 9999 9999 2893 9999 4555 5634 4532 4555 9999 3452 9940 5532 101 777 425 321 236 236 102 294 40 665 132 200 102 888 abc 55 456 456 321 40 133 103 999 102 40 40 14 456
le chemin traditionnel :
utilise la commande INSERT vrifient toutes les contraintes d'intgrit
le chemin direct
courcircuite le moteur SQL acclre les chargements dans certains cas.
Page 333
Copyright G. Mopolo-Mok
Page 334
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
chemin direct
Page 335
Copyright G. Mopolo-Mok
Page 336
Copyright G. Mopolo-Mok
7.2 Sqlloader
I
7.2 Sqlloader
I
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
Page 338
Copyright G. Mopolo-Mok
7.3 Sqlplus
I
7.5 Sqlplus
I
Gnralits
Outil d'administration Graphique supporte les principaux GUI du march Serveur manager permet :
d'effectuer les tches traditionnelles d'administration de travailler en mode concurrent (N fentres peuvent tre ouvertes) d'administrer une ou plusieurs bases de centraliser l'administration de BD distribues d'excuter dynamiquement des Ordre SQL et PL/SQL
Commande
ARCHIVELOG CONNECT DESCRIBE DISCONNECT EXECUTE EXIT HELP HOST MONITOR
Page 339
Copyright G. Mopolo-Mok
Page 340
Plan
Gnralits Activation des NLS au niveau de l'OS Activation des NLS au niveau d'une instance Modification des NLS au niveau d'une session Modification des NLS au niveau d'une fonction SQL
Gnralits
Les NLS permettent de mettre en oeuvre une ou plusieurs applications dans des langues diffrentes L'entreprise et le march se mondialisent certains pays pratiquent plusieurs langues les NLS permettent de prendre en compte les particularits d'un pays (monnaie, date, ...) les NLS permettent d'avoir les messages Oracle dans la langue de son choix sqlnet assure la conversion des jeux de caractres entre le poste client et la base de donnes si les jeux sont diffrents le posistionnement d'un jeu de caractres peut se faire : au niveau OS, instance, session ou fonction SQL
Page 341
Copyright G. Mopolo-Mok
Page 342
Copyright G. Mopolo-Mok
Exemple
NLS_LANG=AMERICAN_AMERICA.US7ASSCII NLS_LANG=FRENCH_FRANCE.ISO8859P1 NLS_LANG=FRENCH_CANADA.WE8DEC NLS_LANG=JAPANESE_JAPAN.JA16EUC
Notes
- positionnement dpendant de l'environnement (NLS_LANG est une variable d'environnement) - NLS_LANG efface et remplace les positionnements faits avec NLS_LANGUAGE et NLS_TERRITORY - un ALTER SESSION est excut la connexion
Copyright G. Mopolo-Mok Administration Oracle 10G Page 344
Page 343
Copyright G. Mopolo-Mok
Exemple NLS_LANGUAGE=FRANCE format date caractre dcimal sparateur de millier Notes: : JJ/MM/AA :, :.
Exemple
NLS_DATE_FORMAT=DD RM YY NLS_DATE_LANGUAGE=FRENCH NLS_ISO_CUYRRENCY=FRANCE
a) la valeur de ce paramtre est fixe dans init.ora b) la valeur par dfaut est AMERICA
NLS_NUMERIC_CHARACTERS =,.
...
Page 346 Copyright G. Mopolo-Mok Administration Oracle 10G
Page 345
Copyright G. Mopolo-Mok
En gnral
Les formats des dates et des nombres sont fournis avec les fonctions : to_date, to_char, to_number de SQL.
Exemple
NLS_ISO_CUYRRENCY=FRANCE
Exemple
ALTER SESSION SET NLS_LANGUAGE=FRENCH NLS_TERRITORY=FRANCE NLS_DATE_FORMAT=DD RM YY NLS_DATE_LANGUAGE=FRENCH NLS_NUMERIC_CHARACTERS=,. NLS_CURRENCY=FF NLS_ISO_CURRENCY=FRANCE ;
Page 348 Copyright G. Mopolo-Mok Administration Oracle 10G
NLS_NUMERIC_CHARACTERS =,. -- DG
NLS_ISO_CUYRRENCY=FF 1234 9G999 => 1.234 3,234.44 L9G999D99 => FF3.234,44
Page 347
Copyright G. Mopolo-Mok
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
Page 350
Copyright G. Mopolo-Mok
Exemple SELECT to_number(13.000,00, 99G999D99, nls_numeric_characters=.,) FROM dual; SELECT to_date(1-MAY-89, DD-MON-YY, nls_date_language=FRENCH) FROM dual; SELECT to_char(hiredate, DD/MON/YYYY, nls_date_language=FRENCH) FROM EMP ; SELECT ename FROM emp ORDER BY NLSSORT(ename, nls_sort=GERMAN); SELECT ename FROM emp ORDER BY nls_lower(ename, nls_sort=GERMAN);
TO_CHAR :
Page 351
Copyright G. Mopolo-Mok
Page 352
Copyright G. Mopolo-Mok
8. Loption procdurale
I
OEM
PLAN
8.1 Gnralits 8.2 Les procdures et fonctions 8.3 Les packages 8.4 Les Triggers
Page 353
Copyright G. Mopolo-Mok
Page 354
Copyright G. Mopolo-Mok
8.1 Gnralits
I
Loption procdurale se compose de : procdures, fonctions, packages et triggers permet Oracle de stocker des traitements (code PL*SQL uniquement) au niveau du moteur base de donnes Elle est maintenant intgr dans le noyau Oracle C/S 2me Gnration : Jusqu 40 % des traitements transposables du cot serveur Activation de loption procdurale
Dfinition
Unit de traitement PL/SQL pouvant contenir des Ordres SQL, des variables, des constantes, des curseurs et des exceptions
Une fonction la diffrence d'une procdure rend une valeur une procdure ou une fonction peut tre :
excute en interactif sous SQL*PLUS ou SQL*DBA appele depuis une application appele depuis une autre procdure ou fonction
une procdure ou une fonction comporte deux parties cres en mme temps :
la partie spcification (l'entte) la partie implmentation (le corps)
Page 355
Copyright G. Mopolo-Mok
Page 356
Copyright G. Mopolo-Mok
changes rduits entre l'application et la base une compilation pour plusieurs excutions moins d'E/S, procdure dj dans la zone des requtes
...
code du programme .... creer_emp(...); ... code du programme ... liste_emp(...); ...
Page 357 Copyright G. Mopolo-Mok
Economie despace mmoire : une seule copie en SGA mais des excutions par plusieurs applications possibles une plus grande productivit :
volutivit : la modification du corps d'une procdure n'implique pas celle des applications qui l'appelle centralisation des modifications
Page 358
Copyright G. Mopolo-Mok
Page 361
Copyright G. Mopolo-Mok
Page 362
Copyright G. Mopolo-Mok
8.3 Packages
I
8.3 Packages
I
Gnralits
Dfinition Un package Oracle est l'image du package ADA une unit de traitement PL/SQL nomme, regroupant des procdures, des fonctions avec des curseurs et des variables qu'elles utilisent ensemble Un package comporte deux parties : la partie spcification (PACKAGE SPECIFICATION) et la partie implmentation (PACKAGE BODY) Les composants d'un package peuvent tre publics ou privs : Les composants publics sont dclars au niveau de la partie spcification et les composants privs au niveau la partie implmentation
Gnralits (suite)
Package spcification
nom_var1 type_var 1 ; nom_var2 type_var2 ; nom_proc1(...) ; nom_proc2(...); nom_fonct1(...); nom_proc1(...) BEGIN nom_var1 := nom_var_2; ... END nom_proc2(...) BEGIN nom_proc1(...); ... END nom_fonct1(...) BEGIN ... END
Package body
Application N
... code programme ... Nom_pack.nom_var2 = ...; ret=Nom_pack.nom_fonct1(...) ... code programme
NOTE: Lappel des objets dun package en dehors de ce dernier doit se faire en prfixant l'objet du nom du package.
8.3 Packages
I
8.3 Packages
I
Syntaxe de cration de la partie implmentation CREATE [OR REPLACE] PACKAGE BODY [schma.]nom_package {IS | AS} corps PL/SQL corps PL/SQL ::= dclaration de variable | dclaration d'enregistrement | dclaration d'execption | dclaration de table PL/SQL | corps de fonction | corps de curseur | corps de procdure ... Mot cl ou paramtre schma nom_package corps PL/SQL Description Nom du schma auquel le package appartient Nom du package dans le schma dclaration de variables, ..., corps fonctions, des procdures, ...
Syntaxe de cration de la partie spcification CREATE [OR REPLACE] PACKAGE [schma.]nom_package {IS | AS} spficification PL/SQL spcification PL/SQL ::= dclaration de variable | dclaration d'enregistrement | dclaration d'execption | dclaration de table PL/SQL | dclaration de fonction | dclaration de procdure ... Mots cls ou paramtres schma nom_package spcification PL/SQL
Page 365
Description Nom du schma auquel le package appartient Nom du package dans le schma dclaration de variables, fonctions, procdures, ... globales
Administration Oracle 10G
Note : Les noms utiliss dans la partie spcification doivent tre les mmes que dans la partie implmentation.
Page 366 Copyright G. Mopolo-Mok Administration Oracle 10G
Copyright G. Mopolo-Mok
8.3 Packages
I
8.3 Packages
I Cration
PROCEDURE pnouveau_sal (empid IN NUMBER, taux IN NUMBER); FUNCTION pemp_info(empid IN number) RETURN emp%ROWTYPE;
END gestion_employes ;
END gestion_employes;
Page 367
Copyright G. Mopolo-Mok
Page 368
Copyright G. Mopolo-Mok
8.3 Packages
I
8.3 Packages
I
3. La procdure excuter rside - t -elle dj en SGA? sinon la charger et rcompiler 4. Excuter la procdure.
Page 369
Copyright G. Mopolo-Mok
Page 370
Copyright G. Mopolo-Mok
8.3 Packages
I
8.3 Packages
I
Listes des vues utiles . ALL_ERRORS, USER_ERRORS, DBA_ERRORS . ALL_SOURCE, USER_SOURCE , DBA_SOURCE . USER_OBJECT_SIZE, DBA_OBJECT_SIZE
Exemple 2 : Vue USER_ERRORS Visualisation des erreurs de compilation de lutilisateur courant sql> SELECT name, type, line, position, text FROM user_errors WHERE name = EMP_INFO; Exemple 3 : vue USER_OBJECT_SIZE Espace consomm par la procdure EMP_INFO sql> SELECT name, sorce_size+parsed_size+ code_size + error_size "Taille totale" FROM user_object_size WHERE name = 'EMP_INFO';
Exemple 1 : Vue USER_SOURCE Visualisation du code source et du nombre de lignes de la procdure de l'utilisateur courant sql> SELECT line, text FROM user_source WHERE name = 'EMP_INFO';
Page 371
Copyright G. Mopolo-Mok
Page 372
Copyright G. Mopolo-Mok
Package dbms_session : gestion des infos. de session Procdures : close_database_link, reset_package, set_label, set_nls,
set_mls_label_format, set_role, set_sql_trace, unique_session_id, is_role_enabled, set_close_cached_open_cursors, free_unused_user_memory
Nom du package
dbms_alert dbms_describe dbms_job run
Procdures
register, remove, signal, waitany, waitone, set_defaults describe_procedure submit, remove, change, what, next_date, sys as sysdba, broken,
Package dbms_ddl : Analyse et compilation des objets du schma Procdures : alter_compile, analyze_object Package dbms_transaction : Gestion des transactions Procdures : advise_commit, advise_rollback, advise_nothing, commit,
commit_comment, commit_force, read_only, read_write, rollback, rollback_force, rollback_savepoint, savepoint, use_rollback_segment, purge_mixed, begin_discrete_transaction, local_transaction_id, step_id
Permet d'utiliser les mcanismes de allocate_unique, request, verrouillage convert, release, sleep Permet d'utiliser les mcanismes de allocate_unique, request, verrouillage convert, release, sleep permet la communication intersession dans une mme instance create_pipe, pack_message, send_message, receive_message, next_item_type, unpack_message remove_pipe, purge, reset_buffer, unique_session_name sizes, keep, unkeep, aborted_request_threshold set_module, set_action, set_client_info, read_module read_client_info set_sql_trace_in_session
permet de conserver des objets dans shared pool area permet de grer les infos d'une application des fins de performance ou d'audit permet d'activer des utilitaires systmes tel tracer des requtes
Page 373
Page 374
Copyright G. Mopolo-Mok
Gnralits
Un trigger BD est une action qui se dclenche avant ou aprs un vnement. Les triggers BD Oracle sont des blocs PL/SQL stocks dans la base pouvant se dclencher automatiquement avant ou aprs l'excution d'un Ordre SQL d'insertion, modification ou suppression sur une table. Reprsentation schmatique
Nom du package
dbms_space dbms_sql
Procdures
dbms_refresh dbms_snapshot
Application cliente
UPDATE TABLEX ... INSERT INTO TABLEX ... DELETE FROM TABLEX ...
dbms_defer, permet construire et administrer des dbms_defer_sys, appels de procdures distantes dbms_defer_query dbms_repcat permet d'utilier les mcanismes de rplication statique
dbms_repcat_auth permet de crer des utilisateurs ayant , dbms_repcat_ le privilge de rpliquer admin
Page 375
Copyright G. Mopolo-Mok
Page 376
Copyright G. Mopolo-Mok
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
Description
supprime le contenu du trigger et le recr Nom du propritaire Nom du trigger dclencher d'abord le trigger puis excuter l'ordre excuter d'abord l'ordre puis dclencher le trigger dclencher le trigger respectivement la suppression, modification ou insertion. table concerne dclenche le trigger pour chaque ligne traite dclenche pour les lignes ayant satisfait la condition bloc de code PL/SQL pour le trigger
Administration Oracle 10G
BEFORE
UPDATE INSERT
AFTER
DELETE
Note : Un dclenchement conditionnel(clause WHEN) est possible. La clause WHEN ne peut tre pose qu'en valuation ligne par ligne
Page 377 Copyright G. Mopolo-Mok Administration Oracle 10G
Copyright G. Mopolo-Mok
Limite des triggers 1 trigger par Type par Table (12 possibilits). Exemple (idem pour INSERT et DELETE): BEFORE UPDATE FOR EACH ROW BEFORE UPDATE --statement_level AFTER UPDATE FOR EACH ROW AFTER UPDATE -- statement_level pas de commande DDL dans le corps du trigger (pas de CREATE TABLE ...) pas de gestion de transaction (COMMIT, ROLLBACK, SAVEPOINT) dans le corps du trigger mme pas travers une procdure appele pas de dclaration de variables de type LONG ou LONG ROW Ordre dvaluation des lignes pas garantie (ne pas faire dpendre le dclenchement d'un trigger de l'ordre d'valuation)
Page 379 Copyright G. Mopolo-Mok Administration Oracle 10G
Exemples 1 : Cration d'un trigger qui permet d'assurer la contrainte d'intgrit de mise jour et de suppression d'une cl dans la table matre et d'assigner la cl trangre NULL dans la table ayant la cl trangre. <UPDATE - DELETE - SET NULL>
CREATE TRIGGER updateset AFTER DELETE OR UPDATE OF deptno ON dept FOR EACH ROW -- Avant de supprimer une ligne dans la table dept ou modifier la cl dans -- cette table. Mettre les cls trangres NULL BEGIN IF UPDATING AND :OLD.deptno != :NEW.deptno OR DELETING THEN UPDATE emp SET emp.deptno = NULL WHERE emp.deptno = :old.deptno ; END IF ; END; /
Page 380
Copyright G. Mopolo-Mok
Exemples 2
Cration d'un trigger qui permet (lors d'une suppression, modification ou insertion) de mettre jour automatiquement le montant de la commande pour chaque ligne de commande enregistre. CREATE TRIGGER modif_commande AFTER DELETE OR UPDATE OR INSERT ON item FOR EACH ROW DECLARE BEGIN IF DELETING OR UPDATING OR INSERTING THEN UPDATE ord SET ord.total = ord.total + :NEW.itemtot - :OLD.itemtot WHERE ord.ordid = DECODE(:NEW.ordid, NULL, :OLD.ordid, :NEW.ordid); END IF; END; /
Etapes
Notes a) un trigger doit avoir moins de 60 lignes b) utiliser les procdures pour tendre la taille dun trigger c) pour un trigger ligne avec la clause WHEN, ce dernier ne sera excut que si la clause WHEN est vrife d) en cas d'utilisation de trigger pour alimenter une table distante, le commit deux phases est assur e) si N trigger du mme type (INSERT, UPDATE, DELETE) existe, Oracle les excute tous sans un ordre particulier f) un trigger ne peut lire les donnes impropres g) un trigger ne peut violer les contraintes d'intgrit d'une table
Page 381
Copyright G. Mopolo-Mok
Page 382
Copyright G. Mopolo-Mok
Domaines dapplications
fournir des mcanismes sophistiqus d'audit renforcer les contraintes dintgrit non supportes par Oracle en natif mettre en oeuvre des rgles complexes de gestion par exemple : changer la catgorie d'un employ si son salaire change renforcer la scurit : interdire par exemple la modification des salaires les jours fris et les weekend assurer la rplication synchrone distance de tables propager des actions sur dautres tables en fonction des vnements survenus
Page 383
Copyright G. Mopolo-Mok
Page 384
Copyright G. Mopolo-Mok
Exemple
sql>SELECT trigger_type, triggering_event, table_name FROM user_triggers WHERE trigger_name = UPDATESET;
TRIGGER_TYPE TRIGGERING_EVENT TABLE_NAME 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