Professional Documents
Culture Documents
Administration
Razvan Bizo
faux-titre_oracle_admin.indd 2
28/11/10 15:53
15
CREATE TABLESPACE
DB_Nx_CACHE_SIZE
TEMPORARY
UNDO
15 Les
tablespaces
Objectifs
la fin de ce module, vous serez mme deffectuer les tches suivantes :
Crer un espace logique de stockage permanent.
Dfinir le tablespace permanent par dfaut pour une base de donnes.
Crer un tablespace de type temporaire.
Crer un groupe de tablespaces temporaires.
Dfinir le tablespace temporaire par dfaut pour la base de donnes.
Crer un tablespace utilisant un stockage crypt.
Crer un tablespace avec une taille de bloc autre que celle par dfaut.
Contenu
Le tablespace
15-17
15-20
15-24
15-29
La console dadministration
15-13 Atelier 15
15-31
Le tablespace BIGFILE
15-15
15-1
Le tablespace
Le tablespace
15-3
15-4
La base de donnes
15-5
Un tablespace applicatif typique contient tous les objets principaux associs une
application. Limportant volume de lectures-critures dont elles font lobjet justifie
lisolation de ces tables dans leur propre tablespace, sparant ainsi leurs fichiers de
donnes des autres fichiers de donnes dans la base. La rpartition de ces fichiers sur
des disques diffrents peut de plus amliorer les performances (grce une rduction
de la contention lors des accs au disque) et simplifier leur gestion.
Les index ne devraient pas tre stocks dans le mme tablespace que les tables de
donnes sur lesquelles ils ont t dfinis, car ces deux types de structures font lobjet
de nombreuses oprations de lectures-critures concurrentes lors des manipulations de
donnes et des interrogations.
15-6
la cration dun tablespace, vous indiquez le ou les fichiers de donnes, leur taille,
leur mode dagrandissement. La cration du tablespace permet galement de
configurer la taille du bloc, les informations de journalisation ou les options de
compression ; ces options seront dtailles au fur et mesure que nous avancerons
dans ce module.
Linstruction SQL qui permet de crer un tablespace permanent est :
CREATE {BIGFILE|SMALLFILE} TABLESPACE nom_tablespace
[ DATAFILE
['nom_fichier'] [ SIZE integer {K|M|G|T} ]
[ AUTOEXTEND
{OFF |
ON [ NEXT integer {K|M|G|T}]
[ MAXSIZE {UNLIMITED | integer {K|M|G|T}]
}
] [,...]
]
[BLOCKSIZE integer [ K ]]
[{LOGGING | NOLOGGING}]
[FORCE LOGGING]
[{ONLINE | OFFLINE}]
[FLASHBACK {ON | OFF}]
[ENCRYPTION [ USING 'algorithm']
[IDENTIFIED BY mot_de_passe]
DEFAULT STORAGE ENCRYPT]
Tsoft/Eyrolles Oracle 11g Administration
15-7
15-8
BIGFILE
SMALLFILE
nom_fichier
AUTOEXTEND
integer
AUTOEXTEND
NEXT
MAXSIZE
UNLIMITED
BLOCKSIZE
LOGGING
NOLOGGING
ONLINE
OFFLINE
FLASHBACK
ENCRYPTION
COMPRESS
Dans lexemple prcdent, vous pouvez remarquer la cration dun tablespace avec
deux fichiers de donnes, chacun dune taille de 10 M. Lespace de stockage dfini
pour chaque fichier de 10 Mb est rserv sous sur disque.
Attention
la cration du tablespace, il faut veiller ce que les tailles des fichiers mentionns
ne dpassent pas lespace libre qui se trouve sur disque.
En effet Oracle rserve automatiquement lespace prcis pour chaque fichier de
donnes. Sil ny a pas assez despace sur disque, Oracle projette la cration du
tablespace.
15-9
15-10
La base de donnes
Tous les objets qui ne comportent pas, dans la syntaxe de cration, les mentions de
stockage dans un tablespace, sont stocks automatiquement dans le tablespace
permanent par dfaut.
Il faut prendre lhabitude de dfinir un tablespace permanent par dfaut qui reoive
lensemble des objets crs sans mention de stockage.
Vous pouvez dfinir le tablespace permanent par dfaut de la base de donnes laide
de la commande SQL suivante :
ALTER DATABASE
DEFAULT TABLESPACE nom_tablespace ;
SYS@saphir>alter database default tablespace tbsdata;
Base de donnes modifie.
SYS@saphir>select property_value from database_properties
2 where property_name like 'DEFAULT_PERMANENT_TABLESPACE';
PROPERTY_VALUE
-------------------------------------------------------------TBSDATA
SYS@saphir>create table table_03 as select * from cat;
Table cre.
SYS@saphir>select table_name, tablespace_name
2 from dba_tables
3 where tablespace_name = 'TBSDATA';
15-11
15-12
La console dadministration
La console dadministration
Vous pouvez galement utiliser la console OEM (Oracle Enterprise Manager) pour
crer un tablespace.
Choisissez longlet Serveur sur la page daccueil puis sur le lien Tablespaces pour
accder la page de gestion des tablespaces. Vous pouvez ainsi crer un tablespace,
dfinir le type et le statut, ainsi que le mode de gestion du tablespace.
Vous pouvez saisir toutes les informations relatives aux fichiers de donnes dfinis
pour le tablespace, comme lemplacement, la taille et la quantit despace utilise dans
le fichier de donnes.
Tsoft/Eyrolles Oracle 11g Administration
15-13
Attention
Pour toutes les oprations dadministration que vous effectuez travers la console,
vous devez imprativement sauvegarder le script SQL correspondant.
En effet, plusieurs oprations dadministration de la base de donnes ncessitent le
script SQL pour pouvoir recrer les objets ou tout simplement effectuer des oprations
de maintenance.
15-14
Le tablespace BIGFILE
Le tablespace BIGFILE
SMALLFILE
BIGFILE
max 1022
fichiers
232 blocs
222 blocs
CREATE BIGFILE
TABLESPACE NOM_TBS ...
15-15
BIG
--YES
NO
NO
FILE_NAME
------------------------------------------------+GD_DONNEES/rubis/datafile/tbsbig.330.724090169
+GD_DONNEES/rubis/datafile/tbssmall.329.724090417
+GD_DONNEES/rubis/datafile/tbssmall.328.724090419
15-16
La taille du bloc
La taille du bloc
Buffer Cache
BLOC 4K
4K
BLOC 8K
BLOC 16K
8K
16K
Pour lire ou crire les donnes de la base de donnes, Oracle charge dabord les blocs
correspondants dans le buffer cache (cache de tampon). Ainsi il faut dabord
paramtrer le buffer cache pour pouvoir recevoir les blocs respectifs.
Le paramtre qui vous permet de rserver de lespace pour les blocs diffrents des
blocs par dfaut est :
DB_nK_CACHE_SIZE
Les valeurs autorises pour le n sont 2, 4, 8, 16 et 32 (certains systmes
dexploitation nacceptent pas cette valeur). La valeur du bloc par dfaut est
DB_BLOCK_SIZE , paramtre dfini la cration de la base de donnes.
SYS@rubis>show parameter db_block_size
NAME
TYPE
VALUE
------------------------------------ ----------- ----db_block_size
integer
8192
SYS@rubis>show parameter k_cache_size
NAME
TYPE
VALUE
------------------------------------ ----------- ----db_16k_cache_size
big integer 0
db_2k_cache_size
big integer 0
db_32k_cache_size
big integer 0
db_4k_cache_size
big integer 0
db_8k_cache_size
big integer 0
SYS@rubis>alter system set db_32k_cache_size=16m;
Systme modifi.
SYS@rubis>alter system set db_4k_cache_size=16m;
Systme modifi.
15-17
TYPE
----------big integer
big integer
big integer
big integer
big integer
VALUE
----0
0
16M
16M
0
Les deux premires crations de tablespace sont acceptes par la base de donnes, et le
paramtrage du buffer cache est dj effectu. Par contre la dernire cration est
rejete ; il faut dabord paramtrer le buffer cache pour pouvoir recevoir les blocs de
2 Kb.
SYS@rubis>create table tdata_32k tablespace data_32k as
2 select * from cat;
Table cre.
SYS@rubis>alter system set db_32k_cache_size=0;
15-18
Attention
Pour lire ou crire les donnes de la base de donnes, Oracle charge dabord les blocs
correspondants dans le buffer cache (cache de tampon).
Si une des zones dune taille de bloc non standard vient dtre mise zro, alors tous
les objets des tablespaces qui ont cette taille de bloc ne peuvent plus tre lus, comme
cest le cas dans lexemple prcdent.
Une fois que la zone mmoire a t initialise, les donnes sont nouveau accessibles.
15-19
Le cryptage transparent
Le cryptage transparent
$ORACLE_BASE/admin/$ORACLE_SID/wallet
%ORACLE_BASE%\admin\%ORACLE_SID%\wallet
15-20
Description
---------------AES 128-bit key
AES 192-bit key
Df
--YES
NO
NO
SYS@saphir>!mkdir /u01/app/oracle/admin/saphir/wallet
SYS@saphir>!ls -la /u01/app/oracle/admin/saphir
...
drwxr-xr-x 2 oracle oinstall 4096 jui 11 18:31 wallet
Attention
Il est impratif, aprs chaque dmarrage de la base, douvrir le fichier portefeuille pour
pouvoir bnficier des fonctionnalits de cryptage.
La syntaxe douverture ou de la fermeture du fichier portefeuille est la suivante :
ALTER SYSTEM SET WALLET
{ OPEN | CLOSE }
IDENTIFIED BY "mot de passe";
SYS@saphir>startup force
Instance ORACLE lance.
...
SYS@saphir>select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER
STATUS
-------- ------------------------------------ -----------------file
/u01/app/oracle/admin/saphir/wallet CLOSED
SYS@saphir>alter system set wallet open identified by "P#sw0rd3";
Systme modifi.
15-21
SYS@saphir>select file_name
2 from dba_data_files join
3
dba_tablespaces using ( tablespace_name)
4 where tablespace_name like 'TBS%E';
FILE_NAME
-----------------------------------------------------------------/u02/donnees/oradata/SAPHIR/datafile/o1_mf_tbs_ne_63mxrtrl_.dbf
/u02/donnees/oradata/SAPHIR/datafile/o1_mf_tbs_e_63mxrx4g_.dbf
SYS@saphir>!mv /u01/app/oracle/admin/saphir/wallet/ewallet.p12
/u01/app/oracle/admin/saphir/wallet/ewallet.p12.sav
15-22
Dans le cas dun tablespace crypt il nest pas possible de trouver linformation.
15-23
Le tablespace temporaire
Le tablespace temporaire
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
SIZE 1G AUTOEXTEND ON NEXT 256M,
SIZE 1G AUTOEXTEND ON NEXT 256M;
Lors dimportantes oprations de tri (telles que select distinct, union et create index)
Oracle a besoin de stocker dans la base de donnes, des informations concernant le tri
des enregistrements, avant de retourner linformation aux utilisateurs. En raison de
leur nature dynamique, ces espaces de tris ne devraient pas tre stocks avec dautres
types de donnes.
Lorsquun tablespace temporaire TEMPORARY est dfini, un segment de tri est
aussi cr. Celui-ci est capable de crotre si ncessaire afin de pouvoir hberger toutes
les oprations de tri de donnes, et existe jusqu ce que la base de donnes soit
ferme puis redmarre.
La syntaxe de cration dun tablespace temporaire est :
CREATE {BIGFILE|SMALLFILE} TEMPORARY
TABLESPACE nom_tablespace
[ TEMPFILE
['nom_fichier'] [ SIZE integer {K|M|G|T} REUSE]
[ AUTOEXTEND
{OFF |
ON [ NEXT integer {K|M|G|T}]
[ MAXSIZE {UNLIMITED | integer {K|M|G|T}]
}
] [,...]
]
[{ONLINE | OFFLINE}] ;
15-24
TEMPORARY
TEMPFILE
REUSE
FILE_NAME
--------------------------------------------------+GD_DONNEES/jaspe/tempfile/temp01.283.724094305
+GD_DONNEES/jaspe/tempfile/temp02.281.724094309
+GD_DONNEES/jaspe/tempfile/temp03.280.724094315
15-25
18:03
15-26
GR_TEMP
Certains utilisateurs dune base de donnes Oracle peuvent avoir besoin de volumes de
stockage temporaire beaucoup plus grands que ceux de tous les autres utilisateurs de
lapplication. Dans ce cas, vous pouvez crer plusieurs tablespaces temporaires
TEMPORARY pour distribuer les espaces de stockages des utilisateurs ayant des
besoins semblables sur les mmes tablespaces.
partir de la version Oracle 10g, il est possible de crer des groupes de tablespaces
temporaires pour quilibrer les charges et diminuer les contentions daccs aux
segments temporaires. Un groupe de tablespaces temporaires est gr par la base de
donnes comme un tablespace temporaire ; vous pouvez ainsi dfinir que cest le
tablespace temporaire par dfaut.
La syntaxe de cration dun groupe de tablespaces temporaires est en effet uniquement
un assignement dun tablespace temporaire existant au nom du groupe qui va tre cr,
comme suit :
ALTER TABLESPACE nom TABLESPACE GROUP nom_groupe;
SYS@jaspe>alter tablespace temp01 tablespace group ngrp_temp;
Tablespace modifi.
SYS@jaspe>alter tablespace temp02 tablespace group ngrp_temp;
Tablespace modifi.
SYS@jaspe>alter tablespace temp03 tablespace group ngrp_temp;
Tablespace modifi.
SYS@jaspe>select * from dba_tablespace_groups;
GROUP_NAME
TABLESPAC
------------------------------ ---------
15-27
TEMP01
TEMP02
TEMP03
15-28
Le tablespace undo
Le tablespace undo
CREATE UNDO
SIZE
SIZE
SIZE
SIZE
Toutes les donnes dannulation sont stockes dans un tablespace spcial appel
UNDO . Lorsque vous crez un tablespace UNDO , Oracle gre le stockage,
la rtention et lemploi de lespace pour les donnes de rollback par lintermdiaire de
la fonction SMU (System-Managed Undo). Aucun objet permanent nest plac dans le
tablespace undo.
Pour pouvoir crer un tablespace undo la cration de la base de donnes, il faut
prendre soin dinitialiser le paramtre
UNDO_MANAGEMENT=AUTO
partir de la version Oracle 9i, il est fortement conseill dutiliser la gestion
automatique des segments dannulation. partir de la version Oracle 10g, il est
impratif dutiliser ce mode de gestion, sans quoi une grande partie des fonctionnalits
de la base de donnes sont inutilisables. Voir le module Les segments UNDO .
Rappelez-vous, la syntaxe SQL de cration de la base de donnes comporte dabord la
cration dun tablespace SYSTEM et dun tablespace SYSAUX , ainsi
que la cration de tablespaces TEMP et UNDO .
Attention
la cration de la base de donnes, si vous ne prcisez pas de tablespace undo, Oracle
cre un tablespace undo appel SYS_UNDOTS .
Le paramtre UNDO_TABLESPACE doit avoir la valeur SYS_UNDOTS ,
sinon la base de donnes ne pourra pas tre cre.
La syntaxe de cration dun tablespace UNDO est :
CREATE {BIGFILE|SMALLFILE} UNDO
TABLESPACE nom_tablespace
[ DATAFILE
['nom_fichier'] [ SIZE integer {K|M|G|T} ]
Tsoft/Eyrolles Oracle 11g Administration
15-29
Attention, les tablespaces prennes et temporaires par dfaut sont attribus laide de
la syntaxe ALTER DATABASE DEFAULT ; ce nest pas le cas pour le
tablespace de type UNDO . Le tablespace UNDO par dfaut est celui qui est
prcis dans le paramtre UNDO_TABLESPACE .
SYS@rubis>show parameter undo_tablespace
NAME
TYPE
VALUE
------------------------------------ ----------- -------undo_tablespace
string
UNDOTBS1
SYS@rubis>create bigfile undo tablespace undo datafile
2 size 512m autoextend on next 512m;
Tablespace cr.
SYS@rubis>select contents, file_name
2 from dba_data_files join
3
dba_tablespaces using ( tablespace_name)
4 where tablespace_name like 'UNDO';
CONTENTS FILE_NAME
--------- ---------------------------------------------UNDO
+GD_DONNEES/rubis/datafile/undo.325.724104703
SYS@rubis>alter system set undo_tablespace =undo;
Systme modifi.
SYS@rubis>show parameter undo_tablespace
NAME
TYPE
VALUE
------------------------------------ ----------- ------undo_tablespace
string
UNDO
Attention
Comme pour les tablespaces systme et pour les tablespaces temporaires, le tablespace
UNDO doit tre cr avec la taille de bloc par dfaut.
La base de donnes Oracle utilise pour ses fichiers de gestion la taille de bloc par
dfaut dfinie lors de la cration de cette base de donnes.
15-30
Atelier 15
Exercice n1
Identifiez le tablespace permanent, temporaire et undo par dfaut de votre base de
donnes.
Exercice n2
Crez deux tablespaces TPD01 et TPD02 chacun avec un seul fichier de
donnes dune taille de 10 M sans agrandissement automatique.
Dfinissez le tablespace TPD01 comme tant le tablespace permanent par
dfaut de votre base de donnes. Effacez lancien tablespace par dfaut.
Exercice n3
Crez un tablespace de type temporaire TPT01 avec un seul fichier de donnes
dune taille de 10 M sans agrandissement automatique.
Dfinissez le tablespace TPT01 comme tant le tablespace temporaire par
dfaut de votre base de donnes. Effacez lancien tablespace par dfaut.
Exercice n4
Crez un tablespace de type undo TPU01 avec un seul fichier de donnes dune
taille de 512 M en agrandissement automatique jusqu une taille de 3 G.
Dfinissez le tablespace TPU01 comme tant le tablespace temporaire par
dfaut de votre base de donnes. Effacez lancien tablespace par dfaut.
Exercice n5
Crez un tablespace de type BIGFILE TPD03 avec une taille de bloc de 4 k et
un tablespace de type BIGFILE TPD04 avec une taille de bloc de 16 k, chacun
avec un fichier de donnes dune taille de 10 M, avec agrandissement automatique
jusqu une taille de 128 M.
Exercice n6
Affichez le rpertoire de destination pour les fichiers des donnes et pour les fichiers
journaux.
Crez un tablespace GEST_DATA avec deux fichiers de donnes, chacun dune
taille de 10 M.
15-31