web-dev-qa-db-fra.com

Nettoyer la zone de récupération de flash de la récupération des archives

J'ai un oracle 11g sur Rhel Server. My/Oradata Volume Atteignez 95% d'utilisation du disque:

[ora11g@bocc7-1-qrec-01 ~]$ df -h  
/dev/sdb1             689G  571G   84G  95% /oradata

La zone de récupération flash (FRA) est le plus grand dossier:

[ora11g@bocc7-1-qrec-01 ~]$ du -skh /oradata/* | sort -h
50G     /oradata/qtest
175G    /oradata/qrec
346G    /oradata/flash_recovery_area

À l'intérieur du FRA, je peux voir que les journaux d'archives prennent environ 230 Go:

[ora11g@bocc7-1-qrec-01 ~]$ du -skh /oradata/flash_recovery_area/qrec/*
232G    /oradata/flash_recovery_area/qrec/archivelog
7.9G    /oradata/flash_recovery_area/qrec/onlinelog

J'ai vérifié le v$recovery_file_dest table et mon SPACE_LIMIT est 20 Go et mon SPACE_USED est seulement 10 Mo!

Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

qrec> SELECT * FROM V$RECOVERY_FILE_DEST;

NAME
--------------------------------------------------------------------------------
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
/oradata/flash_recovery_area
 2.1475E+10   10984448                 0               1

Donc, j'ai déduit que cela n'avait rien à voir avec cette table.

Maintenant, je vérifie avec Rman:

RMAN> crosscheck archivelog all;

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=259 device type=DISK
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1056_965658004.arc RECID=1057 STAMP=969146207
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1057_965658004.arc RECID=1058 STAMP=969149808
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1058_965658004.arc RECID=1059 STAMP=969153409
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1059_965658004.arc RECID=1060 STAMP=969157010
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1060_965658004.arc RECID=1061 STAMP=969160610
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1061_965658004.arc RECID=1062 STAMP=969164210
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1062_965658004.arc RECID=1063 STAMP=969167813
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1063_965658004.arc RECID=1064 STAMP=969171413
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1064_965658004.arc RECID=1065 STAMP=969175014
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1065_965658004.arc RECID=1066 STAMP=969178614
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1066_965658004.arc RECID=1067 STAMP=969182214
validation succeeded for archived log
archived log file name=/oradata/flash_recovery_area/qrec/archivelog/log_1_1067_965658004.arc RECID=1068 STAMP=969185814
Crosschecked 12 objects

RMAN> delete noprompt expired archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=259 device type=DISK
specification does not match any archived log in the repository

Donc, la 1ère question est: pourquoi Rman ne voit pas mes fichiers d'arc 2752 ici:

[ora11g@bocc7-1-qrec-01 ~]$ ls -1 /oradata/flash_recovery_area/qrec/archivelog | wc -l
2752

Et la 2e question est: Que dois-je faire pour libérer un espace disque en supprimant les fichiers anciens archivalogog? (Les plus âgés sont âgés de plus d'un an !!):

[ora11g@bocc7-1-qrec-01 archivelog]$ find -type f -printf '%T+ %p\n' | sort | head -n 1
2017-02-22+16:54:41.0000000000 ./log_2_1_936636608.arc
1
Rachid B.

) Vous avez FRA configuré, mais ce n'est pas votre destination Archivelog.

Réglage log_archive_dest_N au répertoire FRA n'est pas la même chose que de définir la FRA comme une destination d'archivalogog.

La configuration que vous avez probablement:

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /oradata/flash_recovery_area
db_recovery_file_dest_size           big integer 20G
log_archive_dest_1                   string      location=/oradata/flash_recovery_area/qrec/archivelog

La configuration appropriée serait:

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /oradata/flash_recovery_area
db_recovery_file_dest_size           big integer 20G
log_archive_dest_1                   string      location=use_db_recovery_file_dest

La nommée des fichiers Archivelog confirme également cela, car les archivages de la FRA utilisent le format OMF et sont réellement placés dans des répertoires séparés (nommés en fonction de la date) chaque jour.

Donc, au lieu de cela:

/oradata/flash_recovery_area/qrec/archivelog/log_1_1056_965658004.arc

Le nom de votre fichier archivalog serait:

/oradata/flash_recovery_area/qrec/archivelog/2018_02_22/o1_mf_....arc

1) Ceci est généralement causé par une configuration inappropriée du control_file_record_keep_time Paramètre combiné à une méthode de sauvegarde manquante. La valeur par défaut 7 signifie que les enregistrements (d'archivalogs ou de sauvegardes) sont conservés pendant 7 jours, après cela, ils peuvent être réutilisés. Si vous ne sauvegardez pas/supprimer votre Archivelogs pendant 7 jours, la base de données peut réutiliser les enregistrements Controlfile en pointant, fondamentalement, la base de données "oublie" ces entrées et les laisse dans le système de fichiers.

Vous devez sauvegarder et supprimer votre archivalogs et définir control_file_record_keep_time de manière appropriée sur la base de votre stratégie de sauvegarde.

Si vous utilisez des sauvegardes gérées par l'utilisateur au lieu de RMAN, vous devez vous occuper de la suppression manuelle de ces journaux. Rman peut sauvegarder ces fichiers dans une seule commande.

2) dépend de vos exigences de sauvegarde.

Si vous utilisez des sauvegardes gérées par l'utilisateur, assurez-vous de disposer de sauvegardes de ces fichiers, puis de les supprimer.

Si vous utilisez RMAN, vous pouvez utiliser catalog start with '/oradata/flash_recovery_area/qrec/archivelog/';, utilisez ensuite Rman pour sauvegarder et les supprimer.

Si vous n'avez besoin d'aucune sauvegarde de ces fichiers, supprimez-les simplement.

2
Balazs Papp