web-dev-qa-db-fra.com

Journaux d'archivage remplissant l'espace de la zone de récupération Flash (FRA)

J'ai été embauché pour combler un poste de DBA que je n'étais pas tout à fait prêt à occuper, et pendant que la formation m'y amène, je suis proche d'un problème potentiel.

La zone de récupération flash (FRA) de ma base de données Oracle 11g est sur le point d'être pleine (2,5% restants). Il est en mode ARCHIVELOG car nous effectuons des sauvegardes en direct (c'est du moins la raison pour laquelle on m'a dit). Nous avons supprimé toutes les sauvegardes inutiles via le gestionnaire d'entreprise, mais les journaux d'archivage occupent toujours plus de 50% de l'espace FRA alloué. Est-il possible de supprimer certains des anciens journaux d'archivage pour libérer de l'espace? Le serveur contient encore des journaux d'il y a plusieurs mois, et nous n'avons pas vraiment besoin de sauvegardes aussi loin.

Si je peux les supprimer, quelle serait la meilleure façon de procéder?

6
Garrett Rietveld

Oracle supprimera automatiquement les fichiers obsolètes. En général, vous ne devriez rien avoir à supprimer manuellement.

Une partie importante de la maintenance RMAN consiste à supprimer les sauvegardes qui ne sont plus nécessaires. Si vous configurez une zone de récupération rapide, la base de données supprime automatiquement les fichiers inutiles dans cette zone automatiquement

De Présentation de la sauvegarde RMAN et de la maintenance du référentiel

Tout d'abord, déterminez si vous manquez d'espace. Par exemple, en utilisant la requête suivante (exemple de sortie inclus):

SELECT * FROM V$RECOVERY_FILE_DEST;

NAME            SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
--------------  ----------- ---------- ----------------- ---------------
/mydisk/rcva     5368709120 109240320             256000              28

Si vous manquez d'espace, vous devez soit diminuer votre politique de rétention, soit augmenter la taille de votre FRA.

5
Jussi

Je recommande fortement d'écrire un petit script RMAN pour cela. Quelque chose comme ça devrait fonctionner:

run {
    allocate channel "dsk1" device type disk;
    allocate channel "dsk2" device type disk;
    crosscheck backup;
    crosscheck archivelog all;
    delete noprompt expired backup;
    delete noprompt expired archivelog all;
    report obsolete recovery window of 7 days;
    delete noprompt obsolete recovery window of 7 days;
    backup as compressed backupset archivelog all;
    delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk;
}

Explication:

allocate channel <TAG> device type disk;

Ces lignes sont facultatives, mais vous permettent d'allouer plusieurs canaux si vous vous connectez au stockage via plusieurs canaux physiques

crosscheck backup;
crosscheck archivelog all;

Ces lignes de vérification croisée examineront l'inventaire RMAN réel (dans le fichier de contrôle) par rapport au contenu du stockage. Les sauvegardes et/ou journaux d'archivage qui ne sont plus stockés seront marqués comme "EXPIRÉS"

delete noprompt expired backup;
delete noprompt expired archivelog all;

Ceux-ci suppriment toutes les entrées d'inventaire qui n'ont aucune correspondance dans le stockage.

report obsolete recovery window of 7 days;

Cette ligne marquera tout fichier de sauvegarde qui n'est plus nécessaire pour restaurer la base de données dans un domaine cohérent il y a jusqu'à 7 jours comme 'OBSOLETE'

delete noprompt obsolete recovery window of 7 days;

Cette commande supprime tous les fichiers marqués comme 'OBSOLETE'

backup as compressed backupset archivelog all;

Cette commande sauvegarde toutes les archives actuelles en tant que jeu de sauvegarde compressé.

delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk;

Cette commande supprime toutes les archives antérieures à 1 jour déjà sauvegardées.

J'espère que cela vous aide!

0
Silvarion