Instance
3 types de fichiers :
Est dynamique,
Sa taille est dfinie par le paramtre SGA_MAX_SIZE
Son allocation et son suivi sont effectus sous la forme de granules, par les
composant de la SGA :
=> allocation e mmoire virtuelle contigu,
=> taille des granules dfinie en fonction de la valeur totale estime de
SGA_MAX_SIZE
Le Cache librairy :
conserve des informations sur les dernires instructions SQL et PL/SQL utilises,
permet le partage des instructions communes,
est gre par lalgorithme LRU (list recent use),
est compose de 2 structures :
=> Zone SQL partage
=> Zone PL/SQL partage
sa taille dpend du dimensionnement de la zone de mmoire partage.
Le tampon de journalisation :
Enregistre toutes les modifications apportes aux blocs de donnes de la base.
Sa principale fonction est la rcupration des donnes.
Les modifications enregistres constituent des entres de journalisation.
Les entres de journalisation contiennent des informations permettant de reconstruire
des modifications,
La taille du tampon est dfinie par le paramtre LOG_BUFFER.
La mmoire PGA :
Est rserve chaque processus utilisateur qui se connecte une base de donnes
Oracle.
Est allou lors quun processus Oracle est cre,
Nest utilis que par un seul processus.
Structure de processus :
Le processus utilisateur :
Le processus serveur :
Est un programme qui entre directement en interaction avec le serveur Oracle.
Rpond aux appels gnrs et renvoie les rsultats.
Peut tre un serveur ddi ou un serveur partag.
Les processus darrire-plan :
Grent et appliquent les relations entre les structures physiques et les structures
mmoire :
=> processus darrire-plan obligatoires : DBWn, pmon, smon, lgwr, ckpt
=> processus darrire-plan facultatifs : ARCn (archivage), CJQ0 (coordinateur job
queue), Dnnn (rpartiteur), LCKn (verrous dinstance), LMDn (verrous distance),
lmon (verrous globaux), LMS (RAC Global cache service), Pnnn (Processus esclave
parallel Query ), QMNn (Adevenced Queuing), reco (rcuprateur), Snnn (serveur
partag).
Le processus log writer (LGWR) effectue une opration dcriture dans les cas suivants :
Validation,
Un tier du cache est occup,
La journalisation atteint 1 Mo,
Toutes les 3 secondes,
Avant que le processus DBWn ne procde une opration dcriture.
La structure logique :
dfinit le mode dutilisation de lespace physique dune base de donnes.
Possde une hirarchie compose de tablespaces, de segments, dextents et de
blocs.
Tablespace
Fichiers de donnes
Segment Segment
Extent Blocs
BD (1 ou plusieurs Tablespace(s) ),
1 Tablespace (1 ou plusieurs datafiles _ fichiers de donnes),
1 Tablespace (1 ou plusieurs segments),
1 segment est compos dextents.
1 extent est compos de blocs logiques
(1 bloc = plus petite unit de lecture et dcriture).
2 Outils dadministration
Outils Description
Oracle Universal Permet dinstalle, de mettre niveau ou de supprimer des
Installer (OUI) composants logiciels :
./runInstaller (mode intractif)
./runInstaller responsefile myResponsfile -silent (mode non
intractif)
Outils Description
Oracle Database Outil graphique, en interaction avec OUI, pour crer, supprimer,
Configuration modifier une base
Assistant
SQL*plus Utilitaire permettrant daccder des donnes dune base de
donnes Oracle
Oracle Enterprise Interface utilisateur permettant dadministrer, de surveiller et de
Manager rgler une ou plusieurs bases de donnes
1) Sous unix :
$ORACLE_HOME/dbs/initSID.ora : fichier PFILE.
$ORACLE_HOME/dbs/spfileSID.ora : fichier SPFILE.
2) Sous Windows :
%ORACLE_HOME%\database\initSID.ora : fichier PFILE.
%ORACLE_HOME%\database\spfileSID.ora : fichier SPFILE.
On ne peut pas diter le fichier SPFILE, car contenant du binaire. Mais on peut le modifier
par :
3) un fichier PFILE doit indiquer quun fichier SPFILE doit tre utilis :
SPFILE = /database/startup/spfileDBA1.ora
/\ STARTUP OPEN
|| MOUNT Tous les fichiers
ouverts
NOMOUNT Fichier de contrle ||
ouvert
SHUTDOWN Instance dmarre SHUTDOWN \/
NOMOUNT :
a) pour cration base de donnes,
b) recration de fichiers de contrle.
MOUNT :
Usage :
a) renommer des fichiers de donnes,
b) activer ou dsactiver des options darchivage de journalisation en ligne.
c) Effectuer une rcupration complte de la base de donnes.
OPEN :
Accs la base de donnes.
Alter database :
STARTUP RESTRICT ;
ALTER SYSTEM ENABLE RESTRICTED SESSION ;
STARTUP RESTRICT ;
ALTER SYSTEM ENABLE RESTRICTED SESSION ;
Mode darrt A I T N
Permet de nouvelles connexions Non Non Non Non
Attend la fin des cessions en cours Non Non Non Oui
Attend la fin de la transaction en cours Non Non Oui Oui
Applique un point de reprise et ferme les fichiers Non Oui Oui Oui
Mode darrt :
A = ABORT
I = Immdiate
T = Transactional
N = Normal
Conditions :
Aucune connexion ne peut tre tablie.
Attend la dconnexion pralable de tous les utilisateurs.
Les tampons de journalisation et de la base donnes sont cris sur disque.
Les processus darrire-plan prennent fin et la zone SGA est supprime de la mmoire.
Oracle ferme et dmonte la base de donnes avant darrter linstance
La rcupration de linstance nest pas ncessaire lors du redmarrage.
3 types :
alert<SID>.log
trace de processus darrire-plan : <sid>_<processname>_<PID>.trc
trace utilisateur : ora_<pid>_<sid>.trc
exemples :
snp1_<pid>_<sid>.trc
snp2_<pid>_<sid>.trc
snp3_<pid>_<sid>.trc
snp4_<pid>_<sid>.trc
ckpt_<pid>_<sid>.trc
ckpt_<pid>_<sid>.trc
dbw0_<pid>_<sid>.trc
smon_<pid>_<sid>.trc
Emplacement des fichiers traces des processus en arrire-plan dfini par le paramtre
BACKGROUND_DUMP_DEST .
Visualisables par la commande SHOW PARAMETER BACKGROUND_DUMP_DEST ;
Oracle data migration assistant permet de migrer partir dune version antrieure de la
base (dangereux).
ORACLE_HOME :
ORACLE_SID :
PATH :
LD_LIBRAIRY-PATH :
NLS_LANG (ou ORA_NLS33) :
-------------------------------------------------------------------------------
-- BACUS : Script de cration de la database
-------------------------------------------------------------------------------
-- NOTES
-- appel par buildxxx et recre_db
-------------------------------------------------------------------------------
-- spool information to log file --
set echo on
spool /util/admindb/bac/oper/crdb.log
-- dmarrage instance database monted (non ouverte)
--
connect internal
startup nomount
--
-- Cration db BACxxx ----------------------------------------------------
--
alter tablespace system
default storage (initial 4K next 4k
pctincrease 10 minextents 1 maxextents 2048);
--
-- cration des tablespaces -----------------
@/util/admindb/bac/oper/tsdbo.sql
--
-- script de cration du catalogue/ PL/SQL CATBLOCK TOOLS LOADER
@?/rdbms/admin/catalog
@?/rdbms/admin/catproc
connect system/manager
@?/sqlplus/admin/pupbld.sql
--
-- arrt database
connect internal
shutdown
disconnect
Aprs la cration de la base, elle contient 2 utilisateurs sys et system et des tables
internes (mais pas les vues du dictionnaire de donnes) et les vues de performances
v$logfile, v$controlfile, v$datafile.
Dictionnaire de donnes,
Tables des performances
Packages PL/SQL (cres par catproc.sql ).
Dclencheurs dvnements de la base de donnes.
Cas :
Erreurs de syntaxe
Fichiers existants dj,
Ressources trop petites (partition trop petite), droits daccs restreints.
Dictionnaire de donnes
Tables (cres par CREATE DATABASE) et vues (cres par catalog.sql) en lecture
seule.
Stocks dans le tablespace SYSTEM .
Proprits de lutilisateur SYS .
(accessible avec le privilge SELECT).
3 types de vues :
DBA_xxx : contenu de tous les schmas
ALL_xxx : objets, lments auxquelles les utilisateurs en cours ont accs
USER_xxxx : : contenu du schma de lutilisateur (objets appartenant lutilisateur
en cours).
Quelques exemples :
Tables virtuelles
Enregistre lactivit en cours de la base de donnes
Sont constamment mises jour, lorsque la base de donnes est active
Les informations sont lues partir de la mmoire et du fichier de contrle,
Permettent de surveiller et de rgler la base de donnes,
Proprits de lutilisateur SYS .
Les synonymes commencent pa le prfixe V$
Sont rpertories dans la vue V$FIXED_TABLE .
Fichiers de contrle
Pour se prserver dune panne en un point unique affectant le fichier de contrle, il est
conseill de :
1. Modifier le SPFILE :
cp path1/ctrl01.ctl path2/ctrl02.ctl
cp path1/ctrl01.ctl path2/ctrl02.ctl
Exemple :
V$backup
V$datafile
V$tempfile
V$tablespace
V$archive
V$log
V$logfile
V$loghist
V$archived_log
V$database
On peut aussi obtenir des infos sur le du fichier de contrle , par O.E.M. .
Chaque fichier de journalisation en ligne dun groupe est nomm membre (du
groupe).
Les membres dun groupe portent tous le mme n de squence de journal et ont
tous la mme taille. Ce type de n, permettant didentifier de manire unique chaque
fichier de journalisation en ligne, est attribu lorsque le serveur Oracle crit dans un
groupe de fichiers de journalisation. Le n en cours est stock dans le fichier de
contrle et dans lentte de tous les fichiers de donnes.
Les groupes de fichiers de journalisation en ligne (on line) et membres initiaux sont crs en
mme temps que la base de donnes.
LGWR crit, de faon squentielle, dans les fichiers de journalisation en ligne. Lorsquun
groupe est complet, il crit alors dans le groupe suivant. Ainsi de suite, jusquau retour au 1er
groupe.
Points de reprise :
Plusieurs tampons dirty , gnrs par les les fichiers de journalisation, faisant lobjet dun
point de reprise, sont crits par DBWn dans les fichiers de donnes.
Le processus des points de reprise CKPT met jour le fichier de contrle pour indiqu quil
sest excut correctement.
Des informations sur chaque point de reprise sont enregistres dans le fichier alert_<sid>.log
Si le paramtre dinitialisation LOG_CHECKPOINTS_ALERT = TRUE
Exemple :
ALTER DATABASE ADD LOGFILE
GROUP 3 ($HOME/oradata/u01/log3a.rdo, $HOME/oradata/u01/log3b.rdo ) SIZE 1 M ;
Exemple :
ALTER DATABASE ADD LOGFILE MEMBER
$HOME/oradata/u01/log1c.rdo TO GROUP 1,
$HOME/oradata/u02/log2c.rdo TO GROUP 2,
$HOME/oradata/u04/log3c.rdo TO GROUP 3 ;
Type de tablespace
Le Tablespace SYSTEM :
Cr en mme temps que la base de donnes
Contient le dictionnaire de donnes
Contient le segment dannulation SYSTEM (UNDO ).
avec :
extent_management_clause :
[ EXTENT MANAGEMENT [ DICTIONNARY | LOCAL [ AUTOALLOCATE | UNIFORM [ SIZE
integer [ K | M ] ] ] ] ]
Tablespace gr localement :
Exemple :
CREATE TABLESPACE userdata
DATAFILE /u01/oradata/userdata01.dbf SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ;
A ne pas utiliser
Les extents libres sont grs par le dictionnaire de donnes.
Les tables appropries sont mises jour lorsque les extents sont alloues ou libres.
Exemple :
CREATE TABLESPACE userdata
DATAFILE /u01/oradata/userdata01.dbf SIZE 500M
EXTENT MANAGEMENT DICTIONNARY
DEFAULT STORAGE (initial 1 M NEXT 1M PCTINCREASE 0 );
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(SYSTEM);
Exemple :
CREATE UNDO TABLESPACE undo1
DATAFILE /u01/oradata/undo01.dbf SIZE 40M ;
Tablespaces TEMPORARY :
Cr laide de :
CREATE DATABASE
ALTER DATABASE
CREATE DATABASE
.
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE $HOME/oradata/u03/temp01.dbf SIZE 4M ;
ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE default_temp2 ;
La mise en lecture seule permet dempcher les oprations dcriture dans ces fichiers de
donnes. Ces derniers peuvent alors rsider sur des supports de donnes en lecture seule,
tels que CD-ROM, unit non rinscriptibles Cela viter davoir sauver de grandes
sections statiques dune base de donnes.
Exemples :
ALTER TABLESPACE userdata MINIMUM EXTENT 2 M;
ALTER TABLESPACE userdata DEFAULT STORAGE (INITIAL 2 M NEXT 2M
MAXEXTENTS 999 );
Redimensionner un tablespace
Exemples :
CREATE TABLESPACE userdata02
DATAFILE /u01/oradata/userdata02.dbf SIZE 5M
AUTOEXTEND ON NEXT 2M MAXSIZE 200M;
ALTER DATABASE DATAFILE /u01/oradata/userdata02.dbf AUTOEXTEND ON NEXT 2M;
ALTER DATABASE DATAFILE /u01/oradata/userdata02.dbf RESIZE 5M;
Par :
CREATE DATABASE
CREATE TABLESPACE
ALTER TABLESPACE ADD DATAFILE ..
ALTER DATABASE DATAFILE filespec [ autoextend_clause ]
Autoextend_clause :== [ AUTOEXTEND [ OFF|ON[NEXT integer [K|M] ]
[ MAXSIZE UNLIMITED | integer [K|M] ] } } ;
Exemples :
CREATE TABLESPACE userdata02
DATAFILE /u01/oradata/userdata02.dbf SIZE 5M
AUTOEXTEND ON NEXT 2M MAXSIZE 200M;
ALTER TABLESPACE :
Le tablespace doit tre hors ligne,
Les fichiers de donnes cible doivent exister.
Mettre le tablespace OFFLINE, dplacer le fichier, puis faire lALTER :
Exemples :
ALTER TABLESPACE userdata RENAME
DATAFILE /u01/oradata/userdata01.dbf
TO /u02/oradata/userdata01.dbf ;
===========================================
===========================================
Gestion automatique,
Gestion manuelle.
Les donnes dannulation dune transaction squentielle sont stockes dans un seul
segment dannulation.
Plusieurs transactions simultanes peuvent crire des donnes dans un mme segment
dannulation.
Cohrence en lecture :
Le serveur Oracle permet une instruction de voir les donnes de manire cohrente un
instant donn, mme si celles-ci sont modifies par dautres transactions.
Lorsque le serveur Oracle lance lexcution dune instruction SELECT, il dtermine le n SCN
(System Change Number) en cours et sassure que linstruction ne traite pas les
modifications non valides, avant ce n.
Une instruction SQL est toujours cohrente en lecture.
Les noms de ces segments sont de la forme suivante : _SYSSMUn$ avec n un nombre.
Conseils :
UNDO_MANAGEMENT
UNDO_TABLESPACE
2) lancer le SELECT :
SELECT a.name, b.status
FROM v$rollname a, v$rollstat b
WHERE a.name IN (SELECT segment_name
FROM dba_segments )
AND a.usn = b.usn ;
2 3 4 5
NAME STATUS
------------------------------ ---------------
RB1 ONLINE
RB2 ONLINE
SYSTEM ONLINE
Le serveur peut rfrencer UNDOTBS aprs tre pass un autre tablespace dannulation
pour garantir la cohrence en lecture des interrogations. Les interrogations qui sadressent
au tablespace UNDOTBS lors que celui-ci nest plus disponible pour assurer une lecture
cohrente aboutissent lerreur :
ORA-01555 : snapshot too old : rollback segment number nnn with name XXXX too small
La taille "nnn" de ce table space est obtenue par le script suivant (fonctionnant en V9 ) :
4) Si le SELECT prcdent ne ramne aucune ligne, on peut alors lancer (1) la suppression
du 1er tablespace :
DROP TABLESPACE UNDOTBS1 ;
Note : Dans certains cas, il faudrait ensuite faire l'opration inverse, pour avoir [de nouveau] le
tablespace de dpart (ici RBSGENIO), mais avec un datafile dans /rbs_GENIO/geniodbo ... d'une
taille plus petite.
3) spcifier les paramtres du rollback segment avec O.E.M. ou avec lordre SQL :
On peut supprimer un rollback segments quand les extents dun segment deviennent trop
fragments sur le disque, ou si le segment doit tre dlocaliss dans un tablespace diffrent.
4) vrification qu'il n'y a pas de transaction actives, grce cet ordre SQL ci-aprs :
SELECT name, xacts "ACTIVES TRANSACTIONS"
FROM v$rollname, v$rollstat
WHERE status = 'PENDING OFFLINE'
AND v$rollname.usn = v$rollstat.usn ;
Vue DBA_ROLLBACK_SEGS
Vue dynamique des performances :
V$ROLLNAME
V$ROLLSTAT
V$UNDOSTAT
V$CESSION
V$TRANSACTION
Base de donnes
PROD
TABLES SPACES USER_DATA RBS TEMP
SYSTEM
FICHIERS DE DISK2/ DISK3/ DISK1/ DISK1/
DONNEES USER1.dbf USER2.dbf UNDO01.dbf TEMP.dbf
DISK1/SYS1.dbf
SEGMENTS S_DEPT S_EMP S_dept S_emp Rbs1 Rbs2 Rbs1 Rbs2 TEMP
D.D. D.D. First_name
Table index Seg Seg Seg (suite) Seg Seg suite suite Seg temp
Donnes donnes Index RB RB
Seg Seg RB
Seg Seg
donnes index Seg RB RB
index
EXT EN TS 1 1 2 2 1 dispo 1 1 2 2 1
1 2 1 2 1 2
Blocs de don n e s Ora cle
Avec :
D.D. : datafiles
1 segment : 1 objet de la base prenant de la place dans la base de donnes
(1 vue nest pas un segment).
1 segment = 1 ensemble dextends
1 extend = 1 ensemble de blocs contigus
RB : Rollback
Table :
Partition de table :
Les donnes dune table peuvent tre stockes dans plusieurs partitions, chacune se
trouvant dans un tablespace diffrent.
Lorsquune table est partionne, chacune de ses partitions constitue un segment pouvant
tre contrl de manire indpendante laide des paramtres de stockage.
Lutilisation de ce type de segment require loption de partionnement dOracle 9i Enterprise
Edition.
Cluster :
A linstar dune table, un cluster est un type de segment de donnes. Les lignes dun cluster
sont stockes en fonction des valeurs des colonnes de cl. Un cluster peut contenir un ou
plusieurs tables
Index :
Toutes les entres dun index spcifique sont stocks dans le mme segment dindex.
Si une table a n indexes, n segments dindexes sont utiliss.
Le segment dindex permet de recherche lemplacement des lignes dans une table, en
fonction dune cl spcifique.
Partition dindex :
Un indexe peut tre partitionn et rparti dans plusieurs tablespaces.
Chaque partition correspond un segment et ne peut pas occuper plusieurs tablespaces.
Un index partitionn est utilis principalement pour rduire la contention en rpartissant les
entres/sorties dindex.
Lutilisation de ce type de segment requiert loption de partitionnement dOracle 9i Enterprise
Edition.
Segment dannulation :
Un segment dannulation est utilis par une transaction qui apporte des modifications une
base.
Avant toute modification des blocs de donnes ou dindex, lancienne valeur est stocke
dans le segment dannulation pour permettre lutilisateur dannuler les modifications, sil le
souhaite.
Segments temporaires :
Lorsque lutilisateur excute des commandes telles que CREATE INDEX, SELECT
DISTINCT et SELECT GROUP BY, le serveur Oracle tente deffectuer les tris dans la
mmoire.
Lorsquun tri ncessite davantage despace disponible que nen contient la mmoire, des
rsultats intermdiares sont crits sur le disque dans des segments temporaires.
Segment de bootstrap :
Un segment de bootstrap, appel galement segment de cache, est cr par le script sql.bsq
en mme temps que la base de donnes. Ce segment permet dinitialiser le cache du
dictionnaire de donnes lorsquune instance ouvre la base.
Il ne peut pas faire lobjet dune interrogation, ni dune mise jour et ne ncessite aucune
opration de maintenance de la part de ladministrateur de la base de donnes.
Priorit des clauses de storage
Tablespace
Segments
Une clause de stockage (storage) peut tre dfinie au niveau du segment afin de contrler le
mode dallocation des extents un segment.
Autres considrations :
Un extent est un ensemble de blocs contigus despace utilis par un segment dans un
tablespace.
Il est allou lorsquun segment est cre, tendu ou modifi.
Il est libr lorsquun segment est supprim, modifi, vid.
Taille de blocs Oracle = 1 bloc du SO (bloc stantard) jusqu 4 blocs du SO (bloc non
standard).
Egal une puissance de 2, comprise entre 2 et 32 Ko.
Taille de bloc stantard
Toutes les partitions dun objet doivent rsider dans des tablespaces ayant la mme
taille de bloc.
Tous les tablespaces temporaires, y compris les tablespaces permanents utiliss
comme tablespaces temporaires par dfaut, doivent utiliser la taille de bloc standard.
Les segments de dbordement dune table organise en index et segments LOB en
dehors de la ligne peuvent tre stocks dans un tablespace ayant une taille de bloc
diffrente de celle de table de base.
INITRANS : dfinit le nombre initial despaces de transaction crs dans les blocs dindex ou
dans un bloc de donnes.
Il garantit un niveau minimal de simultanit daccs aux donnes. Sa valeur par dfaut est 1
pour les segments de donnes et 2 pour les segments dindex.
SI vous lui affectez la valeur 3, il permet 3 transactions au moins de modifier
simultanment le bloc.
MAXTRANS : dfinit le nombre maximal despaces de transaction crs dans les blocs
dindex ou dans un bloc de donnes.
Valeur par dfaut 255.
Il dfinit un niveau maximal de simultanit de transactions pouvant modifier un bloc de
donnes ou un bloc dindex..
PCTFREE : % despace rserv laugmentation de la taille du bloc, rsultant des mise
jour des lignes. La valeur par dfaut de ce paramtre est de 10 %.
PCTUSED : % despace minimal despace utilis que le serveur Oracle tente de conserver
pour chaque bloc de donnes de la table. Un bloc est remplac dans la liste de blocs libres
(free list) lorsque la quantit despace utilis devient infrieure la valeur du paramtre
PCTUSED.
Le suivi de la quantit despace libre et utilis dans les segments seffectue laide de
bitmap et de listes de blocs libres.
Cette mthode facilite la gestion, permet une meilleure utilisation de lespace, amliore les
performances des oprations INSERT simultanes.
Les segments bitmap contiennent un bitmap qui indique le statut de chaque bloc dans le
segment par rapport son espace disponible.
La reprsentation des blocs est contenue dans un ensemble de blocs particulier, appels
blocs bitmap (BMB).
Lorsque vous insrez une ligne, le serveur recherche dans la reprsentation des blocs, un
bloc disposant dun espace suffisant.
Lorsque la quantit despace disponible dun bloc varie, le nouveau statut de ce dernier est
indiqu dans le bitmap.
Une fois quun tablespace est cr, les spcifications sappliquent tous les segments crs
dans le tablespace.
Gestion manuelle des blocs de donnes (la seule possible avec les version < la V9)
DBA_EXTENTS
DBA_SEGMENTS
DBA_TABLESPACE
DBA_DATA_FILES
DBA_FREE_SPACE
Exemple:
Types de tables
Tables normales,
Tables partitionnes,
Tables organises en index (TOI).
Tables clustrises.
Type de donnes
Format de rowid
1. Rowid tendu
Pour quun utilisateur puisse crer une table, il doit avoir les droits systme CREATE TABLE.
Pour pouvoir crer une table dans le schma dun autre utilisateur : CREATE ANY TABLE
Placer les tables dans des tablespaces distincts (ne contenant pas de segment
dannulation, de segment temporaire et dindex).
Utilisez des tables gnres localement pour viter toute fragmentation (et placez les
tables dans des tablespaces grs localement pour viter la fragmentation).
Utilisez un nombre limit de tailles dextent (ensemble de blocs contigus) standatd
pour les tables pour viter la fragmentation des tablespaces.
Ces tables conservent les donnes jusqu la fin dune transactions ou dune cession.
Aucun verrou LMD nest plac sur les donnes de ces tables.
Vous pouvez crer des indexes, des vues, et des dclencheurs dans ces tables/
La rorganisation dune table non partitionne conserve sa structure mais pas son contenu.
(Elle permet de dplace une table vers un autre tablespace ou de rorganiser des extents).
Aprs avoir transfr la table, il faut reconstruire lindex pour viter les erreurs suivantes :
ORA-01502 : index iiii or partition of such index is in unusable state.
Lorsque vous videz une table, toutes ses lignes sont supprimes et lespace utilis est libr.
Les index correspondants sont galement vids.
Cette opration supprime la longueur et les donnes dune colonne de chaque ligne, librant
ainsi de lespace dans les blocs de donnes.
La suppression dune colonne dans une table volumineuse prend normment de temps.
Types dIndex
1. Logiques :
2. Physiques :
Un index est une arborescence qui permet daccder directement une ligne dans une
table.
Note : il y a :
Des indexes bass sur une fonction,
Index de domaine.
Index partitionns ou index non partitionns.
Index b-tree
Racine
Branche
Feuille
Index bitmap
Une structure bitmap prsente galement une structure b-tree, mais le noeud comporte un
bitmap pour chaque valeur de cl la place dune liste de ROWID. Chaque bit du bitmap
correspond un ROWID possible. Si le bit est dfini, la ligne contenant le ROWID
correspondant comporte la valeur de cl.
Note: on peut crer un index avec un compte different du compte de la table, sur lequel est
cr lindex.
UNIQUE : dsigne un index unique (la valeur par dfaut est non unique).
Schma : propritaire de lindex et de la table.
PCTFREE : indique lespace rserv dans chaque bloc (pourcentage de lespace total moins
len-tte de bloc) au moment de la cration pour linsertion de nouvelles entres dindex.
INITRANS : dfinit le nombre dentres de transactions pralloues dans chaque bloc (la
valeur par dfaut et minimale est 2).
MAXTRANS : limite le nombre dentres de transaction pouvant tre alloues chaque bloc
(la valeur par dfaut est 255).
STORAGE clause : identifie la clause de stockage qui dtermine la mode dallocation des
extents (ensemble de blocs contigus) lindex.
LOGGING : indique que la cration de lindex et les oprations suivante sur lindex sont
consignes dans le fichier de journalisation (redo log) en ligne (cest la valeur par dfaut).
NOLOGGING : indique que la cration de lindex et certains type de chargement de donnes
ne sont pas consignes dans le fichier de journalisation en ligne.
NOSORT : indique que les lignes sont stockes dans la base de donnes en ordre croissant.
Par consquent, le serveur Oracle na pas besoin de les trier lors de la cration de lindex.
Librer de lespace inutilis situ au-del du repre high-water mark din index :
Conseil : il faut rorganiser lindex si la proportion de lignes supprimes est leve, par
exemple, si le rapport entre DEL_LF_ROWS et LF_ROWS est > 30 %.
Lintgrit des donnes garantit que les donnes dune base respectent certaines rgles.
Trois mthodes principales pour la garantir :
Le code dapplication
Les dclencheurs (triggers) de base de donnes,
Les contraintes dintgrit dclaratives.
Types de contrainte
Contrainte Description
NOT NULL Indique quune colonne ne peut pas contenir de valeur NULL
UNIQUE Dsigne une colonne ou une combinaison de colonne comme unique
PRIMARY KEY Dsigne une colonne ou une combinaison de la colonnes comme cl
primaire de la table. Elle est forcment unique.
FOREIGN KEY Dsigne une colonne ou une combinaison de la colonnes comme cl
trangre dans une contrainte dintgrit rfrentielle
CHECK Indique une condition laquelle doit rpondre chaque ligne de la table
Impossible de modifier une contrainte non diffrable, afin de lappliquer la fin dune
transaction.
Cl Oui => Un index est-il Oui => Contrainte pouvant Oui => Index
active ? disponible ? tre diffre ? non Unique ?
| | |
| Non |
| \/ |
| Contrainte pouvant Non => |
| tre diffre ? | |
| | | |
| | Oui => | |
| | | | |
Non Non Oui Non Non / Oui
\/ \/ \/ \/ \/
Ne pas utiliser Crer un index Crer un index utiliser Lindex
dindex unique non unique existant
DELETE CASCADE ; : permet de supprimer les lignes dans la tables parents et les lignes
correspondante dans la table enfant.
Dfinir les contraintes lors de la cration dune table
Syntaxe :
Col datatype
[ CONSTRAINT contrainte ]
{ [NOT] NULL
| UNIQUE [ USING INDEX index_clause ]
| PRIMARY KEY [ USING INDEX index_clause ]
| REFERENCES [ schema.] table [ (column) ]
| FOREIGN KEY (col1 [, col2 ] ] )
REFERENCES [ schema.]table [(col1 [, col2 ] ) ]
[ ON DELETE CASCADE ]
| CHECK (condition) }
[constraint_state ]
avec
constraint_state :==
[ NOT DEFERRABLE | DEFERRABLE [ INITIALLY { IMMEDIATE | DEFERRED } ] ]
[ DISABLE | ENABLE [ VALIDATE | NOVALIDATE ] ]
o :
CONSTRAINT : identifie la contrainte par le nom contrainte stocke dans le dictionnaire de
donnes.
USING INDEX : indique que les paramtres dfinis dans index_clause doivent tre
utiliss pour lindex, auquel fait appel le serveur Oracle afin dappliquer une contrainte
UNIQUE ou de cl primaire (lindex porte le mme nom que la contrainte).
DEFERRABLE : indique que la vrification des contrainte peut tre diffre jusqu la fin de
la transaction laide de la commande SET CONSTRAINT.
NOT DEFERRABLE : indique que la contrainte est vrifie la fin de chaque instruction
DML (une telle contrainte ne peut tre diffre par des sessions ou des transactions. NOT
DEFERRABLE est utilis par dfaut).
INITIALLY IMMEDIATE : indique quau dbut de la transaction, la contrainte doit, par dfaut,
tre vrifie la fin de chaque instruction LMD (cest dailleurs la clause par dfaut si aucune
clause nest prcise).
INITIALLY DEFERRED : indique quil sagit dune contrainte DEFERRABLE et que, par
dfaut, elle nest vrifie qu la fin de chaque transaction.
Exemple :
CREATE TABLE owner.tabxxx
( col1 format1 CONSTRAINT nom_contrainte1 PRIMARY KEY DEFERRABLE
USING INDEX STORAGE (INITIAL nnnK NEXT nnnnK) TABLESPACE tbsxxxxx ,
Col2 format2 CONSTRAINT nom_contrainte2 NOT NULL,
Col3 format3 ) TABLESPACE tbsyyyyyy ;
Remarque : il est recommand dadopter une convention dappellation standard pour les
contraintes ; notamment pour les contraintes CHECK, puisque vous pouvez crer plusieurs
fois la mme contrainte avec des noms diffrents.
Vous devez utiliser les contraintes de table dans les cas suivants :
Lorsquune contrainte sapplique plusieurs colonnes,
Lorsquune table est modifie pour recevoir des contraintes autres que NOT NULL.
La dfinition dune contrainte partir du type NOT NULL une fois la table cre nest
possible que dans le cas suivant :
ALTER TABLE tabxxxx MODIFY colxxx CONSTRAINT constraintexxxxx NOT NULL ;
Exemple de dfinition de contrainte aprs la cration dune table
Remarque : la clause EXCEPTIONS, dcrite dans la section activer les contraintes peut
tre utilise pour identifier les lignes violant une contrainte ajoute par la commande ALTER
TABLE
- Dfinissez et activez les cls trangres aprs le 1er chargement des donnes.
- Diffrer la vrification des contraintes.
Exemple :
@ ?/rdbms/admin/utlexpt1
UPDATE hr.employee
SET dept_id=10
WHERE rowed=AAAAeyAADAAAAA1AAA;
COMMIT;
DBA_CONSTRAINTS
DBA_CONS_COLUMNS
Exemple :
SELECT constraint_name, constraint_type, deferrable, deferred, validated
FROM dba_constraints
WHERE owner=HR
AND table_name=EMPLOYEE;
GESTION DE LA SECURITE
Profils
Un profil est un ensemble nomm contenant les limites relatives aux mots de passe et aux
ressources :
Les commandes CREATE USER et ALTER USER permet daffecter des profils aux
utilisateurs.
Les profils peuvent tre activs ou dsactives.
Le profil DEFAULT est affect par dfaut.
Pour activer la gestion des mots de passe, excutez le script utlpwdmg.sql avec lID
utilisateur SYS .
Paramtre Description
FAILED_LOGIN_ATTEMPTS Nombre dchecs de connexion avant verrouillage du
compte
PASSWORD_LOCK_TIME Dure, en jours, de verrouillage du compte, aprs le
nombre dchecs de connexion dfini
Paramtre Description
PASSWORD_LIFE_TIME Dure de vie, en jours, du mot de passe avant expiration
PASSWORD_GRACE_TIME Priode de grce, en jours, pendant laquelle lutilisateur
peut changer de mot de passe aprs la 1ire connexion
tablie, une fois le mot de passe expir
Paramtre Description
PASSWORD_REUSE_TIME Priode, en jours, pendant laquelle un mot de passe ne
peut pas tre rutilis (sinon DEFAULT, UNLIMITED ).
PASSWORD_REUSE_MAX Nombre maximal de modifications ncessaires avant la
rutilisation dun mot de passe (force lutilisateur dfinir
un mot de passe diffrent des MdP prcdents).
Si lun ce ces 2 paramtres est UNLIMITED, lautre doit tre aussi UNLIMITED.
Paramtre Description
PASSWORD_VERIF_FUNCTION Fonction PL/SQL vrifiant la complexit dun mot de
passe, avant que celui-ci soit affect.
Cette fonction doit tre cre dans le schma SYS et respecter la spcification suivante :
function_name (
userid_parameter IN VARCHAR2(30),
password_parameter IN VARCHAR2(30),
old_password_parameter IN VARCHAR2(30) )
RETURN BOOLEAN
Crer un profil
Supprimer un profil
CASCADE retire le profile tous les utilisateurs qui ont ce profile. Il retrouve le profil :
DEFAULT.
La suppression ne sapplique quaux nouvelles sessions cres et non au sessions en cours.
Les limites relatives la gestion des ressources peuvent sappliquer au niveau session, au
niveau appel ou aux deux.
Les limites peuvent tre dfinies par des profiles via la commande CREATE PROFILE.
Ressource Description
CPU_PER_SESSION Temps CPU total calcul en centime de secondes
SESSIONS_PER_USER Nombre de sessions simultanes autorises pour
chaque nom utilisateur
CONNECT_TIME Temps de connexion calcul en minutes
IDLE_TIME Priode dinactivit calcul en minutes
LOGICAL_READS_PER_SESSION Nombre de blocs de donnes (lectures physiques et
logiques)
PRIVATE_SGA Espace priv de la mmoire SGA mesur en octets
(dans le cas dun serveur partag uniquement).
Ressource Description
CPU_PER_CALL Temps CPU total calcul en centime de secondes
LOGICAL_READS_PER_CALL Nombre de blocs de donnes pouvant tre lus par appel
Crer un profil : limites relatives aux ressources
Exemple :
CREATE PROFILE dev_prof LIMIT
SESSIONS_PER_USER 2
CPU_PER_SESSION 10000
IDLE_TIM 60
CONNECT_TIME 480 ;
Obtenir des informations sur les limites relatives aux mots de passe et aux ressources
DBA_USERS
DBA_PROFILE
Objets de schma
Tables
Dclencheurs (triggers)
Contraintes
Index
Vues
Clusters
Sequences
Programmes stocks (packages, procdures ),
Synonymes
Types de donnes dfinis par lutilisateur,
Liens de bases de donnes.
Liste de contrles pour la cration dutilisateurs
Identifiez les tablespaces dans lesquels lutilisateur a besoin de stocker des objets,
Dterminez les quotas applicables pour chaque tablespace.
Affecter un tablespace par dfaut et un tablespace temporaire.
Crer un utilisateur.
Accorder des privilges et des rles lutilisateur.
la valeur OPS$ est utilise par dfaut [ comme valeur de prfixe aux noms des utilisateurs).
Remarques :
On peut mettre :
OS_AUTHENT_PREFIX=OPS$
Ou bien faire :
CREATE USER ops$user IDENTIFIED BY password . ;