TEST DB의 DB접속시도를 하다 접속이 안되서 로그를 확인해보니 아래의 로그가 계속해서 발생하였습니다.
현상은 TNS를 통한 DB 접속이 되지 않고, SQLPLUS로 직접접속도 되지 않았습니다. RMAN TARGET / 도 마찬가지로 접속이 되지 않았습니다.
alert log의 내용
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 187695104 bytes disk space from 10737418240 bytes limit
2024-08-07T11:47:09.089273+09:00
Errors in file /oracle/db/base/diag/rdbms/dbarac/dbarac1/trace/dbarac1_arc1_44040648.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 187695104 bytes disk space from 10737418240 bytes limit
2024-08-07T11:47:09.090476+09:00
Errors in file /oracle/db/base/diag/rdbms/dbarac/dbarac1/trace/dbarac1_tt00_8651154.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 10737418240 bytes is 100.00% used, and has 0 remaining bytes available.
ARC1: Error 19809 Creating archive log file to '+RECO'
2024-08-07T11:47:09.092165+09:00
************************************************************************
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.
************************************************************************
crsctl stat res -t를 확인했을 때 상태가 Stuck Archiver였습니다.
ora.dbarac.db
1 ONLINE INTERMEDIATE dbarac1 Stuck Archiver,HOME=
/oracle/db/product/1
2.2.0,STABLE
2 ONLINE INTERMEDIATE dbarac2 Stuck Archiver,HOME=
/oracle/db/product/1
2.2.0,STABLE
조치사항
DB를 내리고 mount로 다시 올린 후 FRA영역의 아카이브 강제 삭제하여 용량 확보 후 RMAN에서 delete expired archivelog all 수행
1. DB 내리기
일반적인 immediate로 내려가지 않아서 abort로 다시 시도하였으나 db가 down되지 않았습니다.
##1차로 immediate
srvctl stop database -d dbarac
---db가 안내려가서 명령어 종료하고 abort로 재시도
##2차로 abort
srvctl stop database -d dbarac -stopoption abort
OS의 pmon process를 강제로 kill하고 crs를 재기동하였습니다.
ps -ef |grep pmon
kill -9 xxxxx
crs를 종료할때는 혹시몰라 강제로 내렸습니다.
crsctl stop crs -f
crsctl start crs
2.crs 기동후 db를 mount까지 올리기
sqlplus / as sysdba
startup mount
3.FRA영역에서 용량확보를 위한 아카이브로그 파일 삭제 후 rman에서도 삭제
asmcmd -p
cd +RECO/DBARAC/ARCHIVELOG
rm -rf *
rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
4.DB shutdown 후 기동
sqlplus / as sysdba
shutdown immediate
srvctl start database -d dbarac
조치 완료.
예방을 위한 추가설정
1)
db_recovery_file_dest를 확인해보니 10G여서 40G로 증가시켰습니다.
SQL> show parameter recovery_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +RECO
db_recovery_file_dest_size big integer 10G
remote_recovery_file_dest string
alter system set db_recovery_file_dest_size =40G scope=both;
SQL> show parameter recovery_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +RECO
db_recovery_file_dest_size big integer 40G
remote_recovery_file_dest string
2)
crontab을 이용한 7일이 지난 아카이브로그 자동삭제 쉘 등록
1) rman의 delete 스크립트 생성
vi delete_archivelogs.rman
delete noprompt archivelog all completed before 'SYSDATE-7';
2) 쉘 생성
vi run_rman_for_delete_archivelog.sh
rman target / @/home/oracle/dba/PUBLIC/SHELL/delete_archivelogs.rman
3) crontab 등록
crontab -e
0 0 * * * /home/oracle/dba/PUBLIC/SHELL/run_rman_for_delete_archivelog.sh
끝.
'Oracle > 운영' 카테고리의 다른 글
V$ASM_DISKGROUP의 수치별 설명 (0) | 2024.11.07 |
---|---|
통계정보 수집시 no_invaildation 옵션 (0) | 2024.08.27 |
[CRS] RAC로 등록된 CRS의 resource를 삭제하기 (0) | 2024.07.23 |
[ASM Process] Onnn 프로세스 (0) | 2024.06.18 |
DBMS_LOB.SUBSTR 사용시 ORA-06502 발생원인 (0) | 2024.05.22 |
댓글