Wednesday, 26 September 2018

How to handle Oracle File_Recovery_Area(FRA)

Sometimes the Flash Recovery Area (FRA) is full and the Oracle DBA wants to know what is it’s usage, size and the list of occupants (archives, RMAN backups pieces or image copies, flashback logs).

Check and confirm FRA location with below parameter 

SQL>Select name,open_mode,database_role from v$database;

NAME          OPEN_MODE    DATABASE_ROLE
------        ---------    -------------
ORADB1        READ WRITE   PRIMARY


SQL> Show parameter db_recovery_file_dest;

NAME                                 TYPE        VALUE
--------------------------           ----------- ------
db_recovery_file_dest                string      +FRA
db_recovery_file_dest_size           big integer 120G


Check FRA usage like Total, used and free space  with below select statement

SQL> Select space_limit/1024/1024/1024 TOTAL_GB,space_used/1024/1024/1024 USED_GB from v$recovery_file_dest;

  TOTAL_GB    USED_GB
  --------    -------
  120         88.8515625


Check the fra usage in percentage with below select statement

SQL>  Select x.*,round(100 * (x.SPACE_USED/x.SPACE_LIMIT), 3) fra_pct_used from v$recovery_file_dest x;

NAME     SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES   CON_ID     FRA_PCT_USED
-----    ----------- ---------- ----------------- ---------------   ---------- ----------
+FRA     1.2885E+11  9.5404E+10 9.5404E+10        285               0           74.043


Check  the list of occupants (archives, RMAN backups pieces or image copies, flashback logs).

Select * from v$recovery_area_usage;

FILE_TYPE               PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES     CON_ID
----------------------- ------------------ ------------------------- --------------- ----------
CONTROL FILE                             0                         0               0          0
REDO LOG                                 0                         0               0          0
ARCHIVED LOG                         73.53                     73.53             282          0
BACKUP PIECE                           .51                       .51               3          0
IMAGE COPY                               0                         0               0          0
FLASHBACK LOG                            0                         0               0          0
FOREIGN ARCHIVED LOG                     0                         0               0          0
AUXILIARY DATAFILE COPY                  0                         0               0          0

8 rows selected.

or 

SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE               PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES     CON_ID
----------------------- ------------------ ------------------------- --------------- ----------
CONTROL FILE                             0                         0               0          0
REDO LOG                                 0                         0               0          0
ARCHIVED LOG                         73.53                     73.53             282          0
BACKUP PIECE                           .51                       .51               3          0
IMAGE COPY                               0                         0               0          0
FLASHBACK LOG                            0                         0               0          0
FOREIGN ARCHIVED LOG                     0                         0               0          0
AUXILIARY DATAFILE COPY                  0                         0               0          0

8 rows selected.



Check Size, usage, Reclaimable space used 
SQL>SELECT ROUND((A.SPACE_LIMIT / 1024 / 1024 / 1024), 2) AS FLASH_IN_GB, ROUND((A.SPACE_USED / 1024 / 1024 / 1024), 2) AS FLASH_USED_IN_GB,ROUND((A.SPACE_RECLAIMABLE/1024/1024/1024), 2) AS FLASH_RECLAIMABLE_GB,SUM(B.PERCENT_SPACE_USED)  AS PERCENT_OF_SPACE_USED
FROM  V$RECOVERY_FILE_DEST A,  V$FLASH_RECOVERY_AREA_USAGE B GROUP BY  SPACE_LIMIT,   SPACE_USED ,   SPACE_RECLAIMABLE ;

FLASH_IN_GB FLASH_USED_IN_GB FLASH_RECLAIMABLE_GB PERCENT_OF_SPACE_USED
----------- ---------------- -------------------- ---------------------
        120            88.85                88.85                 74.04

As per above output FRA usage 74.04%

We have thre scenarios to fix FRA issue.

1. We can increase FRA space if we have sufficient free disk space :

