Gestion automatique des emplacements

Posted by on 14/nov/2010 in Bases de données, Oracle | 0 comments

Gestion automatique des emplacements

Lorsque l’on configure une base de données, on se doit de spécifier certaines destinations dans le but d’indiquer à Oracle les emplacements de stockage des fichiers de données, des journaux, des fichiers de contrôles, des fichiers d’archives et de certains autres (espaces de zones de recovery rapide, emplacements des dumps, …).

Pour chacun de ces types de fichier, le DBA a la possibilité d’indiquer lui-même les emplacements physiques ou bien s’il le souhaite, peut utiliser une gestion automatique des emplacements par Oracle lui-même, ce qui procure une certaine simplicité de gestion des fichiers (sauvegardes, …) et rend l’utilisation des indicateurs d’emplacements dans les commandes Oracle ainsi obsolètes, simplifiant donc également l’ensemble des commandes SQL de manipulation des fichiers de base de données.

1 – Paramètres systèmes Oracle :

db_create_dest_file: Si ce paramètre (optionnel) est renseigné, la création de tout fichier de données de tablespace se fera à cet emplacement. Il sera alors inutile de spécifier un emplacement ou un nom de fichier, Oracle se positionnera dans cet emplacement et générera un nom de fichier en fonction du nom du tablespace et de certains autres critères.

db_create_recovery_file_dest: Si ce paramètre (optionnel) est renseigné, Oracle considèrera que celui-ci indique la zone de restauration rapide (FLASHBACK recovery area) de votre base de données. Cet emplacement servira également pour le multiplexage des fichiers de contrôles si le paramètre suivant n’est pas spécifié.

db_create_online_log_dest_<n>: Ce paramètre (optionnel) indique l’emplacement du multiplexage numéro <n> (n = {1 .. 4}) des journaux de votre database (redologs). Si ce paramètre est renseigné, il sert également pour lemultiplexage des fichiers de contrôles.

log_archive_dest_<n>: Si ce paramètre (optionnel) est renseigné, il indique alors l’emplacement du multiplexagenuméro <n> (n = {1 .. 10}) des fichiers d’archives des journaux de votre database (archivelogs). Si ce paramètre n’est pas renseigné et que la database est en mode ARCHIVE_LOGS, alors leur emplacement se fera sous $ORACLE_HOME/admin, ce qui est très dangereux pour de multiples raisons (oubli dans les sauvegardes, « explosion » de la partition, …)

Note: Il est recommandé de spécifier ces paramètres à la création de la base de données même si ceux-ci sont modifiables après cette opération, mais il faudra alors un restart de votre instance pour les prendre en compte.

2 – Illustration :

Si les 4 paramètres précédents sont renseignés, vous pourrez par exemple créer ajouter un fichier de données à un tablespace sans spécifier son chemin de stockage tel que :

avant: alter tablespace TS
       add datafile
       '/datas/bases/oracle/mabase/tablespaces/TS/datafile_004.dbf'
       size 50M;
après: alter tablespace TS add datafile size 50M;

et donc sans vous soucier de savoir où stoquer ces fichiers.

Vos scripts de sauvegardes devront simplement aller récupérer ces variables dynamiquement dans Oracle, même s’il est conseillé de les fixer égallement dans des variables de l’OS (pour de simples sauvegardes physiques instances stoppées par exemple).

Rappel: Pour modifier un paramètre système sous Oracle pour une instance <I>, il faut se connecter avec SqlPlus sur cette instance avec les privilèges SYSDBA, puis utiliser l’instruction « alter system set <nom_parametre>=<valeur>« . Certains paramètres ne dépendent pas de l »instance mais de la base de données uniquement et sont sont modifiables uniquement avec « alter database … » . Enfin, certains paramètres, pour des raisons de définition ou de droits, dépendent uniquement de la session de l’utilisateur et se modifient par « alter session … ».

Note: Un « alter system » peut modifier un paramètre système en mémoire et sur disque (pour un prochain redémarrage), dans ce cas, il faut préciser (lorsque cela est possible et/ou autorisé) le périmètre de modification avec le commutateur « SCOPE » = { MEMORY (modification en mémoire uniquement), SPFILE (modification dans le fichier d’init de la database) , BOTH (les deux) }. Exemple : « alter system set open_cursors=300 scope=both ».

Leave a Reply