본문 바로가기
Oracle/운영

ORA-00257 FRA 디렉토리가 Full일때 조치사항

by 취미툰 2020. 7. 25.
반응형

조치사항으로는 두가지가 있습니다.

1.FRA의 불필요한 파일(아카이브 로그 등)을 삭제하여 용량을 확보

2.FRA의 크기를 늘려 용량을 확보

 

Alert Log에는 아래와 같은 에러 발생한다.

 

Errors in file /app/oracle/diag/rdbms/newysbae/newysbae/trace/newysbae_arc2_13613.trc:

ORA-19809: limit exceeded for recovery files

ORA-19804: cannot reclaim 50049024 bytes disk space from 4070572032 limit

ARC2: Error 19809 Creating archive log file to '/app/oracle/flash_recovery_area/NEWYSBAE/archivelog/2020_07_06/o1_mf_1_211_%u_.arc'

Mon Jul 06 13:14:59 2020

Errors in file /app/oracle/diag/rdbms/newysbae/newysbae/trace/newysbae_arc3_13615.trc:

ORA-19815: WARNING: db_recovery_file_dest_size of 4070572032 bytes is 100.00% used, and has 0 remaining bytes available.

************************************************************************

You have following choices to free up space from recovery area:

1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,

   then consider changing RMAN ARCHIVELOG DELETION POLICY.

2. Back up files to tertiary device such as tape using RMAN

   BACKUP RECOVERY AREA command.

3. Add disk space and increase db_recovery_file_dest_size parameter to

   reflect the new space.

4. Delete unnecessary files using RMAN DELETE command. If an operating

   system command was used to delete files, then use RMAN CROSSCHECK and

   DELETE EXPIRED commands.

************************************************************************

 

FRA란?

Fast Recovery Area는 데이터베이스가 백업 및 복구와 관련된 다양한 파일들을 생성하고 관리할 수 있는 디스크 영역을 셋업 하는데 사용된다. FRA사용 자체는 강력히 권고되고 있으며 아래의 파일들을 저장한다.

-    아카이브 로그와 flashback로그

-    RMAN의 백업셋과 이미지 카피

 

A) FRA를 위한 공간 사용 및 위치에 대한 계획

FRA에 할당하는 디스크 공간의 크기는 데이터베이스의 크기와 활동수준에 달려있다. FRA는 별도의 디스크 상에 위치하여야 한다.

 

B) FRA내 디스크 공간을 오라클이 어떻게 관리하는가?

FRA 내의 공간은 백업과 보유 정책에 부합되어야 하는 아카이브 로그들 그리고 곧 삭제될지 모를 다른 파일에 따라 유지된다. 오라클은 삭제 정책 이외에 다른 목적을 위해 FRA의 파일을 삭제하지는 않는다.

 

C) FRA내 공간부족을 오라클은 어떻게 알리는가?

오라클은 회수가능 공간이 15%보다 작을 때 경고성 알림을 보내고 3%보다 작을 때는 위험(critical) 알림을 보낸다. Alert log(EM 사용시 DBA_OUTSTANDING_ALERTS)에 내용을 기입한다. FRA가 완전히 꽉 차면 아래와 같은 에러가 발생한다.

 

ORA-19809: limit exceeded for recovery files

ORA-19804: cannot reclaim nnnnn bytes disk space from mmmmm limit

 

D) FRA 공간 사용을 어떻게 모니터링 하는가?

-    V$RECOVERY_FILE_DEST: 현재 위치, 디스크 할당량, 사용 중인 공간, 파일을 삭제함으로써 회수 가능한 공간 그리고 FRA에 있는 파일의 총 개수 등을 확인할 수 있다.

-    V$FLASH_RECOVERY_AREA_USAGE: 다른 파일 타입에 의해 사용되고 있는 전체 디스크 할당량의 비율을 확인하고 더 이상 사용하지 않거나 중복되거나 다른 곳에 백업된 파일을 삭제함으로써 회수 가능한 공간이 파일 타입별로 얼마나 되는 지도 확인할 수 있다.

 

1.RMAN을 통한 FRA영역 확보

 물리적으로 OS 파일의 아카이브 파일을 삭제하여 공간을 확보하는 방법.

- 물리적인 FRA에 위치한 아카이브 파일을 삭제한다.

$ rm -rf *.arc

$ ls

 

▶ rman으로 물리적으로 지워준 파일을 논리적으로도 삭제해준다.

-rman에 접속 후 crosscheck archivelog all명령어와 delete expired archivelog all명령어를 친다.

- all 이외에 SCN, LSN, TIME 등을 사용하여 범위로 삭제할 수도 있다.

$ rman target /

 

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jul 29 11:31:39 2019

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 

connected to target database: YSBAE (DBID=1658322064)

 

RMAN> crosscheck archivelog all

2> ;

 

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=80 device type=DISK

validation failed for archived log

archived log file name=/app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1115_gmwl49dt_.arc RECID=1 STAMP=1014891289

validation failed for archived log

archived log file name=/app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1116_gmwlmh42_.arc RECID=2 STAMP=1014891775

