본문 바로가기

DB/DBA

ORACLE Instance 인스턴스명 - Can not allocate log, archival required

즉 오라클DB가 순간적으로 매우 비즈했기 떄문이다. DB에 큰 영향은 주지 않는다.

우선 개념부터 파악해보자.

아래내용은 발취 내용입니다.

리두로그 란.......

리두로그(redo.log)파일은 아카이브파일이다..라고 할 수 있다.
(즉, 아카이브파일은 오라클의 리두로그파일을 그대로 복사해두는 파일이다.)
리두로그파일은 보통 3개정도이고 순차적으로 순환하면서 사용되고 나중에 또 사용된다.
가 - 나 - 다.. 가 - 나 - 다.. 이런 순서로 덮어씌어지게 된다.
이때 기존내용을 보관할 필요가 있을때 사용하는 것이 아카이브모드고 이때 생성되는 파일이 아카이브파일이다. (아카이브파일의 이름이나 저장위치는 initSID.ora에서 설정.)
이 파일은 단순히 리두로그파일을 복사한것에 불과 하지만.. 마음대로 이름을 바꿔서는 안되며, 생성시기는 새로운 내용이 덮어씌워지기 전이다.



eror message :  can not allocate log
  (1)발생 - redo log 파일의 사이즈가 작거나 그룹의 개수가 적을때 발생하는 에러
              오라클에서는 한번 작업한 내용은 redo log에 쓴 후,
              그것이 꽉차면 archivelog((*.arc) 파일에 저장
      해결 - redo log의 크기를 늘려주거나 개수를 늘려준다.
  (2)발생 - log_archive_start가 false로 되어 있어서
              redo 로그파일이 다 차고 아카이브 파일로 자동 백업이 되지 않을경우
    해결 - log_archive_start 를 true 로 설정

redo log 파일의 사이즈가 작거나 그룹의 개수가 적을때 발생하는 에러 입니다..
조금만 더 자세히 쓰자면 오라클에서는 한번 작업한 내용은 redo log에 쓴 후, 그것이 꽉차면 archivelog((*.arc) 파일에 저장합니다.. 근데 redo log 사이즈가 작으면 금방 꽉차서 archive log를 써야 하는데 이때 redo log에 대한 요청이 또 들어오면 이와 같은 문제가 발생합니다.. 따라서 충분히 잡아주면 해결됩니다..

Online Redo Log File 크기 늘리기 -

>startup mount
>select * from v$log
>select * from v$logfile
"1번이 Activelog 일때"
>alter database drop logfile '/ssw/oracle/app/oracle/oradata/KDBEMS/redo02.log'
>!rm /ssw/oracle/app/oracle/oradata/KDBEMS/redo02.log
>alter database add logfile  '/ssw/oracle/app/oracle/oradata/KDBEMS/redo02.log' size 40M
>alter database drop logfile  '/ssw/oracle/app/oracle/oradata/KDBEMS/redo03.log'
> !rm /ssw/oracle/app/oracle/oradata/KDBEMS/redo03.log 
> alter database add logfile  '/ssw/oracle/app/oracle/oradata/KDBEMS/redo03.log' size 40M 
>alter database open
> alter system switch logfile
>alter  Database Close
>alter database drop logfile  '/ssw/oracle/app/oracle/oradata/KDBEMS/redo01.log'     
>!rm /ssw/oracle/app/oracle/oradata/KDBEMS/redo01.log
>alter database add logfile  '/ssw/oracle/app/oracle/oradata/KDBEMS/redo01.log' size 40M

출처: http://www.readysystem.co.kr/