La gestion automatique des fichiers

A partir de la version Oracle9i, il est possible d’utiliser OMF (Oracle Managed Files) pour disposer de la gestion automatique des fichiers physiques de la base de données.

OMF (Oracle Managed Files) a pour but de simplifier l'administration d'une base de données prenant en compte la gestion des fichiers physiques. Oracle utilise son interface avec le système de fichiers pour gérer la création, la modification, ou l'effacement des fichiers nécessaires pour les tablespaces, les groupes des fichiers journaux et les fichiers de contrôle.

en savoir

Les seuls fichiers concernés par cette fonctionnalité sont : les fichiers de données, les fichiers journaux et le fichier de contrôle.

La gestion OMF (Oracle Managed Files) présente les avantages suivants :

Réduit l’espace perdu avec des fichiers obsolètes.

Simplifie la création de base de données de tests et de développements.

Réduit les erreurs d’administration des fichiers de données.

Augmente la portabilité des scripts SQL de création.

L’emplacement des fichiers

Pour pouvoir utiliser la gestion OMF (Oracle Managed Files), vous devez configurer les paramètres d’initialisation suivants : DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_n

La valeur du paramètre « DB_CREATE_FILE_DEST » est le nom d’un répertoire existant indiquant à Oracle où créer les fichiers de données et les fichiers temporaires.

La valeur du paramètre « DB_CREATE_ONLINE_LOG_DEST_n » est le nom d’un répertoire existant indiquant à Oracle où créer les groupes des fichiers journaux et les fichiers de contrôle. La valeur « n » peut être un numéro entre un et cinq et représente le nombre de membres multiplexes que vous souhaitez avoir.

Les paramètres d’initialisation « DB_CREATE_FILE_DEST » et « DB_CREATE_ONLINE_LOG_DEST_n »

sont des paramètres dynamiques que vous pouvez modifier pour correspondre aux besoins d’administration de votre base de données. Les deux paramètres peuvent être modifiés pour l’instance toute entière ou seulement pour sa propre session à l’aide de la syntaxe « ALTER SYSTEM » ou « ALTER SESSION ».

Le changement d’emplacement des ces paramètres ne modifie en rien les fichiers physiques déjà créés dans d’autres répertoires.

En somme, les deux paramètres sont utiles uniquement à la création des fichiers physiques et non pour leur gestion ultérieure.

@>connect sys/Razvanpwd3@rubis as sysdba

Connecté.

SYS@rubis>alter system set db_create_file_dest='+GD_DONNEES';

SYS@rubis>alter system set db_create_online_log_dest_1='+GD_RECUPERATIONS';

SYS@rubis>alter system set db_create_online_log_dest_2='+GD_ARCHIVES';

SYS@rubis> select name, value from v$parameter

  2  where name in ('db_create_file_dest',

  3      'db_create_online_log_dest_1','db_create_online_log_dest_2'

  4      'db_recovery_file_dest','db_recovery_file_dest_size');

 

NAME                             VALUE

-------------------------------- --------------------

db_create_file_dest              +GD_DONNEES

db_create_online_log_dest_1      +GD_RECUPERATIONS

db_create_online_log_dest_2      +GD_ARCHIVES

db_recovery_file_dest            +GD_RECUPERATIONS

db_recovery_file_dest_size       51539607552

 

SYS@rubis>connect sys/Razvanpwd3@agate as sysdba

Connecté.

SYS@agate>alter system set db_create_file_dest='D:\donnees\oradata';

SYS@agate>alter system set db_create_online_log_dest_1=

  2   'R:\recuperations\oradata';

SYS@agate>alter system set db_create_online_log_dest_2=

  2      'A:\archives\oradata';

SYS@agate>select name, value from v$parameter

  2  where name in ('db_create_file_dest',

  3      'db_create_online_log_dest_1','db_create_online_log_dest_2'

  4      'db_recovery_file_dest','db_recovery_file_dest_size');

 

NAME                             VALUE

-------------------------------- ----------------------------------

db_create_file_dest              D:\donnees\oradata

db_create_online_log_dest_1      R:\recuperations\oradata

db_create_online_log_dest_2      A:\archives\oradata

db_recovery_file_dest            O:\app\oracle\fast_recovery_area

db_recovery_file_dest_size       7266631680

La zone de récupération rapide est identifiée par le paramètre « DB_RECOVERY_FILE_DEST » mais également par le paramètre « DB_RECOVERY_FILE_DEST_SIZE » qui détermine la taille maximale de stockage dans ce répertoire.