Check FRA disk free space with below select statement

SQL> select NAME,TOTAL_MB/1024,FREE_MB/1024 from v$asm_diskgroup;

NAME                           TOTAL_MB/1024 FREE_MB/1024
------------------------------ ------------- ------------
DATA                                    1000   303.550781
FRA                                      200   109.339844
REDO                                      60   47.4726563

or

[grid@e75lrl2036 ~]$ asmcmd
ASMCMD> lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304   1024000   310836                0          310836              0             N  DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304    204800   111964                0          111964              0             N  FRA/
MOUNTED  EXTERN  N         512             512   4096  4194304     61440    48612                0           48612              0             N  REDO/

As per above output we have free space approx 109GB, So we are good to increase FRA with below syntax

SQL> ALTER SYSTEM SET db_recovery_file_dest_size=140G scope=both;


System altered.


Now check FRA Usage after increasing.

SQL> Select space_limit/1024/1024/1024 TOTAL_GB,space_used/1024/1024/1024 USED_GB from v$recovery_file_dest;

  TOTAL_GB    USED_GB
---------- ----------
       140 88.8515625

SQL>  Select x.*,round(100 * (x.SPACE_USED/x.SPACE_LIMIT), 3) fra_pct_used from v$recovery_file_dest x;

NAME     SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES   CON_ID     FRA_PCT_USED
-----    ----------- ---------- ----------------- ---------------   ---------- ----------
+FRA     1.2885E+11  9.5404E+10 9.5404E+10        285               0           62.043



2. Change the FRA to a new location, new archives will be created to this new location:

SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/backup/archive' scope =both;

System Altered.


Now check FRA location after changing

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /backup/archive
db_recovery_file_dest_size           big integer 120G


3. Deleting Old archive logfiles to reclaim FRA space.

Check backup of database+archivelogs backup atleast for one week with below select statement, If all backups are successfull and valid backups then we can remove old archive logfiles to reclaim space.

SQL>
col output_bytes_display form a15
col input_bytes_display form a15
col STATUS form a25
col time_taken_display form a10
col INPUT_BYTES_PER_SEC_DISPLAY form a15
col OUTPUT_BYTES_PER_SEC_DISPLAY form a17
col input_rate_per_sec form a20
col output_rate_per_sec form a20
select session_key,
input_type,
status,
to_char(start_time,'yyyy-mm-dd hh24:mi') start_time,
to_char(end_time,'yyyy-mm-dd hh24:mi') end_time,
input_bytes_display,
output_bytes_display,
--INPUT_BYTES_PER_SEC_DISPLAY as input_rate_per_sec,
OUTPUT_BYTES_PER_SEC_DISPLAY as output_rate_per_sec,
time_taken_display
from v$rman_backup_job_details
order by session_key asc;

SESSION_KEY INPUT_TYPE    STATUS                    START_TIME       END_TIME         INPUT_BYTES_DIS OUTPUT_BYTES_DI OUTPUT_RATE_PER_SEC  TIME_TAKEN
----------- ------------- ------------------------- ---------------- ---------------- --------------- --------------- -------------------- ----------
          9 ARCHIVELOG    COMPLETED                 2020-02-16 05:03 2020-02-16 05:05   322.98M         324.00M           2.63M            00:02:03
         12 DB INCR       COMPLETED     2020-02-16 05:44 2020-02-16 11:35   157.76G          88.56G           4.31M            05:50:37
         14 ARCHIVELOG    COMPLETED                 2020-02-16 06:04 2020-02-16 06:05     1.27G           1.27G          14.18M            00:01:32
         17 ARCHIVELOG    COMPLETED                 2020-02-16 07:03 2020-02-16 07:05     1.94G           1.94G          19.33M            00:01:43
