STRUCTURE LOGIQUE PHYSIQUE ORACLE. Une base de données Oracle comporte des structures logiques et des structures physiques. Elle est constituée physiquement de plusieurs fichiers de données regroupés logiquement en Tablespace. Chaque base de données est divisée logiquement en plusieurs Tablespaces. Le fichier de données d'un tablespace peut être stocké physiquement sur toutes les technologies de stockage pris en charge par Oracle. Rappel : A partir de la version 10G d'oracle, une base de données comporte au minimum deux fichiers de données appartenant aux Tablespaces SYSTEM et SYSAUX. Structure logique de stockage Tablespace Oracle. Un tablespace est une unité logique de stockage dans Oracle, elle est composée d'un ou plusieurs fichiers physiques appelés fichiers de données. Les niveaux de stockages suivant dans un tablespace Oracle sont les segments, composés d'extents, composés de bloc de données Oracle. Niveau logique de stockage Segment Oracle. L'espace occupé par un objet dans une tablespace est appelé segment. Un segment est un ensemble d'extents alloués et appartient à un tablespace. Lorsque qu'un segment est crée, une ou plusieurs extensions lui sont attribuées. 1
Segments de données ou Segments de tables. Espace occupé par les tables, les données de table sont stockées dans les extents du segment de tables. Segments d'index. Espace occupé par les index, les données des index sont stockées dans les extents du segment d'index. Segments d'annulation. Espace temporaire utilisé pour stocker les données permettant d'annuler une transaction. Les segments d'annulation sont spécifiques au tablespace UNDO. Segments temporaire. Espace temporaire créé par la base Oracle lorsque l'exécution d'une instruction SQL requiert une zone de travail temporaire, notamment lors d'un tri. Il existe d'autres segments, les objets de schéma tels que les vues, triggers, packages qui sont stockés dans des segments de métadonnées du système. Niveau logique de stockage Extent Oracle. Un extent ou extension est un ensemble de blocs contigus dans l'organisation logique d'une base de données Oracle. Un extent est composé d'un nombre de blocs de données. Niveau logique de stockage Bloc Oracle. Le bloc de données Oracle est le niveau le plus fin. Le bloc de données correspond à un nombre d'octets spécifique d'espace physique sur le disque. La taille des blocs est définie lors de la création du tablespace. C'est depuis la version 9i d'oracle, qu'il est maintenant possible d'utiliser plusieurs tailles de bloc dans une base de données. 2
Exemple de structure de stockage logique. Stockage logique des objets dans les tablespaces. SQL> SELECT tablespace_name, 2 status, 3 contents, 4 extent_management 5 FROM dba_tablespaces; TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN ------------------------------ --------- --------- ---------- SYSTEM ONLINE PERMANENT LOCAL UNDOTBS1 ONLINE UNDO LOCAL SYSAUX ONLINE PERMANENT LOCAL TEMP ONLINE TEMPORARY LOCAL USERS ONLINE PERMANENT LOCAL COMPTA ONLINE PERMANENT LOCAL RMAN_CATALOG ONLINE PERMANENT LOCAL DATA ONLINE PERMANENT LOCAL TBS_DATA ONLINE PERMANENT LOCAL Exemple de structure de stockage physique. Stockage physique des données dans les fichiers de données. SQL> SELECT name 2 FROM v$datafile; NAME ------------------------------------------------------------- C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSTEM01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\UNDOTBS01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSAUX01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\USERS01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\COMPTA.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\RMAN_CATALOG_01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA_2.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\TBS_DATA.DBF 3
Create TABLESPACE Oracle Création Tablespace permanent avec l'ordre sql CREATE TABLESPACE. Comment créer un tablespace permanent dans ma base de données Oracle?. Cet article ne traite pas la création de Tablespaces dit technique (UNDO et TEMPORARY) mais la création de Tablespaces permanents ( stockage tables, index, procédures, objets,...). Rappel : Un Tablespace est une unité logique de stockage composée de fichiers physiques. Le stockage est organisé en Segments et Extents. Un Tablespace peut être géré dans le dictionnaire ou localement. On appelle Tablespace permanents, les Tablespace autres que TBS UNDO et TBS TEMPORARY. A partir de la version 10G, Oracle permet la création de Tablespace Bigfile (1 fichier unique volumineux), sinon il est appelé Tablespace Smallfile par défaut. Un Tablespace peut être ONLINE (accessible) ou OFFLINE (inaccessible). Un Tablespace peut être en READ WRITE (lecture/écriture) ou READ ONLY (lecture). Syntax ordre sql CREATE TABLESPACE Permanent. CREATE [ BIGFILE SMALLFILE ] TABLESPACE Name DATAFILE file_specification SIZE integer [ K M G T P E ] [REUSE] AUTOEXTEND { OFF ON [ NEXT integer [ K M G T P E ]] [ MAXSIZE { UNLIMITED integer [ K M G T P E ] } ] DEFAULT [ { COMPRESS NOCOMPRESS } ] STORAGE ({ INITIAL integer [ K M G T P E ] NEXT integer [ K M G T P E ] MINEXTENTS integer MAXEXTENTS { integer UNLIMITED } PCTINCREASE integer FREELISTS integer FREELIST GROUPS integer OPTIMAL [ integer [ K M G T P E ] NULL ] BUFFER_POOL { KEEP RECYCLE DEFAULT } }) EXTENT MANAGEMENT { LOCAL 4
[ AUTOALLOCATE UNIFORM [ SIZE integer [ K M G T P E ] ] ] DICTIONARY } SEGMENT SPACE MANAGEMENT { AUTO MANUAL } [ MINIMUM EXTENT integer [ K M G T P E ] BLOCKSIZE integer [ K ] { LOGGING NOLOGGING } FORCE LOGGING FLASHBACK { ON OFF } { ONLINE OFFLINE }; Peta exa zetta yota Création d'un Tablespace avec une gestion locale uniforme des extensions. SQL> CREATE SMALLFILE TABLESPACE "DATA" DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA.DBF' SIZE 2G AUTOEXTEND ON NEXT 100M MAXSIZE 5000M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M SEGMENT SPACE MANAGEMENT AUTO; Création d'un Tablespace avec une gestion locale automatique des extensions. SQL> CREATE SMALLFILE TABLESPACE "DATA" DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA.DBF' SIZE 2G AUTOEXTEND ON NEXT 100M MAXSIZE 5000M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; 5
Descriptions de quelques Options. BIGFILE SMALLFILE. Si cette clause est omise, Oracle prendra le type par défaut défini au niveau de la base de données. Name. C'est le nom que vous donnerez à votre Tablespace. DATAFILE file_specification. Permet de préciser l'emplacement du fichier de données pour le Tablespace. AUTOEXTEND. Indique si le fichier pourra grossir une fois l'espace alloué est utilisé. NEXT. Espace alloué lors de l'extension. MAXSIZE. Taille maximale du fichier. EXTENT MANAGEMENT. Mode de gestion des extensions du Tablespace. SEGMENT SPACE MANAGEMENT. Mode de gestion de l'espace libre des segments dans le Tablespace.(clause valable si TBS géré localement uniquement). MINIMUM EXTENT. Taille minimum des Extensions dans le Tablespace. (clause valable si TBS géré dans le Dictionnaire uniquement). BLOCKSIZE. Taille du bloc utilisée par le Tablespace. (2k, 4K, 8K, 16K, 32K) LOGGING NOLOGGING. Définit le mode de journalisation des segments qui seront stockés dans le Tablespace. Clause ignorée si FORCE LOGGING est actif niveau Tablespace ou Base de données. FORCE LOGGING. Permet de garantir que les modifications sont enregistrées dans les fichiers de journalisation. FLASHBACK { ON OFF. Indique si le Tablespace participe aux opérations de FLASHBACK Database. ONLINE OFFLINE. Indique si le Tablespace est crée Online ou Offline. 6