1. Chapitre 3 :
Création de la structure d’une base de données
Phase de réflexion
Création de la base de données: Graphiquement DBCA et
manuellement
Création et Gestion des tablespaces et des tables et
tablespace Undo
Rappels sur les indexes Principes choix et création : index
btree , BitMap
Alimentation d'une base de données: le sqlloader
2. Avant création, et pour faire les bons choix:
Réfléchir aux tables et indexes à venir, estimer leur taille
Planifier la distribution de ses fichiers, l’espace libre dans les blocks
Décider entre une gestion classique ou automatique des fichiers
Déterminer la taille des blocs de données
Choisir le mode de gestion de l’annulation, Tablespace dédié
Segments d’annulation
Déterminer la stratégie de sauvegarder et reprise après panne
-reprendre l’etat de sauvgarde
- Dérouler le fichier de journalisation
-réplication
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Phase de réflexion
3. Deux possibilités:
Utiliser l’assistant Oracle : graphique : DBCA
Créer manuellement à l’aide de scripts
En cas de mise à jour d’Oracle ou de migration ,
une procédure particulière existe Compatibilité
ascendante, on ne recrée pas les bases de données.
Pré requis :
Oracle doit-être installé
Vous devez être administrateur du SE et de l’instance
La mémoire principale et mémoire disque doit être
suffisante
Administration des bases de données sous Oracle
Chapitre 3 : Créer une base de données
Création de la base : Généralités
4. ■ Une Base de données comporte les états suivants
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : États de la l’instance ( base)
5. Les Privilèges utiles
Les Privilèges nécessaires pour créer, démarrer ou arrêter une base
SYSDBA (arrêt, démarrage, modification, création d’ une base, …)
SYSOPER(arrêt démarrage d’une base, modification)
Administration des bases de données sous Oracle
Chapitre 3 : Créer une base de données
Création de la base : États de la base
6. 1. Démarrer l’assistant
Soit par start->programme->OracleHome->Configuration and
Migration Tools-> Database Configuration Assistant
Ou bien on tape DBCA dans l’invite DOS ( ou dans un terninal en
cas Linux et Unix)
2. Choisir créer une base
3. Choisir un template (modèle) de base
4. Donner le nom global de la base (exemple DBTEST) ainsi que le SID
(DBTEST)
5. Sélectionner le mode de déploiement de la base (mode dédié) ou
(mode serveurs multithreads)
6. Fixer la taille de la SGA(buffer cache, shared pool, large pool, java
pool)
7. sélectionner le mode d’archivage de la base (Archivelog ou
noarchivelog).Localiser les fichiers d’archive
8. Fixer la taille maximale de la zone de tri ainsi que les caractères sets
9. Localiser les fichiers de contrôles, de données et redo log
10. Modifier à tout moment les paramètres d’itialisation supplémentaires
et démarrer la création de la base
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes à suivre pour créer une
base avec le Database Configuration Assistant: DBCA
7. Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
Spécifier le nom de l'instance SID : ( ici DB1 )
positionner les variable : oracle_home=D:apphpproduct11.2.0dbhome_1
oracle_base=D:apphp et oracle_sid= DB1
Créer le fichier de paramètres PFILE (partir de l'exemple Oracle init%.ora)
(D:apphpadminorclpfileinit.ora)
Nom de la base, emplacement des fichiers de contrôle ….
Créer le fichier de mot de passe - orapwd file=orapwDB1 password=Test01;
Pour windows executer : oradim -new -sid DB1
Se connecter a l'instance inactive
SQLPLUS nolog puis CONNECT AS SYSDBA
STARTUP PFILE='D:apphpadminDB1pfileinit.ora' nomount
Créer un fichier de paramètre serveur SPFILE (D:apphpproduct11.2.0dbhome_1database)
(a partir du fichier manuel) Create SPFILE from PFILE
SQL> create SPFILE='D:APPHPPRODUCT11.2.0DBHOME_1DATABASESPFILEDB1.ora' from
PFILE='D:apphpadminDB1pfileinit.ora'; ;
Mon noyau oracle (ORACLE_BASE )est installé sous D:apphp
À l’aide la commade MKDIR on crée les répertoires suivant :
D:apphpadmin , D:apphporadata , D:apphpadminDB1,
D:apphporadataDB1 , D:apphpadminDB1bdump , D:apphpadminDB1cdump
D:apphpadminDB1pfile et D:apphpadminDB1udump,
D:apphpflash_recovery_areaDB1
8. CREATE DATABASE DB1
USER SYS IDENTIFIED BY pz6r58
USER SYSTEM IDENTIFIED BY y1tz5p
LOGFILE GROUP 1 ('D:apphporadataDB1redo01.log') SIZE 100M,
GROUP 2 ('D:apphporadataDB1redo02.log') SIZE 10M,
GROUP 3 ('D:apphporadataDB1redo03.log') SIZE 10M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'D:apphporadataDB1system01.dbf' SIZE 320M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'D:apphporadataDB1sysaux01.dbf' SIZE 320M REUSE
DEFAULT TABLESPACE tbs_1
DATAFILE 'D:apphporadataDB1users01.dbf' SIZE 50M REUSE AUTOEXTEND ON
MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE 'D:apphporadataDB1temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE 'D:apphporadataDB1undotbs01.dbf'
SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
9. création des vues et synonymes publics (CATALOG.SQL)
• Installation de l'option procédurale(CATPROC.SQL)
• création des synonymes publics pour les tables virtuelles (UTLMONTR.SQL)
• Création des Synonymes sur les vues dba_* du dictionnaire (CATDBSYN.SQL) pour
le DBA
Le chemin de ces scriptes .sql est :
{ORACLE_HOME}RDBMSADMIN
Sur Mon PC : D:apphpproduct11.2.0dbhome_1RDBMSADMIN
Créer de nouveaux tablespace, par exemple :
- Un USERS pour les utilisateurs
- un INDX pour les index
Lancer les scripts de création du dictionnaire (catalog.sql,catproc.sql) et
éventuellement d'autres scripts optionnels
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
10. Précisions sur les paramètres de l'instance (pfile)
le nom de la base ne comporte que 8 caractères
créer au moins deux fichiers de controles
Sur des disques diferents si possible
Laisser Oracle choisir la taille des blocs
On peut contrôler la SGA
En lui fixant une taille maximale
en fixant la taille de différents composants
On peut changer la taille plus tard, de façon dynamique
On peut fixer le nombre de processus autorisés
On doit choisir un mode de gestion des annulations
Comment on gère les données d'annulation ? (Avant Commit)
Automatique : gérées dans un tablespace
Manuel : gérées dans les segments d'annulation (Undo)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
11. Remarques complémentaires:
Si la création échoue, visualiser le chier d'alertes (show parameter user_dump)
Arrêter l'instance
Supprimer les fichiers crées pendant la tentative
Pour supprimer une base : ( commande drop database)
La base doit être montée et fermée
sql> shutdown immediate;
sql> startup mount exclusive restrict
sql> Drop database ;
Conserve les fichiers d'archivage et les copies
Pour modifier des paramètres
Les commandes ALTER SYSTEM pour les paramètres d'instance (modifie le SPFILE,
pas le PFILE !)
La commandesALTER DATABASE pour revenir sur les choix du CREATE DATABASE
Pour voir les informations sur la base
Show parameters, vues 'database_properties' et V$DATABASE
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
12. Cote serveur
Un processus d‘écoute utilisant un protocole réseau :
listenerSID
Un serveur BD Oracle = instance + base
Les configurations (services d‘écoute) sont enregistrées dans
listener.ora
Éditable a la main, ou via outils graphiques
Côte client
Configurations (services d'acces) enregistrées dans tnsname.ora
Permet au client de se connecter de façon transparente
Éditable a la main, ou via outils graphiques
Configuration du reseau
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
13. Positionner les variables d'environnement ORACLE_SID et ORACLE_HOME
Démarrage de la base possible par paliers (startup nomount, startup mount,
et startup open)
Posséder les privilèges appropriés (SYSDBA, SYSOPER, OSDBA ou OSOPER, ...)
Indiquer si nécessaire le fichier des paramètres
■ Syntaxe de la commande
STARTUP [FORCE] [RESTRICT] [PFILE=fich_param] [OPEN | MOUNT |
NOMOUNT]
ALTER DATABASE [nom_base] MOUNT | OPEN
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Démarrage d'une base :Procédure
Générale
14. ■ Description des mots et paramètres
FORCE Si instance ouverte, Fermeture puis démarrage
RESTRICT sert à des tâches de maintenance. Il faut avoir
le privilège Restricted Session
PFILE Indique le fichier des paramètres
OPEN démarrer et ouvrir les fichiers de la base
MOUNT Instance démarrée fichier(s) de contrôle ouvert(s)
NOMOUNT Seule l'instance est démarrée
ALTER DATABASE : permet le démarre par paliers après un
startup NOMOUNT ou MOUNT
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Démarrage d'une base
15. ■ Exemple
• Variables d’environnement
Unix $export ORACLE_SID = COURS
$ export ORACLE_HOME=useroracle
Windows Set ORACLE_SID = COURS
set ORACLE_HOME=D:apphpproduct11.2.0dbhome_1
Lancer SQLPLUS $sqlplus username : sys as sysdba
démarrer et ouvrir les fichiers de la base
SQL >startup ; oubien $ SQL>startup OPEN
pfile=D:apphpproduct11.2.0dbhome_1dbsinitCOURS.ora;
démarrer la base par paliers
-Instance démarrée, fichiers de contrôles ouverts SQL >startup mount ;
- En plus les fichiers de données sont ouverts SQL > alter database open ;
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Démarrage d'une base
16. Posséder les privilèges 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 déconnexion de l'ensemble des utilisateurs
– IMMEDIATE Invalide les transactions en cours et déconnecte les users
– ABORT Arrêt violent de l'instance (recouvrement utile : SMON)
- TRANSACTIONAL Contrairement à IMMEDIATE, laisse finir les transactions en cours
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Arrêt d'une base:■ Procédure Générale
17. • Positionner les variables d'environnement (UNIX)
$export ( set dans Windouws) ORACLE_SID=COURS
$export ( set dans Windouws) ORACLE_HOME=usersoraclev9
• Lancer SQL $SQL sys as sysdba
1- arrêt normal avec attente de déconnexion : SQL>shutdown
2- Ou Arrêt immédiat : Annulation des transactions en cours et déconnexion
: SQL>shutdown immediate ;
Les utilisateurs ont le message suivant :
ORA-03113 : end-of-file on communication channel
3- ou Arrêt brutal (pas d’attente de déconnexion, pas d'invalidation de
transactions en cours) : SQL >shutdown abort;
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Arrêt d'une base
■ Exemple
18. Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables: tablespaces
Rappel
19. Espace de stockage logique des objets
Un tablespace = plusieurs fichiers de donnees
Un seul dans le cas des tablespace a gros chier (bigfile)
Il est necessaire d'utiliser plusieurs tablespace :
Separer les donnees des utilisteurs du dictionnaire
Separer les donnees d'applications différentes, pour alléger les accès et
réduire les risques de panne des applications
Tablespaces optimisés pour certaines tâches : lecture seule ou mises a jour
fréquentes, espace temporaire
Sauvegarde individuelle des tablespace
Stocker un tablespace par disque, pour réduire les
concurrences ES
Pour chaque utilisateur il faut assigner un quota
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Rappel : grande lignes
20. Tablespaces Ordinnaire Stockets les données
Liés aux tables.
Tablespace d'annulation, pour les opérations non valides
Tablespaces temporaires : pour la gestion des tris
Une instance + un tablespace = un segment de tri
Affectés à chaque utilisateurs
Forcement à gestion locale depuis 10g
ne génère pas d‘écriture dans les fichiers de reprise
* Pour vérifier le statut de nos tablespace voilà une requête :
SELECT tablespace_name, status, contents, extent_management FROM dba_tablespaces;
Différents types de tablespaces
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
21. Bigfilele tablespaces (jusqu'a 128 tera)
Lorsqu'on a besoin de plus de capacite (64 000 fichiers de données au maximum)
Simplifie la gestion du tablespace (un seul fichier)
Uniquement pour les tablespace a gestion locale et automatique de l'espace
Différents types de tablespaces (suite)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
22. Tablespace créé par défaut lors de la création de la base
contient le dictionnaire de données
contient un Rollback segment créé par défaut SYSTEM
il est déconseillé d'y stocker des données autres que celles du dictionnaire
Le tablespace SYSTEM
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
23. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
23
Ajout possible d’autre fichier, separé par la virgule
Clause obligatoire pour la gestion des fichier par manuellement
Clause optionnelle pour la gestion des fichier par oracle(OMF)
On peut specifier la taille dans les deux cas
Note: il y a d’autre clauses optionnels
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
24. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
24
TEMPORARY: est utilisé dans le cas des tablespaces
temporaire gérer par le dictionnaire oracle
PERMANENT: Option par Default; stocker les objects
(tables et indexes) d’une façon permanente
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
25. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
25
LOCAL: option par défault; gere les extents libres free
par un index bitmap dans la tablespace
DICTIONARY: le tablespace gere les extents libre par le
dictionnaire
Note: D’autres option peuvent etre ajouté ( voir la suite)
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
26. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
26
LOGGING: Par Default; tout les DML, DDL, et les insertion
INSERT en masse sont enregistrés dans le redo log
NOLOGGING: Sauf les commandes DML sont enregistrés
dans le redo log
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
27. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
27
ONLINE: Par Default; le tablespace est prét à utilisé
OFFLINE: le tablespace n’est encore prét à utilisé
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
28. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
28
AUTO: gere les espace libre des segment dans un bitmap
dans la tablespace
MANUAL: gere les espace libre des segment dans le
dictionnaire de données oracle
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
29. CREATE TABLESPACE APPLI_PERSONNEL
DATAFILE 'homeFichier1_app_pers.dbf‘ SIZE 100M,
'homeFichier2_app_pers.dbf‘ SIZE 10M
DEFAULT STORAGE ( INITIAL 100K NEXT 50K MINEXTENTS 4
MAXEXTENTS 100 PCTINCREASE 25 )
EXTENT MANAGEMENT DICTIONARY;
Exemple
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
PCTINCREASE 25 veut dire :
Taille de L’extent suivant = taille de l’extent précédent +25%
storage (initial 100K next 50K minextents 1 maxextents 30 pctincrease 5);
-max 30 extents, le premier à une taille de 100K, le suivant de 50K, puis 5% de plus :
(si un bloc = 4K, ) Le 3eme extent est de : 50K+5%=52.5K=13 blocs
30. Création des tablespaces gérés dans le dictionnaire ( gestion manuelle)
Généralités
– Les informations sur les extensions des segments sont gérées dans le
dictionnaire
– C’ est l’ approche historique de création de tablespaces sous Oracle jusqu’ à la
version 8i
Les extensions des segments peuvent avoir des tailles différentes
Les extensions sont définies par le DBA en s’ appuyant sur les clauses
DEFAULT STORAGE du tablespace ou STORAGE d’ un segment
Ce type de tablespace à partir de la version 9i ne peut être crée que si le
tablespace System est lui même géré dans le dictionnaire
Tablespaces gérés par le Dictionnaire
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
31. Exemple1
SQL> CREATE TABLESPACE APPLI_COMPTA
DATAFILE 'homeFichier1_app_cpt.dbf‘ SIZE 10M AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED EXTENT MANAGEMENT DICTIONARY;
Exemple2
SQL> CREATE TABLESPACE APPLI_PERSONNEL
DATAFILE 'homeFichier1_app_pers.dbf'SIZE 100M, 'homeFichier2_app_pers.dbf‘
SIZE 10M DEFAULT STORAGE ( INITIAL 100K NEXT 50K MINEXTENTS 4
MAXEXTENTS 100 PCTINCREASE 25 )
EXTENT MANAGEMENT DICTIONARY;
Création des Tablespaces gérés par le Dictionnaire
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
32. – Un tablespace géré localement prend en charge la gestion de ses extent
– une Bitmap est créé dans l'entête de chaque fichier pour identifier les Blocs ou les
Extents
– c’est l’Option par défaut d’ Oracle
La taille d’une extension ici peut être calculée automatiquement (AUTOALLOCATE) on
peut la fixe (UNIFORM SIZE…)
Si l'on utilise la clause AUTOALLOCATE Oracle détermine la taille optimale des
extensions de chaque segment avec un minimum de 64K. Vous pouvez préciser la taille
de l’extension INITIALE lors de la création du segment. Oracle s’ en 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 même taille : celle spécifiée lors de la création du tablespace ou celle part
défaut qui est de 1Mo
Tablespaces gérés localemnt
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
33. Avantages par rapport a ceux gérés via le Dictionnaire :
– défragmentation automatique du Tablespace
NOTES :
– Les paramètres de stockage NEXT, PCTINCREASE, MINEXTENTS,
MAXEXTENTS, DEFAULT STORAGE sont ignorés pour les Tablespaces
gérés localement
– Avec la clause UNIFORM SIZE INITIAL n’est pas en plus pris en
compte
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Création de Tablespaces gérés localemnt
BLOCKSIZE. Taille du bloc utilisée par le Tablespace. (2k, 4K, 8K, 16K, 32K,64k)
Sql> SHOW PARAMETER DB_BLOCK_SIZE
34. Exemple 3 :
Création d'un tablespace Local avec la clause AUTOALLOCATE (option par défaut)
Sql> CREATE TABLESPACE TSLOCAL DATAFILE ‘D:ts_local1m.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
Sql>
CREATE TABLE TestLocal(c1 char(4))
storage(initial 1m next 500K minextents 2 maxextents 6) tablespace tslocal
Sql>
select SEGMENT_NAME , EXTENT_ID, BYTES, BLOCKS
from dba_extents where SEGMENT_NAME like ‘TESTLOCAL’;
SEGMENT_NAME EXTENT_ID BYTES BLOCKS
TESTLOCAL 0 10485760 128 ---
TESTLOCAL 1 10485760 128
On voit bien que dans autoallocate le paramètre initial de stockage détermine le nombre
de blocs le reste des paramètres est ignoré (RQ: le bloc oracle =8ko)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Création de Tablespaces gérés localemnt
taille de segment
en bloc oracle
128x8ko=1M
35. Exemple 4 : Création d'un tablespace Local avec la clause UNIFORM SIZE
Sql> CREATE TABLESPACE tslocaluniform DATAFILE
'F:oracleoradatadbtestsTSLOCALts_local_unif1.dbf' SIZE 10M EXTENT
MANAGEMENT LOCAL UNIFORM SIZE 200K;
Sql> CREATE TABLE Testuniform1(c1 char(4)) tablespace tslocaluniform storage(initial
100k next 50K minextents 1 maxextents 2);
Sql> select SEGMENT_NAME , EXTENT_ID, BYTES, BLOCKS
from dba_extents where SEGMENT_NAME ='TESTUNIFORM1';
SEGMENT_NAME EXTENT_ID BYTES BLOCKS
TESTUNIFORM1 0 204800 25
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Création de Tablespaces gérés localement
SEGMENT_NAME nom de segment associé à l'extent
TABLESPACE_NAME nom de tablespace qui contient l'extent
EXTENT_ID numero de lExtent dans le segment
BYTES Taille de l'extent en bytes
BLOCKS Taille de segment en bloc oracle
25x8ko=200K
36. 1) Tablespaces à gestion locale des extents (par défaut !)
Gère la mémoire locallement avec des bitmaps
Améliore les performances
Allège les accès au dictionnaire
Permet le choix automatique de l’unité d’extention
Autorise la gestion automatique de l’espace dans les segments peut s’appliquer à tous les tablespaces
2) Tablespaces gérer par le dictionnaires
Gestion plus précise (car il est faite manuellement)
Nécessite une fusion périodique des extents libres ( défragmentation manuelle)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Gestion des tablespaces : Locale VS Dictionnaire
37. Les tablespaces temporaires
Lorsqu'une requête nécessite un tri qui ne peut pas s'exécuter en mémoire (dans la PGA),
Oracle peut utiliser soit:
•un segment temporaire créé dans n'importe quel tablespace permanent. À éviter, puisqu’à
chaque tri, le segment temporaire sera alloué et libéré. Mauvais pour la performance et pour
la fragmentation.
•Ou un segment temporaire créé dans un tablespace temporaire. Dans ce cas, un segment
de tri est créé par le 1er tri ( 1ere requête) et réutilisable par les tris suivants.
Ce segment est libéré uniquement lors de l’arrêt de l’instance.
- Ces tries peuvent provenir des ordres SQL contenant :
ORDER BY, GROUP BY, DISTINCT, UNION, INTERSECTION, MINUS, CREATE INDEX, SORT,
MERGE …
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces temporaire
38. Exemple de création :
CREATE TEMPORARY TABLESPACE lmtemp
TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
Un tablespace temporaire à un fonctionnement particulier :
- Les modifications ne sont pas enregistrées dans les fichiers de journalisation/redo-log.
- ll ne peut pas être renommé ou déplacé (doit le détruire et le recréer)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces temporaire (suite)
39. Toutes les données d’annulation sont stockées dans un tablespace spécial appelé « UNDO ».
Lorsque vous créez un tablespace « UNDO », Oracle gère le stockage, la rétention et l’emploi de
l’espace pour les données de rollback par l’intermédiaire de la fonction SMU (System-Managed
Undo). Aucun objet permanent n’est placé dans le tablespace undo. Pour pouvoir créer un
tablespace undo à la création de la base de données, il faut prendre soin d’initialiser le paramètre
UNDO_MANAGEMENT=AUTO
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO
40. Rappelez-vous, la syntaxe SQL de création de la base de données comporte
d’abord la création d’un tablespace « SYSTEM » et d’un tablespace « SYSAUX »,
ainsi que la création de tablespaces « TEMP » et « UNDO ».
Attention ! À la création de la base de données, si vous ne précisez pas de
tablespace undo, Oracle crée un tablespace undo appelé « SYS_UNDOTS ».
Le paramètre « UNDO_TABLESPACE » doit avoir la valeur «
SYS_UNDOTS », sinon la base de données ne pourra pas être créée.
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO (suite)
41. La syntaxe de création d’un tablespace UNDO est :
CREATE {BIGFILE|SMALLFILE} UNDO 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}]} ] [,...] ] [{ONLINE | OFFLINE}] ;
____________________________________________________________
UNDO : Indique que le tablespace est de type undo.
Attention!
Le tablespace « UNDO » par défaut est celui qui est précisé dans le paramètre « UNDO_TABLESPACE
Sql> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- --------
undo_tablespace string UNDOTBS1
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO (suite)
42. Sql> create undo tablespace undobis datafile ‘D:fich1.dbf’
size 512m autoextend on next 512m;
Sql> alter system set undo_tablespace =undobis; ( pour activer undobis comme undo)
Système modifié.
Sql> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- -------
undo_tablespace string UNDOBIS
Les information sur l’UNDO sont dans les paramètres suivants : ( show parameter …)
undo_management : Paramètre précisant la méthode de gestion des UNDO (AUTO ou
MANUAL).
undo_tablespace : Tablespace dans lequel seront stockées les informations d'annulation
undo_retention : Durée de rétention des UNDO qu'Oracle va tenter de respecter s'il n'a pas
besoin d'espace supplémentaire
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO (suite)
43. Consulter les table et vues de dictionnaire
DBA_TABLESPACES
V$TABLESPACE
DBA_DATA_FILES
V$DATAFILE
DATABASE_PROPERTIES
Vérification de statut des tablespace:
select status,contents, tablespace_name from dba_tablespaces
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Information sur les tablespaces et les fichiers de données
44. La vue DBA_DATA_FILES va nous permettre de déterminer la taile d'un tablespace,
La vue DBA_EXTENTS permet de connaitre la taille de tous les segments dans les
différents datafiles,
La vue DBA_FREE_SPACE qui indique les espaces libres dans les database files.
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Information sur les tablespaces et les fichiers de données (suite)
SELECT A.tablespace_Name, A.Alloue, B.Occupe, C.Libre FROM
(SELECT tablespace_name, sum(bytes)/1024/1024 AS ALLOUE FROM dba_data_files GROUP BY
tablespace_name) A,
(SELECT tablespace_name, Sum(bytes)/1024/1024 AS OCCUPE FROM dba_segments
GROUP BY tablespace_name) B,
(SELECT tablespace_name, Sum(bytes)/1024/1024 AS LIBREFROM dba_free_space GROUP BY
tablespace_name) C
WHERE B.tablespace_Name = A.tablespace_Name AND C.Tablespace_Name =
B.Tablespace_Name;
La requête suivante vous permet de récupérer toutes ces informations
45. Modification des tablespaces
Renommer un tablespace
ALTER TABLESPACE ancien RENAME TO nouveau;
Ajouter ou supprimer un fichier de données
ALTER TABLESPACE nomTablespace ADD DATAFILE emplacementnomFic SIZE 100M;
ALTER TABLESPACE nomTablespace DROP DATAFILE emplacementnomFic ;
Modifier la taille d’un fichier de données
ALTER database datafile emplacementnomFic RESIZE 55M
Placer un tablespace hors ligne
ALTER TABLESPACE nomTablespace OFFLINE [ NORMAL ];
Placer un tablespace en mode lecture seule
ALTER TABLESPACE nomTablespace READ ONLY (au lieu de READ WRITE);
Supprimer un tablespace
DROP TABLESPACE nomTablespace INCLUDING CONTENTS AND DATAFILES;
- Attention : Ce n’est pas une opération où il y un ROLLBACK possible. À utiliser avec précaution ! Il
est également conseillé de mettre le tablespace OFFLINE avant de le supprimer.
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
46. • Pour créer une table il faut l’associer à un tablespace si non elle est associer
au tablespace par défaut ( SYSAUX)
• On peut aussi spécifier le type de stockage
Syntaxe :
CREATE TABLE NOM_Table (………) [tablespace nom_tablespace ]
[Storage (initial N1 [k,M,G] next N2 [K,M,G]
minextents N3 maxextents N4 ) ] ;
(N1,N2,N3,N4 sont des nombre entiers )
Exemples :
1- SQL> CREATE TABLE TestLocal(c1 char(4) ) tablespace tslocal
storage(initial 500k next 500K minextents 4 maxextents 10);
2- CREATE TABLE Testuniform1(c1 char(4)) tablespace tslocaluniform
storage(initial 100k next 50K minextents 1 maxextents 2);
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Création Les tables
47. Rappels sur les indexes : Principes choix et
création : index btree , BitMap
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes
48. L’index est utile pour accélérer l’exécution d’une requête SQL qui lit des données et ainsi
améliorer les performances d’une application utilisant une base de données
Les 2 types d’index les plus utilisé dans Oracle :
Arbres équilibrés (B-arbre) : toutes les branches de l’arbre ont la même longueur
Il est efficace lorsque les données indexés ne sont pas répétés ( Clé primaire , données uniques)
Bitmap : Si peu de valeurs sont possibles pour les données répétées, une chaine de bits pour chaque
valeur
Un index est un objet complémentaire (mais non indispensable) à la base de données permettant d'"indexer"
certaines colonnes dans le but d'améliorer l'accès aux données par le SGBDR, au même titre qu'un index dans un livre
ne vous est pas indispensable mais vous permet souvent d'économiser du temps lorsque vous recherchez une partie
spécifique
Qu'est-ce qu'un index?
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
49. De manière générale, un index est créé automatiquement lors de la création de la clé
primaire d'une table ;
de la même manière, il est d'usage d'un créer un pour chaque clé étrangère afin d'améliorer
la vitesse lors des jointures.
Un index peut être :
Simplement le stockage des données d'une colonne de table qui sera souvent
sollicitée (surtout au niveau des recherches)
L'ensemble de plusieurs colonnes qui feront l'objet de requête pour les recherches.
Création de l’index
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
50. • Quand créer un index
-----------------------------
Attributs utilisées dans des jointures,
Attributs servant souvent pour les sélections,
Table de gros volume dont la majorité des
interrogations sélectionne moins de 15% des
lignes,
• Quand ne pas créer un index
-------------------------------
Attributs souvent modifiés (index à
recréer...),
Table de petit volume,
si requêtes sur NULL car les NULL, non
stockés dans l’index. (ex : WHERE ... IS
NULL).
Bitmap : attribut à peu de valeurs distinctes,
B-arbre : attribut à beaucoup de valeurs distinctes.
Création de l’index
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
51. La création d'index en SQL se fait grâce à la clause INDEX précédée
de la clause CREATE. Elle permet de définir un index désigné par son nom, portant
sur certains champs d'une table.
La syntaxe est la suivante :
CREATE [UNIQUE] [BITMAP]INDEX Nom_de_l_index ON Nom_de_la_table
(Nom_de_champ [ASCDESC], ...)
Tablespace nom_tablespace_des_index ;
•L'option UNIQUE permet de définir la présence ou non de doublons pour les
valeurs de la colonne
•L'option BITMAP Index de type bitmap
•Les options ASCDESC permettent de définir un ordre de classement des valeurs présentes
dans la colonne
•Supprimer l’INDEX DROP INDEX Nom_Index
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
60. 60
L’index Bitmap Select nom, prenom, job_id from employees
ID NOM Prenom Job_id-
---------------------------------------------------------------------------
101 Neena Kochhar AD_VP
102 Lex De Haan AD_VP
103 Alexander Hunold IT_PROG
104 Bruce Ernst IT_PROG
107 Diana Lorentz IT_PROG
108 Nancy Greenberg FI_MGR
109 Daniel Faviet FI_ACCOUNT
110 John Chen FI_ACCOUNT
111 Ismael Sciarra FI_ACCOUNT
112 Jose Manuel Urman FI_ACCOUNT
113 Luis Popp FI_ACCOUNT
115 Alexander Khoo PU_CLERK
116 Shelli Baida PU_CLERK
117 Sigal Tobias PU_CLERK
118 Guy Himuro PU_CLERK
119 Karen Colmenares PU_CLERK
120 Matthew Weiss ST_MAN
121 Adam Fripp ST_MAN
122 Payam Kaufling ST_MAN
123 Shanta Vollman ST_MAN
124 Kevin Mourgos ST_MAN
125 Julia Nayer ST_CLERK
126 Irene Mikkilineni ST_CLERK
127 James Landry ST_CLERK
128 Steven Markle ST_CLERK
105 David Austin IT_PROG
106 VallPataballa IT_PROG
1 2 3 4 5 6 7 8 …
ST_CLERK 0 0 0 0 0 0 0 0 ..
ST_MAN 0 0 0 0 0 0 0 0 ..
FI_ACCOUNT 0 0 0 0 0 0 1 1 ..
PU_CLERK 0 0 0 0 0 0 0 0 ..
IT_PROG 0 0 1 1 1 0 0 0 ..
AD_VP 1 1 0 0 0 0 0 0 ..
Select * from employees where job_id like
‘FI_ACCOUNT’
L’index Bitmap n’est pas utilisé (exploité) quand
la clause est ( not like , not in , different <>, null)
61. Exemple de création d’index
Créer l’index :
CREATE UNIQUE INDEX idx_clients ON clients(no_client) tablespace index1
CREATE BITMAP INDEX idx_empl ON departments (department_name)
tablespace indextbs
Supprimer l’index DROP index idx_empl
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)