DBA - Partie II
DBA - Partie II
DBA - Partie II
Administration Oracle
11g
Partie II
Noreddine GHERABI
FILIERE
DES INGENIEURS-GI
Sommaire
Noreddine GHERABI
I-
ORACLE_SID=nom_de_instance
ORACLE_HOME=home_oracle
PATH=homme_oracle\bin
Sqlplus
# Cache et E/S
db_block_size=4096
db_cache_size=33554432
# Configuration du fichier de contrle
control_files=("C:\oracle\ora \CONTROL01.CTL",
"C:\ oracle\ora \CONTROL02.CTL",
# Diagnostics et statistiques
diagnostic_dest=C:\oracle\ora\diag\bdump
# Le nom de la base de donnes
db_name=DBTEST
# Diver
- compatible=9.0.0
# Pools
- java_pool_size=33554432
- large_pool_size=1048576
- shared_pool_size=33554432
Exemple :
ora.__db_cache_size=163577856
ora.__java_pool_size=12582912
ora.__large_pool_size=4194304
3
Noreddine GHERABI
ora.__pga_aggregate_target=331350016
ora.__sga_target=490733568
ora.__shared_pool_size=285212672
ora.__streams_pool_size=12582912
*.compatible='11.2.0.0.0'
*.control_files='G:\oracle\ora\control01.ctl','G:\oracle\ora\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='ora'
*.diagnostic_dest='G:\oracle\ora'
*.sga_max_size=821035008
*.memory_target=821035008
*.shared_pool_reserved_size=12582912
5- Cration de linstance
Pour crer une nouvelle instance nous allons utiliser loutil de oracle appel
ORADIM :
6- Connection linstance :
-
8- Dmarrage de linstance
-
Noreddine GHERABI
9- Cration de la base
Maintenant nous pouvons crer la base de donnes en spcifiant les
paramtres ncessaires de cration :
CREATE DATABASE [nom_base]
[ USER SYS IDENTIFIED BY mot_de_passe ]
[ USER SYSTEM IDENTIFIED BY mot_de_passe ]
[ CONTROLFILE REUSE ]
[ DATAFILE spcification_fichier [,...] ]
[ SYSAUX DATAFILE spcification_fichier [,...] ]
[[ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom
[ DATAFILE spcification_fichier [,...] ] ]
[[ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom
[ TEMPFILE spcification_fichier [,...] ]
[ DEFAULT TABLESPACE nom
[ DATAFILE spcification_fichier [,...] ]
[ LOGFILE [GROUP numro] spcification_fichier_redo [,...] ]
[ ARCHIVELOG | NOARCHIVELOG ]
[ MAXINSTANCES nombre ]
[ MAXLOGFILES nombre ]
[ MAXLOGMEMBERS nombre ]
[ MAXDATAFILES nombre ] ;
Exemple :
CREATE DATABASE ora
USER SYS IDENTIFIED BY manager
USER SYSTEM IDENTIFIED BY manager
LOGFILE GROUP 1 ('G:\oracle\ora\redo01.log') SIZE 100M,
GROUP 2 ('G:\oracle\ora\redo02.log') SIZE 100M,
GROUP 3 ('G:\oracle\ora\redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
DATAFILE 'G:\oracle\ora\system01.dbf' SIZE 325M
SYSAUX DATAFILE 'G:\oracle\ora\sysaux01.dbf' SIZE 325M
UNDO TABLESPACE undotbs
DATAFILE 'G:\ORACLE\ORA\undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
10-
Noreddine GHERABI
Aprs il faut excuter les 3 codes SQL en dessous pour crer le dictionnaire
de donnes :
SQL> @%ORACLE_HOME%/rdbms/admin/catalog.sql
SQL> @%ORACLE_HOME%/rdbms/admin/catproc.sql
SQL> @%ORACLE_HOME%/sqlplus/admin/pupbld.sql
II-
Dans cette partie, nous allons faire le lien entre les structures logiques dOracle et ces
fichiers.
Nous allons tudier comment Oracle stocke les donnes des tables et des index dans
les fichiers et comment ces donnes sont gres physiquement sur le disque.
1- Notion de tablespace
Un tablespace est une unit logique de stockage compose dun ou de plusieurs
fichiers physiques.
Les fichiers de donnes sont dcoups en blocs dune taille dfinie la cration de la
base de donnes (2 ko, 4 ko, 8 ko, etc ). La taille des blocks Oracle correspondent
un multiple du block gr par le systme dexploitation.
La taille dun bloc Oracle correspond au paramtre DB_BLOCK_SIZE.
En version 10, Oracle a introduit la notion de tablespace BIGFILE : un tablespace
BIGFILE est un tablespace compos dun seul fichier de donnes qui peut tre
particulirement volumineux (jusqu 2^32 blocs Oracle soit plus de 4 milliards de
blocs). A contrario, un tablespace traditionnel, dornavant appel tablespace
SMALLFILE, peut contenir plusieurs fichiers de donnes (jusqu 1 022 fichiers),
mais de taille plus limite ("seulement" 2^22 blocs Oracle, soit tout de mme plus de
4 millions de blocs).
Lorsquun tablespace SMALLFILE contient plusieurs fichiers de donnes, les fichiers
sont gnralement situs sur des disques diffrents avec deux objectifs possibles :
- Allouer de lespace supplmentaire un tablespace dont le fichier de donnes
initial ne peut plus stendre ;
- Rpartir le stockage du tablespace sur plusieurs disques (striping au niveau
dOracle).
Il y a 4 types de segments grs dans une base Oracle :
Les segments de table = espace occup par les tables
Les segments dindex = espace occup par les index
Les segments dannulation = espace temporaire utilis pour stocker les
informations permettant dannuler une transaction (ROLLBACK).
Les segments temporaires = espace temporaire utilis lors dun tri dans une
requte.
Noreddine GHERABI
Ainsi on mettra les tables et les index dans des tablespaces ddis aux tables ou aux
index, les segments temporaires dans des tablespaces temporaires et les segments
dannulation dans le tablespace UNDO.
Lespace utilis par les objets sur le disque est appel segment (comme les tables par
exemple).
1.1
Noreddine GHERABI
1.2
Structure
1.3
1.4
Noreddine GHERABI
Noreddine GHERABI
- FORCE LOGGING : oblige lenregistrement des segments dans les Redo Log
mme si la clause NOLOGGING est dfinie.
- ONLINE | OFFLINE : indique si le tablespace est accessible (ON) ou non (OFF).
Exemple : Tablespace pour les tables, avec une gestion locale uniforme des extensions :
CREATE TABLESPACE data
DATAFILE g:\oracle\ora\data01.dbf SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 800M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M
SEGMENT SPACE MANAGEMENT AUTO;
10
Noreddine GHERABI
Pour retrouver le nom du tablespace permanent par dfaut, vous pouvez interroger
la
vue
DATABASE_PROPERTIES
pour
la
proprit
DEFAULT_PERMANENT_TABLESPACE :
SELECT property_value FROM database_properties
WHERE property_name = DEFAULT_PERMANENT_TABLESPACE ;
3.1
Renommer un tablespace
3.2
11
Noreddine GHERABI
3.3
Modifier la taille dun fichier de donnes seffectue avec lordre SQL ALTER
DATABASE, ou lordre SQL ALTER TABLESPACE dans le cas dun tablespace
BIGFILE.
Syntaxe
ALTER DATABASE
DATAFILE nom_complet | numro_fichier [,...] RESIZE valeur [K|M|G|T];
ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T];
Exemples :
- Tout type de tablespace
ALTER DATABASE
DATAFILE g:\oracle\ora\data02.dbf RESIZE 200M;
-
3.4
Modifier lextension automatique dun fichier de donnes seffectue avec lordre SQL
ALTER DATABASE, ou lordre SQL ALTER TABLESPACE dans le cas dun
tablespace BIGFILE.
Syntaxe
ALTER DATABASE
DATAFILE nom_complet | numro_fichier[,...] clause_auto_extension;
ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension;
La spcification de la clause dextension automatique (clause_auto_extension) est la
mme que lors de la cration du tablespace (section Cration dun tablespace
permanent).
Exemple :
- Dsactivation de la clause AUTOEXTEND
ALTER DATABASE
DATAFILE g:\oracle\ora\data01.dbf AUTOEXTEND OFF;
- Activation (ou modification) de la clause AUTOEXTEND
ALTER DATABASE
DATAFILE g:\oracle\ora\data01.dbf
AUTOEXTEND ON NEXT 200M MAXSIZE 800M;
- Exemple avec un tablespace BIGFILE
ALTER TABLESPACE grand_fichier
AUTOEXTEND ON NEXT 1G MAXSIZE 100G;
12
Noreddine GHERABI
3.5
3.6
3.7
Supprimer un tablespace
13
Noreddine GHERABI
3.8
Supprimer un fichier de donnes dun tablespace seffectue avec lordre SQL ALTER
TABLESPACE.
Le fichier de donnes doit tre vide (ne doit contenir aucune extension) ;
Le fichier de donnes ne peut pas tre le premier fichier cr pour le
tablespace ;
Le fichier de donnes ne doit pas appartenir un tablespace en lecture seule ;
Le fichier de donnes doit tre en ligne (ONLINE) ;
Le fichier ne doit pas appartenir au tablespace SYSTEM.
Syntaxe :
ALTER TABLESPACE nom DROP DATAFILE nom_complet;
4- Le tablespace UNDO
Le tablespace UNDO, comme son nom l'indique, est rserv exclusivement
l'annulation des commandes DML (UPDATE, INSERT, etc...).
Lorsqu'on excute l'ordre DELETE par exemple, Oracle commence par copier les
lignes supprimer dans le tablespace UNDO et ensuite indique que les blocs
contenant
les
donnes
dans
le
tablespace
d'origine
sont
libres.
Un ROLLBACK permettre de revenir en arrire alors que le COMMIT supprimera les
lignes du tablespace UNDO (on comprend mieux ici pourquoi un DELETE est si long
: 2 critures pour une suppression :-/).
4.1
Noreddine GHERABI
4.2
ALTER SYSTEM
SET UNDO_TABLESPACE=undotbs;
5- Tablespaces temporaires
Le tablespace temporaire hberge les segments temporaires issus des requtes ou des
commandes SQL telles que :
Select order by
Select group by
Select distinct ...
Les requtes ensemblistes (UNION, MINUS, INTERSECT)
Create INDEX
Les jointures ( JOIN)
Les tables temporaires (CREATE GLOBAL TEMPORARY TABLE )
Lorsquune requte ncessite un tri, Oracle tente de faire le tri en mmoire dans la
PGA du processus serveur qui excute la requte. Sil ne peut pas car le tri ne tient
pas en mmoire, Oracle le dcoupe en morceaux et trie chaque morceau en stockant
des rsultats intermdiaires sur disque dans des segments temporaires.
Au bout dun certain temps ces segments temporaires sont supprims par Oracle.
Le tablespace temporaire par dfaut ainsi cr est forcment gr localement. Il a
une taille de bloc correspondant au paramtre DB_BLOCK_SIZE.
informations sur les tablespaces par dfaut
Select property_name, property_value
from database_properties where property_name like DEFAULT_%;
5.1
Noreddine GHERABI
5.2
5.3
5.4
5.5
5.6
16
Noreddine GHERABI
5.7
5.8
I-
1- Notion de segment
Lespace utilis par les objets sur le disque est appel segment (comme les tables
par exemple).
A lintrieur dun tablespace, le stockage est organis en segments comportant un ou
plusieurs extents (ensemble de bloc Oracle contigus de taille DB_BLOCK_SIZE dans
un fichier de donnes).
Pour mmoire, il existe quatre types principaux de segments :
les segments de table : espace occup par les tables ;
les segments dindex : espace occup par les index ;
les segments dannulation : espace temporaire utilis pour stocker les
informations permettant dannuler une transaction ;
17
Noreddine GHERABI
les segments temporaires : espace temporaire utilis notamment lors dun tri.
La premire extension dun segment contient au minium deux blocs, le premier tant
rserv lentte du segment (ne contient pas de donnes utiles mais la carte des
extensions alloues au segment). Il en est de mme pour chaque fichier de donnes
du tablespace ; le premier bloc est un bloc dentte (nous verrons bientt que lentte
Du fichier peut contenir davantage de blocs).
Un tablespace peut tre "gr par le dictionnaire" ou "gr localement".
Dans un tablespace "gr par le dictionnaire", les informations relatives la gestion
de lespace (extensions libres/alloues) sont enregistres dans le dictionnaire de
donnes.
Dans un tablespace "gr localement", les informations relatives la gestion de
lespace (extensions libres/alloues) sont enregistres dans un bitmap, dans lentte
de chaque fichier de donnes du tablespace. Chaque bit du bitmap correspond une
extension et vaut 0 ou 1 selon que lextension est libre ou alloue.
Les tablespaces grs localement sont apparus dans Oracle8i. Depuis Oracle9i, les
tablespaces sont, par dfaut, grs localement (sauf le tablespace SYSTEM qui est, par
dfaut, gr par le dictionnaire.
Oracle propose deux variantes pour les tablespaces grs localement :
Une gestion dite "automatique" : la taille des extensions est dtermine
automatiquement par Oracle.
Une gestion dite "uniforme" : la taille des extensions est uniforme, gale une
valeur dfinie lors de la cration du tablespace.
Par dfaut, un tablespace permanent gr localement est en gestion automatique des
extensions ; la gestion uniforme doit tre spcifie.
Un tablespace temporaire gr localement est obligatoirement en gestion uniforme
des extensions (dtaill ultrieurement).
Tablespace
Segment 1
Extent 1
Segment 1
Extent 3
Segment 2
Extent 1
Segment 2
Extent 2
Segment 3
Extent 1
Segment 1
Extent 2
Fichier 1.dbf
Fichier 2.dbf
18
Noreddine GHERABI
19
Noreddine GHERABI