◆ 백업이란?
만약의 경우 장애가 발생해서 DB가 사용할 수 없는 상태가 되었을 때 이를 고치기 위해 필요한 파일들을 미리 복사해 두는 것.


◆ 백업 대상
만약을 위해 백업을 받아야 하는 대상은 필수 파일과 선택 파일로 구분할 수 있다.
필수파일로는 데이터파일, 리두로그파일, 컨트로파일이 있고, 선택파일은 파라미터파일, 패스워드파일이 있다.
선택적 파일은 굳이 백업을 받아두지 않아도 되나 추후 불편한 일이 생길 수 있기 때문에 백업시 대상에 포함시키는 것이 이롭다.(패스워드 파일이 없으면 sys계정으로 로그인을 못한다. 패스워드 파일을 다시 만드느니 차라리 백업을 받아두는 것이 좋을 것이다.)

  ◇ 패스워드 파일의 필요성
오라클 사용자 암호가 어디에 들어있을까? 바로 딕셔너리에 들어있다. 딕셔너리의 정보는 DB가 오픈 상태일 때만 가능하다는 것을 알 것이다.(DBA_, ALL_, USER_)
DB가 셧다운 된 상태에서 오픈시킬려면 sys로 로그인해야 한다. sys암호는 딕셔너리에 들어있다. 딕셔너리에서 sys암호를 찾아야 한다. 하지만 지금 DB는 꺼져있다. 이거 어떻게 할 것인가??
그래서 sys암호는 딕셔너리에 들어있지 않고, 별도의 파일로 들어있다.
경로는 $ORACLE_HOME/dbs/orapwSID 이다.

  ◇ 패스워드 보안
우리가 DB에 sys로 로그인 시 'sqlplus / as sysdba'라고 하면 로그인이 되는 것을 알 수 있다. 이때 sys의 암호는 쓰지 않았다. 그렇다면 sys의 암호를 모르는 사람이 로그인이 가능하다는 말이 된다. (실제로 로그인 가능;;)
원하는 것은 'sqlplus sys/암호 as sysdba' 처럼 암호를 입력해야 로그인이 가능하게 하고 싶다.

$ vi $ORACLE_HOME/network/admin/sqlnet.ora
sqlnet.authentication_services=(none)



◆ 닫힌백업(콜드백업; Cold backup)
  - 오라클을 셧다운 시킨 상태에서 백업
  - 단점 : 백업받는 동안은 DB서비스 불가능.

  ◇ 주의사항
    - 모든파일은 동일한 시점의 것이어야 한다.
    - 정상적으로 DB를 셧다운 시킨 상태에서 백업을 받아야 한다.
    - 아카이브 모드 또는 노아카이브 모드 모두 사용 가능
    - 데이터파일, 컨트롤파일, 리두로그파일 모두를 백업받을 수 있다.

  ◇ 닫힌백업 순서
① 백업받을 파일의 경로 확인 후 DB 정상 셧다운
  ↓
② 원하는 경로에 파일 복사
  ↓
③ DB 오픈



◆ 열린백업(핫백업; Hot backup)
  - 오라클이 오픈된 상태에서 백업
  - 장점 : 백업 중에도 DB서비스 가능.
  - 단점 : 리두로그의 양이 굉장히 증가하므로 어지간하면 DML작업이 다량으로 일어나는 시간에는 열린백업을 하지말자.

  ◇ 주의사항
    - 열린백업은 테이블스페이스 단위로 백업 수행
    - 반드시 DB는 아카이브 모드에서만 가능
    - 데이터파일, 컨트롤파일만 백업 가능(리두로그파일은 데이터파일의 변경되는 내용이 저장되는 중이기 때문.)

열린백업을 받는 동안은 해당 테이블스페이스를 오프라인 시켜 놓는데, 그렇다면 백업 동안은 내용 변경이 불가능할까? 그렇지 않다. 백업 동안의 변경되는 내용은 리두로그파일에 저장된다.
이는 열린백업 동안 DML작업이 일어나면 많은 양의 리두로그가 발생하게 되고 백업이 오래 지속되면 그 동안에 변경된 내용은 전부 리두로그파일에 저장되었다가 백업이 끝나게 되면 다시 데이터파일에 적용해야 하기 때문에 반드시 아카이브로그모드로 작동해야 하는 것이다.


  ◇ 열린백업 순서
① 백업받을 테이블스페이스를 조회
  ↓
② alter tablespace 테이블스페이스명 begin backup;
  ↓
③ 실제 OS명령어로 원하는 경로에 파일 복사
  ↓
④ alter tablespace 테이블스페이스명 end backup;

  ◇ 열린백업 상태 조회
아래 쿼리 결과 중 status 부분에 active로 되어 있으면 begin backup 상태, not active이면 end backup 상태임을 뜻함.
time 부분은 가장 마지막에 begin backup을 받은 시간을 뜻함.
SQL> select a.file#, a.name, b.status, to_char(b.time, 'YYYY-MM-DD:HH24:MI:SS') as time
   from v$datafile a, v$backup b
   where a.file#=b.file#

'오라클 > Backup & Recovery' 카테고리의 다른 글

[B/R] 기본적인 장애 상황  (0) 2010.09.08
[B/R] Recovery 원리  (0) 2010.09.08
[B/R] Archive log mode와 No Archive log mode  (0) 2010.09.06
[B/R] 컨트롤 파일 재생성  (0) 2010.08.27
[B/R] Flashback Table  (0) 2010.08.19
Posted by 겨울섬
,