출처 : devide by zero

멤버를 추가해서 로그 파일을 다중화 할 수 있다.

이 때, select status from v$logfile; 을 해보면 새로 추가한 멤버들은 INVALID 라고 표시되어 있다.

INVALID는 어떤 이유로 오라클이 해당 파일에 접근할 수 없는 상태다. 지워졌다거나, 권한이 없거나.

지금 상황에서의 INVALID는 멤버가 추가 된 후 한번도 사용된 적이 없음을 뜻한다.

하지만 오라클 서버에 의해 INVALID 취급 받는 것은 같으므로 이 상태로 멤버만 추가한 것으로는 다중화가 완료된 것이라고 할 수 없다.

ALTER SYSTEM SWITCH LOGFILE; 을 그룹 수만큼 돌려주자.

다시 확인해보면 INVALID가 사라진 것을 알 수 있다.

(어쩌면 멤버를 새로 생성할 때, 이전 리두 로그의 내용을 복사하는게 아니라 형식만 만드는 것일지도 모르겠다.)

이 상태에서 로그 파일 중 하나가 손상되어도 정상적으로 디비를 스타트업시킬 수 있다.

alert_<시드명>.log 에는 에러가 기록되지만 sqlplus에서 스타트업 시 에러를 확인할 수 없었다.

sqlplus에서는 select status from v$logfile; 에서 INVALID라고 표시된다.

(파일을 삭제하는 방법과 파일의 내용을 수정하는 방법으로 문제를 발생시켰다. 다른 손상은 어떻게 파손을 확인하는지 알 수 없다.)

손상된 리두 로그파일을 복구하기 위한 방법으로는 두가지가 있다.

- 셧다운 -> 같은 그룹 내의 로그 파일을 복사한 후  스타트업 -> ALTER SYSTEM SWITCH LOGFILE; 를 돌려보면 복구되어 있다.

- 멤버를 드랍하고 다시 만든다. ALTER SYSTEM SWITCH LOGFILE; 을 돌린다.

아마 두번 째 방법이 더 깔끔하고 편리하지 않을까 생각한다.

ALTER SYSTEM SWITCH LOGFILE; 은 굳이 돌릴 필요는 없다. 어차피 언젠가 자기 차례가 오기 전까지 나머지 미러 파일들이 손상되지만 않으면 될 일이다.

※ ALTER SYSTEM SWITCH LOGFILE;에 관하여

로그 파일의 기록을 다음 그룹에서 다시 시작하게 한다.
혹시 새로 기록을 시작하는 로그 파일의 내용을 싹 날리고 시작하는 것일수도 있다.
아카이브 로그라면 문제 없겠지만 아니라면 이 명령을 한바퀴 돌렸을 때, 아무런 리두 로그도 남지 않는다는 뜻이다.
지금부터 확인해본 후 다시 정리하겠다.

+ Recent posts