84 ARCHIVELOG    COMPLETED        2020-02-16 17:02 2020-02-16 17:04     2.41G           2.42G          24.25M            00:01:42
         87 DB INCR       COMPLETED                 2020-02-16 17:12 2020-02-16 17:14     0.00K           0.00K           0.00K            00:02:05
        144 ARCHIVELOG    COMPLETED                 2020-02-17 11:04 2020-02-17 11:06     4.81G           4.81G          34.43M            00:02:23
        186 ARCHIVELOG    COMPLETED                 2020-02-17 12:03 2020-02-17 12:05     5.36G           5.37G          48.62M            00:01:53
        244 ARCHIVELOG    COMPLETED                 2020-02-18 06:06 2020-02-18 06:40    11.90G          11.90G           5.97M            00:34:01
        246 DB INCR       COMPLETED                 2020-02-18 06:15                      0.00K           0.00K
        249 ARCHIVELOG    COMPLETED                 2020-02-18 07:04 2020-02-18 07:15    11.91G          11.91G          17.40M            00:11:41
        252 ARCHIVELOG    COMPLETED                 2020-02-18 08:03 2020-02-18 08:09    12.00G          12.00G          38.28M            00:05:21
        343 ARCHIVELOG    COMPLETED                 2020-02-19 02:03 2020-02-19 02:54    21.56G          21.56G           7.20M            00:51:08
        345 DB INCR       COMPLETED                 2020-02-19 02:40 2020-02-19 02:42     0.00K           0.00K           0.00K            00:02:06
        432 ARCHIVELOG    COMPLETED                 2020-02-19 22:04 2020-02-19 22:09     8.58G           8.58G          26.88M            00:05:27
        435 ARCHIVELOG    COMPLETED                 2020-02-19 23:05 2020-02-19 23:06     8.67G           8.68G         116.89M            00:01:16
        441 ARCHIVELOG    COMPLETED                 2020-02-20 01:05 2020-02-20 01:09     9.16G           9.16G          39.92M            00:03:55
        444 DB INCR       COMPLETED                 2020-02-20 02:02 2020-02-20 02:17   704.54G           6.25G           6.97M            00:15:18
        446 ARCHIVELOG    COMPLETED                 2020-02-20 02:04 2020-02-20 02:12     9.26G           9.26G          20.57M            00:07:41
        450 ARCHIVELOG    COMPLETED                 2020-02-20 02:20 2020-02-20 02:21     9.26G           9.26G         135.51M            00:01:10
        531 ARCHIVELOG    COMPLETED                 2020-02-21 00:04 2020-02-21 00:05    19.00G          19.01G         173.78M            00:01:52
        537 DB INCR       COMPLETED                 2020-02-21 02:01 2020-02-21 02:12   704.54G           5.64G           8.51M            00:11:19
        539 ARCHIVELOG    COMPLETED                 2020-02-21 02:05 2020-02-21 02:07    19.31G          19.31G         125.16M            00:02:38
        543 ARCHIVELOG    COMPLETED                 2020-02-21 02:16 2020-02-21 02:17    19.31G          19.31G         184.83M            00:01:47
       3376 ARCHIVELOG    COMPLETED                 2020-02-22 01:04 2020-02-22 01:08    56.15G          56.16G         246.80M            00:03:53
       3379 DB INCR       COMPLETED                 2020-02-22 02:01 2020-02-22 02:22   574.54G         352.57G         274.55M            00:21:55
       3381 ARCHIVELOG    COMPLETED                 2020-02-22 02:03 2020-02-22 02:11    56.26G          56.26G         118.54M            00:08:06
       3385 ARCHIVELOG    COMPLETED                 2020-02-22 02:24 2020-02-22 02:28    56.26G          56.26G         249.42M            00:03:51
       4123 ARCHIVELOG    COMPLETED                 2020-02-23 23:04 2020-02-22 23:12    59.87G          59.88G         126.94M            00:08:03
       4156 DB INCR       COMPLETED                 2020-02-23 00:04 2020-02-23 00:33    59.89G          59.89G          34.73M            00:29:26
       4159 ARCHIVELOG    COMPLETED                 2020-02-23 01:04 2020-02-23 01:13    59.93G          59.94G         121.53M            00:08:25
       4163 ARCHIVELOG    COMPLETED                 2020-02-23 23:04 2020-02-22 23:12    59.87G          59.88G         126.94M            00:08:03
       4193 ARCHIVELOG    COMPLETED                 2020-02-24 02:58 2020-02-24 03:03    65.98G          65.98G         226.74M            00:04:58
       4195 DB INCR       COMPLETED                 2020-02-24 03:02 2020-02-24 03:34   574.54G           4.95G           2.67M            00:31:41
       4199 ARCHIVELOG    COMPLETED                 2020-02-24 03:36 2020-02-24 03:42    66.07G          66.07G         214.78M            00:05:15
       4202 ARCHIVELOG    COMPLETED                 2020-02-24 04:08 2020-02-24 04:11    66.07G          66.08G         393.38M            00:02:52
       4299 ARCHIVELOG    COMPLETED                 2020-02-25 01:04 2020-02-25 01:08    76.69G          76.69G         409.02M            00:03:12
       4302 DB INCR       COMPLETED                 2020-02-25 02:02 2020-02-25 02:10   574.54G           5.95G          12.36M            00:08:13
       4304 ARCHIVELOG    COMPLETED                 2020-02-25 02:04 2020-02-25 02:09    76.74G          76.74G         242.54M            00:05:24
       4308 ARCHIVELOG    COMPLETED                 2020-02-25 02:11 2020-02-25 02:15    76.74G          76.74G         370.68M            00:03:32
       4404 ARCHIVELOG    COMPLETED                 2020-02-26 01:06 2020-02-26 01:17    87.23G          87.24G         131.18M            00:11:21
       4407 DB INCR       COMPLETED                 2020-02-26 02:01 2020-02-26 02:12   574.54G           5.93G           9.49M            00:10:40
       4409 ARCHIVELOG    COMPLETED                 2020-02-26 02:05 2020-02-26 02:14    87.24G          87.24G         160.39M            00:09:17
       4413 ARCHIVELOG    COMPLETED                 2020-02-26 02:15 2020-02-26 02:21    87.24G          87.25G         230.26M            00:06:28
      

