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.
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.