La zone de récupération rapide contient le multiplexage automatique des fichiers de contrôle et des journaux si vous n’avez pas initialisé un des paramètres :« DB_CREATE_ONLINE_LOG_DEST_n ».

Il faut considérer que chaque fichier de contrôle ou chaque ficher des journaux créé va avoir une copie dans l’emplacement défini par le paramètre « DB_RECOVERY_FILE_DEST ».

Le nom des fichiers

Une fois que les paramètres de stockage pour les fichiers de la base de données ont été initialisés avec des répertoires de votre système de fichiers actuel ou des groupes de disques de l’instance Oracle ASM, les noms des fichiers ne sont plus nécessaires pour la création du fichier de contrôle, des tablespaces, ou des fichiers de journaux.

Chaque fois que vous voulez créer un fichier de la base de données Oracle, crée automatiquement dans ce répertoire un sous-répertoire avec le nom du paramètre « DB_UNIQUE_NAME » s’il n’existe pas déjà. Ensuite pour stocker le fichier, il crée un autre sous-répertoire suivant le type du fichier de la base de données que vous voulez créer : « CONTROLFILE » pour les fichiers de contrôles, « DATAFILE » pour les fichiers de données ou « ONLINELOG » pour les fichiers de journaux.

Pour les fichiers stockés dans des répertoires de votre système de fichiers, le format du nom du fichier est le suivant :

Pour un fichier de données :     o1_mf_%t_%u_.dbf

Pour un fichier temporaire :      o1_mf_%t_%u_.tmp

Pour un fichier de journal :       o1_mf_%g_%u_.log

Pour un fichier de contrôle :     o1_mf_%u_.ctl

%u                Spécifie une chaine de caractères d’une longueur de huit caractères qui sert d’identifiant unique pour le fichier.

%t                Spécifie le nom du tablespace. Attention, il prend en compte uniquement les huit premiers caractères.

%g                Spécifie le numéro du groupe des fichiers journaux.

GUID              L’identifiant unique d’une base de données insérée (Global Unique Identifier). Vous pouvez trouver cet identifiant en interrogeant la vue « V$PDBS ».

Pour les fichiers stockés dans des groupes de disques, le format du nom du fichier est le suivant :

nom.fichier.incarnation

file.incarnation  Spécifie le numéro du fichier et son incarnation dans le groupe de disques ASM ; sert d’identifiant unique pour le fichier.

nom               Le nom suivant le type du fichier. Pour un fichier de contrôle : « curent » ou « backup » suivant qu’il s’agisse du fichier courant ou de la sauvegarde. Pour un fichier de données ou temporaire : le nom complet du tablespace. Pour tous les fichiers des journaux, le nom est composé du préfixe « group_ » et du numéro du groupe.

@>connect sys/Razvanpwd3@rubis as sysdba

SYS@rubis>select type, fichier from (

  2  select 'spfile' type, value fichier

  3  from v$parameter where name = 'spfile'          union all

  4  select 'contrôle' type, name from v$controlfile union all

  5  select 'donnée' type, name from v$datafile      union all

  6  select 'temporaire' type, name from v$tempfile  union all

  7  select 'journal' type, member from v$logfile );

 

TYPE       FICHIER

---------- -----------------------------------------------------------

spfile     /u01/app/oracle/product/12.1.0/db_home/dbs/spfilerubis.ora

contrôle   +GD_RECUPERATIONS/RUBIS/CONTROLFILE/current.261.840669157

contrôle   +GD_DONNEES/RUBIS/CONTROLFILE/current.270.840669157

donnée     +GD_DONNEES/RUBIS/DATAFILE/system.256.840664649

...

temporaire +GD_DONNEES/RUBIS/TEMPFILE/temp.259.840664711

journal    +GD_RECUPERATIONS/RUBIS/ONLINELOG/group_1.258.840668719

journal    +GD_DONNEES/RUBIS/ONLINELOG/group_1.262.840668721

...

SYS@rubis>connect sys/Razvanpwd3@agate as sysdba

SYS@agate>select type, fichier from (

  2  select 'spfile' type, value fichier

  3  from v$parameter where name = 'spfile'          union all

  4  select 'contrôle' type, name from v$controlfile union all

  5  select 'donnée' type, name from v$datafile      union all

  6  select 'temporaire' type, name from v$tempfile  union all

  7  select 'journal' type, member from v$logfile );

 

TYPE       FICHIER

---------- ----------------------------------------------------------------

spfile     O:\APP\ORACLE\PRODUCT\12.1.0\DB_HOME\DATABASE\SPFILEAGATE.ORA

contrôle   D:\DONNEES\ORADATA\AGATE\CONTROLFILE\O1_MF_9KM3J31X_.CTL