As per above output backup is successfull, Connect rman prompt and remove old archive log files

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

or 

Manually delete from ASM command prompt

Note:Not recomended approach since by deleting manually it won't release space we need to run (CROSSCHECK ARCHIVELOG ALL command from RMAN to release space)

ASMCMD> pwd
+FRA/INSISCLN/ARCHIVELOG
ASMCMD> ls
2020_02_19/
2020_02_20/
2020_02_21/
2020_02_22/
2020_02_23/
2020_02_24/
2020_02_25/
2020_02_26/
ASMCMD>cd 2020_02_19/
ASMCMD>rm *.arc
ASMCMD> ..
ASMCMD> ls
2020_02_20/
2020_02_21/
2020_02_22/
2020_02_23/
2020_02_24/
2020_02_25/
2020_02_26/

After removing old archive logfile with retention of 7 days check current FRA usage.

SQL> Select space_limit/1024/1024/1024 TOTAL_GB,space_used/1024/1024/1024 USED_GB from v$recovery_file_dest;

  TOTAL_GB    USED_GB
---------- ----------
       120 73.8515625


Check the fra usage in percentage with below select statement

SQL>  Select x.*,round(100 * (x.SPACE_USED/x.SPACE_LIMIT), 3) fra_pct_used from v$recovery_file_dest x;

NAME     SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES   CON_ID     FRA_PCT_USED
-----    ----------- ---------- ----------------- ---------------   ---------- ----------
+FRA     1.2885E+11  9.5404E+10 9.5404E+10        285               0           62.043