조치사항으로는 두가지가 있습니다.
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 |
'Oracle > 운영' 카테고리의 다른 글
Shared lock과 Execlusive lock (0) | 2020.08.17 |
---|---|
트랜잭션 격리 수준(isolation level) (0) | 2020.08.17 |
Session 이란? (session kill 명령어 포함) (0) | 2020.04.17 |
권한 부여 삭제(Grant)와 with admin option, with grant option (0) | 2020.02.21 |
TABLE_REDEFINITION (0) | 2020.02.19 |
댓글