생략

 

RMAN> delete expired archivelog all;

 

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=80 device type=DISK

List of Archived Log Copies for database with db_unique_name YSBAE

=====================================================================

 

Key     Thrd Seq     S Low Time

------- ---- ------- - ---------

1       1    1115    X 29-JUL-19

        Name: /app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1115_gmwl49dt_.arc

 

2       1    1116    X 29-JUL-19

        Name: /app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1116_gmwlmh42_.arc

생략

 

Do you really want to delete the above objects (enter YES or NO)? yes

deleted archived log

archived log file name=/app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1115_gmwl49dt_.arc RECID=1 STAMP=1014891289

deleted archived log

archived log file name=/app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1116_gmwlmh42_.arc RECID=2 STAMP=1014891775

deleted archived log

생략

 

▶ log switch를 발생시켜 정상적으로 작동되는지 확인한다.

SQL> alter system switch logfile;

 

System altered.

 

 

▶ V$FALSH_RECOVERY_AREA_USAGE를 조회하여 용량 확인

 

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

 

FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

-------------------- ------------------ ------------------------- ---------------

CONTROL FILE                          0                         0              0

REDO LOG                              0                         0              0

ARCHIVED LOG                       3.59                         0              4

BACKUP PIECE                          0                         0              0

IMAGE COPY                            0                         0              0

FLASHBACK LOG                         0                         0              0

FOREIGN ARCHIVED LOG                  0                         0              0

 

7 rows selected.

 

 

2.FRA영역 증설(파라미터 변경)

디스크 사이즈 확보 후 db_recovery_file_dest_size를 늘려준다.

 

▶ OS 레벨에서 마운트된 디스크 용량을 확인한다.

$ df -hT

Filesystem                Type      Size  Used Avail Use% Mounted on

/dev/sda3                 xfs        72G   63G  9.8G  87% /

/dev/sdd1                 xfs       508M   26M  482M   6% /test1

/dev/mapper/test2-test2_1 xfs        29M  1.7M   27M   6% /test2

/dev/sda1                 xfs       197M  176M   22M  90% /boot

tmpfs                     tmpfs     395M   12K  395M   1% /run/user/42

tmpfs                     tmpfs     395M     0  395M   0% /run/user/0

 

- 2048MB로 늘려줘도 충분한 용량이 있으므로 늘려준다.

 

▶ DB에서 db_recovery_file_dest_size를 늘려준다.

SQL> alter system set db_recovery_file_dest_size=2048M scope=both;

 

SQL> show parameter db_recovery_file_dest_size

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest_size           big integer 2G

 

▶ log switch를 발생시켜 정상적으로 작동되는지 확인한다.

SQL> alter system switch logfile;

 

System altered.

 

▶ alert log를 확인한다.

ARC0: Error 19809 Creating archive log file to '/app/oracle/FRA_TEST/YSBAE/archivelog/2019_07_29/o1_mf_1_1126_%u_.arc'

Archived Log entry 12 added for thread 1 sequence 1127 ID 0x62d7d290 dest 1:

Archiver process freed from errors. No longer stopped

Archived Log entry 13 added for thread 1 sequence 1128 ID 0x62d7d290 dest 1:

Archived Log entry 14 added for thread 1 sequence 1126 ID 0x62d7d290 dest 1:

Mon Jul 29 12:07:47 2019

Thread 1 advanced to log sequence 1130 (LGWR switch)

  Current log# 1 seq# 1130 mem# 0: /app/oracle/oradata/ysbae/redo01.log

  Current log# 1 seq# 1130 mem# 1: /app/oracle/oradata/ysbae/redo01_02.log

Mon Jul 29 12:07:49 2019

db_recovery_file_dest_size of 2048 MB is 11.51% used. This is a

user-specified limit on the amount of space that will be used by this

database for recovery-related files, and does not reflect the amount of

space available in the underlying filesystem or ASM diskgroup.

Mon Jul 29 12:07:50 2019

Archived Log entry 15 added for thread 1 sequence 1129 ID 0x62d7d290 dest 1:

 

- 파라미터 변경 명령어를 치는 동시에 ORA-19815 에러는 사라지며 정상적으로 archive되는 로그를 볼 수 있다.

기타 고려 가능 해결 방법

방법1

▶ FRA에서 테이프와 같은 제3의 스토리지로 백업을 옮긴다

RMAN> backup recovery area;

 

방법2

보장된 리스토어 지점이 필요한 지 확인 후 필요 없다면 삭제한다

SQL> select * from v$restore_point;

 

SQL> drop restore point <restore_point_name>;

 

 

방법3

▶ flashback로그들이 활성화되었다면 OFF 한다

SQL> alter database flashback off;

 

Database altered.

 

 

방법4

▶ RMAN BACKUP RETENTION 기간을 변경한다

RMAN> show all;

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

 

RMAN> configure retention policy to recovery window of 7 days;

 

new RMAN configuration parameters:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

new RMAN configuration parameters are successfully stored

반응형

댓글