반응형


- db_recovery_file_dest_size
default 값인 2G 일 때 발생하는 Error


기본적인 oracle 환경은 아래와 같다.



C:\>sqlplus /nolog

SQL> conn /as sysdba

SQL>startup

 

 

 

SQL> show parameter p_d 혹은 SQL> show parameter recovery

 


 

 

아래와 같이 select * from v$recovery_file_dest; 를 해보면 default값인 2G가 잡혀있는 것을 알 수 있다. 유사한 구문은 select name, floor(space_limit/1024/1024) "Size MB", ceil(space_used/1024/1024) "Used MB" from v$recovery_file_dest order by name; 이다.

 

 

 



아래의 로그를 분석해보면 다음과 같다.

두번째 online redo log buffer 11번째 sequence에서 archive를 할 수 없다는 것을 알 수 있다.

 

 

아래의 그림을 보면 recovery_file_dest size가 거의 fulll임을 알 수 있다.

 


 

recovery_file_dest size가 설정 값의 한계에 다달아 문제가 발생했음을 알 수 있다.

 

아래의 명령문을 쓰면 mount 단계인 것을 알 수있다. SQL> startup open 을 해도 open이 되지 않음을 알 수 있다.

SQL> select status from v$instance;

 

두번째 online redo log buffer 11번째 sequence에서 archive를 할 수 없어서 그 이후 데이터는 모두 loss가 났음을 알 수 있다. 두번째 redo log파일이 손상되었기 때문에 복구 작업을 진행해야 한다.

 

cancel 기반 recovery를 진행하겠다. 기본적으로 SQL> recover database until cancel; mount 단계에서 진행한다. 현재 mount 단계이기 때문에 복구를 바로 진행하도록 하겠다.

1.     존재하는 archive 파일을 적용한다.

SQL> recover database until cancel;

 

2.     Control files, Redo log files, Data files SCN(System Change Number)를 동일하게 맞추어 준다.

SQL> alter database open resetlogs;

 

3.     SQL> archive log list 를 통하여 초기화된 log sequence 번호를 확인해 보자.


 


4.     SQL> alter system switch logfile; 을 통해 switch log가 되는지 확인해 본다.

5.     2G로 잡혀있는 DB_RECOVERY_FILE_DEST_SIZE 100G로 아주 아주 넉넉하게 변경해 보자.

SQL> shutdown immediate

SQL> startup mount

SQL> show parameter recovery

SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE = 100G;

SQL> startup open

 

 

 

 

P.S. 참고

ORA-16038과 관련, Redo log file이 올라오지 않을 때
 
http://majesty76.tistory.com/54

반응형