Espace stockage

De knowledge
Aller à la navigation Aller à la recherche

Espace de stockage sous Oracle

Le stockage physique de stockage Oracle est faite de fichiers disque (idéalement répartis sur plusieurs volumes physiques) et assignés a tel ou tel tablespace.

Liste et taille des fichiers sur le disque

Pour avoir la liste des fichiers sur le disque on utilise la requête suivante:

 select file_name, tablespace_name, bytes
  from dba_data_files
  ORDER BY TABLESPACE_NAME;
la liste est sous la forme
file_name tablespace_name bytes
/u01/oradata/proddb/indexes01.dbf INDEXES 3386900480
/u01/oradata/proddb/RMAN.dbf RMAN 5242880000
/u01/oradata/proddb/SOP_DATA_1.dbf SOP_DATA 2097152000
/u02/oradata/proddb/sysaux01.dbf SYSAUX 2097152000
/u01/oradata/proddb/tables01.dbf TABLES 20971520000

Occupation des tablespaces

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 LIBRE from dba_free_space group by tablespace_name) c
WHERE B.tablespace_Name = A.tablespace_Name
AND C.Tablespace_Name = B.Tablespace_Name;


Manipulation de fichiers

Redimensionner

Essayons de modifier la taille du fichier /u01/oradata/proddb/tables01.dbf.

La requête est:

 alter database datafile '/u01/oradata/proddb/tables01.dbf' resize 15m

Pour lui donner la taille de 15 Mo (15g pour 15 Go)

Les erreurs possibles sont:

  • ORA-03297: On demande à redimensionner un fichier à une taille trop petite pour contenir les données.
  • ORA-00740: La taille est supérieure a ce que le systeme de fichier est capable de gérer
  • ORA-01144: Le nombre de blocs est supérieur au max d'Oracle.

Ajouter un fichier

On voudrait ajouter un second fichier pour le stockage du tablespace TABLES.

 ALTER TABLESPACE TABLES
  ADD DATAFILE '/u01/oradata/proddb/tables02.dbf' SIZE 30M;

Si on souhaite que ce fichier soit géré en mode 'autoextend':

 ALTER DATABASE DATAFILE '/u01/oradata/proddb/tables02.dbf'
  AUTOEXTEND ON
  NEXT 30m
  MAXSIZE 1g

Ou désactiver le mode 'autoextend':

 ALTER DATABASE DATAFILE '/u01/oradata/proddb/tables02.dbf'
  AUTOEXTEND OFF