contrôle   O:\APP\ORACLE\FAST_RECOVERY_AREA\AGATE\CONTROLFILE\O1_MF_9KM3J3D5_.CTL

donnée     D:\DONNEES\ORADATA\AGATE\DATAFILE\O1_MF_SYSTEM_9KM35Y3J_.DBF

...

temporaire D:\DONNEES\ORADATA\AGATE\DATAFILE\O1_MF_TEMP_9KM3K3M1_.TMP

journal    D:\DONNEES\ORADATA\AGATE\ONLINELOG\O1_MF_3_9KM3JJWB_.LOG

journal    D:\DONNEES\ORADATA\AGATE\ONLINELOG\O1_MF_2_9KM3JDJ4_.LOG

journal    D:\DONNEES\ORADATA\AGATE\ONLINELOG\O1_MF_1_9KM3J82X_.LOG

 

SYS@agate>connect sys/Razvanpwd3@pierres as sysdba

SYS@pierres>select name from (

  2  select null id, 'CDB$ROOT-contrôles' name,-5 t from dual union all

  3  select null id, name,-4 t from v$controlfile union all

  4  select null id, 'CDB$ROOT-jounaux',-3 t from dual union all

  5  select null, member,-2 from v$logfile  union all

  6  select null id, 'CDB$ROOT-données',-1 t from dual union all

  7  select con_id, name,0 from v$pdbs union all

  8  select con_id, name,2 from v$datafile union all

  9  select con_id, name,3 from v$tempfile)

 10  order by id nulls first, t;

 

NAME

---------------------------------------------------------------------------

CDB$ROOT-contrôles

R:\RECUPERATIONS\ORADATA\PIERRES\CONTROLFILE\O1_MF_9KC02TOR_.CTL

CDB$ROOT-jounaux

R:\RECUPERATIONS\ORADATA\PIERRES\ONLINELOG\O1_MF_4_9KC032X4_.LOG

R:\RECUPERATIONS\ORADATA\PIERRES\ONLINELOG\O1_MF_5_9KC035HG_.LOG

...

CDB$ROOT-données

D:\DONNEES\ORADATA\PIERRES\DATAFILE\O1_MF_SYSTEM_9KC03HDK_.DBF

...

PDB$SEED

D:\DONNEES\ORADATA\PIERRES\9B5...805\DATAFILE\O1_MF_SYSTEM_9KC03PTQ_.DBF

...

JASPE

D:\DONNEES\ORADATA\PIERRES\JASPE\SYSTEM_JASPE.DBF

...

AMBRE

+GD_DONNEES/PIERRES/FE2...4F9/DATAFILE/donnes_onyx.294.841422653

D:\DONNEES\ORADATA\PIERRES\ONYX\SYSTEM_JASPE.DBF

...

HEMATITE

+GD_DONNEES/GEMMES/372...B2E/DATAFILE/system.291.841418839

...

EMERAUDE

+GD_DONNEES/PIERRES/o1_mf_system_9kfx07dd_.dbf

...

La configuration Flashback

Depuis la version Oracle 10g, il est possible de définir une base de données en mode « FLASHBACK », ce qui vous permet, en cas d’erreur humaine majeure, de remettre la base dans un état antérieur à l’erreur.

L’emplacement des fichiers de journaux flashback est spécifié dans le paramètre « DB_RECOVERY_FILE_DEST » avec la taille maximale de stockage indiquée dans le paramètre « DB_RECOVERY_FILE_DEST_SIZE ». Il faut également initialiser la période de conservation des données d’annulation à l’aide du paramètre « DB_FLASHBACK_RETENTION_TARGET ».

RMAN

RMAN utilise automatiquement cet emplacement pour stocker l’ensemble des sauvegardes et, suivant la politique de conservation, il se charge alors de gérer l'espace de la zone de récupération rapide en supprimant, si nécessaire, les sauvegardes obsolètes ou les sauvegardes recopiées sur bande.

Le paramètre « DB_RECOVERY_FILE_DEST_SIZE » spécifie la taille maximale de la zone de récupération rapide. Vous devez vous assurer qu'une quantité d'espace suffisante est disponible pour les sauvegardes. Si la taille maximale est atteinte, RMAN supprime automatiquement les sauvegardes obsolètes. Il fait apparaître une alerte dans le fichier journal lorsque la quantité d'espace occupé par les sauvegardes non obsolètes atteint plus de 10 % de la valeur de ce paramètre.

Dans le cas ou l’espace est insuffisant même après la suppression de sauvegardes obsolètes, RMAN refuse d’effectuer la sauvegarde.