◆ Recover 명령
  ◇ recover database
    - 데이터베이스 전체(system, undo 포함)를 다 검사해서 고침
    - 어디가 고장인지 모르겠거나 고칠 파일이 많아서 싹 다 고치고 싶을 때 함.
    - 절대로 쓰고 있는 파일은 복구 못함. 해당 파일을 안쓰게 하고 복구 해야 함. 이 명령은 컨트롤파일 안에 있는 정보를 이용해야 하기 때문에 마운트 상태에서만 쳐줄 수 있음.
  ◇ recover tablespace 테이블스페이스명
    - 해당 테이블스페이스만 복구함. 
    - 마운트 또는 오픈상태에서 가능함.
    - 해당 테이블스페이스를 오프라인 시켜놓은 후 함.
  ◇ recover datafile '데이터파일경로명'
    - 해당 데이터파일 복구함.
    - 마운트 또는 오픈상태에서 가능함.


◆ 복구 흐름 순서
오라클은 DB 이상 유무를 확인하는 방법으로 각 파일들의 SCN을 체크한다. 모든 파일에는 SCN종류가 두가지이다.
하나는 체크포인트SCN이고 또 하나는 Stop SCN이다.
DB 셧다운 명령을 날리면 오라클은 체크포인트를 날려 마지막까지 작업한 내용을 모두 데이터파일로 내려쓰는데 가장 최근에 작업완료한 SCN을 체크포인트 SCN이라고 한다.
DB가 오픈되고 난 후 신규로 데이터가 계속 들어오는데, 가장 마지막에 추가된 SCN이 Stop SCN이다.

마지막으로 작업한 체크포인트SCN이 100이라 하고, 이후 DB에서 데이터를 입력하여 DB캐시에 SCN이 101, 102, 103이 있다면 Stop SCN은 103이다.
체크포인트를 날리면 체크포인트SCN을 Stop SCN값과 동기화시킨다. 이 시점에는 체크포인트 SCN이 Stop SCN의 값을 덮어쓰게 되므로 두 값이 같게 된다.
shutdown immediate 명령을 날리면 두 SCN을 비교해서 같으면 정상종료, 다르면 비정상종료로 판단한다.

체크포인트SCN은 마지막으로 작업한 SCN임을 알 수 있지만, Stop SCN은 어디까지 작업할 지 알 수 없으므로 기본세팅은 무한대로 해놓는다(ffff:ffff)
사용자가 셧다운 명령을 날려 체크포인트가 발생하면 그때의 마지막SCN을 Stop SCN에 집어넣는다.
Posted by 겨울섬
,