'Oracle/Backup & Recovery'에 해당되는 글 17건

  1. 2009.12.21 MTTR (Mean Time To Recover)
  2. 2009.12.21 MTBF(Mean Time Between Failures)
  3. 2009.12.18 User Managed Recovery
  4. 2009.12.18 User Managed Backup
  5. 2009.12.17 flashback database를 가능하게 하는 설정
  6. 2009.12.16 RMAN의 구성요소 및 구성실습 1
  7. 2009.12.14 backup
Oracle/Backup & Recovery2009. 12. 21. 14:29
MTTR (Mean Time To Recover)

The desired time required to perform instance or media recovery on the database. For example, you may set 10 minutes as the goal for media recovery from a disk failure. A variety of factors influence MTTR for media recovery, including the speed of detection, the type of method used to perform media recovery, and the size of the database.
Posted by 자수성가한 부자
Oracle/Backup & Recovery2009. 12. 21. 14:29
Mean time between failures.
A common database statistic important to tuning I/O.
Posted by 자수성가한 부자
Oracle/Backup & Recovery2009. 12. 18. 15:44

● User Managed Recovery
  
-------------------------------------------------------
                            noarchivelog   archivelog
-------------------------------------------------------
complete     closed(mount)       X             O       ex) system ts, undo ts, control file
recovery     open                X             O       ex) 일반 TS 손상, inactive group 삭제

incomplete   closed(mount)       X             O       ex) current Redo log group 삭제
recovery                                                   table 삭제 : flashback 사용불가
             open                X(예외)        X         datafile 손상 + archive log file손상
-------------------------------------------------------

※ 신뢰할 만한 백업과 백업 이후의 redo log file이 있으면 복구가 가능



  ◎ complete recovery
     : 훼손된 또는 사라진 파일만 backup에서 restore

SQL> recover database
SQL> recover tablespace 이름|번호
SQL> recover datafile 이름|번호

    ○ temporary tablespace 손상
      : redo가 남지 않으므로, 다시 생성

SQL> select * 
     from t1
     where 1,2,3,4,5,6,7,8,9,10,11;

     temporary tablespace를 삭제
       -> PGA만으로는 정렬공간이 모자라므로 temptablespace를 쓰도록 함.
          -> 문제발생??
             -> startup force;


cf)

SQL> create temporary tablespce ts1
     tempfile '.....';           -- 이 테이블스페이스가 temp로 쓰인다는 것을 표현, 리두가 안남음.


    ○ redo log file 손상
      1. member 하나 손상
        : redo log는 대체로 2벌로 한다.
          하나의 그룹의 하나의 멤버가 손상되었을 경우 그 redo logfile이 어떤 파일인지 빨리 발견하고
          (alertSID.log) 대처할 것. 


      2. group 없어졌을 경우
        : 상태를 inactive로 변경하고 삭제(alter database drop -> OS명령으로 삭제)

cf)

SQL> alter database drop logfile group 3;

위의 명령이 실행 안되는 상황
- current, active 그룹일 경우
- archiving이 끝나지 않았을 경우
- group이 2개인 경우

SQL> alter database drop logfile member '....'

위의 명령이 실행 안되는 상황
- current, active 그룹일 경우
- archiving이 끝나지 않았을 경우
- member가 1개인 경우 -> 그룹 삭제


    ○ index만 있는 file이 손상
      : 파일 생성 후, index를 다시 생성한다.

    ○ password file 손상
      : 삭제하고 다시 생성


  ◎ incomplete recovery
     : 저장된 모든 데이터 파일 적당한 시점까지 복원.

incomplete recovery의 case

1. current, active group인 redo log files 삭제 => DUL
2. datafile삭제 + archived log file 없는 경우
3. user실수 : drop table, 부적절한 commit  -> flashback으로 해결 or 불완전 복구
4. control file 전체삭제 -> trace 파일을 참조해서 할 것.(참조:mannual)


recovery의 종류

- time-based recovery
- change-based recovery(scn)
- log sequence recovery


3. user 실수 : drop table, 부적절한 commit

    ○ 그냥 불완전 복구
      1. shutdown 및 whole 백업
      2. 일반 : 불완전 복구
         - 모든 datafile 복원
         - startup mount
         - recover database until ...;
         - alter database open resetlogs;

      종류
       table drop : 모든 datafile 복원
       tablespace drop : 모든 datafile 및 control file 복원
       table drop + archived inactive redo log group 삭제
       current or active group 삭제

        ※ 불완전 복구에서는 시간을 정확히 알아내는 것이 중요

실습
1. shutdown 및 whole 백업(archive log mode일 것)

OS] sqlplus / as sysdba
SQL> startup force
SQL> archive log list
SQL> shutdown immediate
SQL> exit
OS] cd $ORACLE_BASE/oradata
OS] rm -rf devdb_backup
OS] rm -rf /u01/app/oracle/oradata/devdb/DEVDB
OS] mkdir devdb_backup
OS] cp $ORACLE_BASE/oradata/devdb/* $ORACLE_BASE/oradata/devdb_backup
OS] sqlplus / as sysdba
SQL> startup
SQL> create table phil.t21 (col1 varchar2(30));
SQL> insert into phil.t21 values (sysdate);
SQL> insert into phil.t21 values (sysdate+1);
SQL> commit;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> !date

   2009. 12. 21. (월) 18:21:31 KST

SQL> alter system switch logfile;
SQL> drop table phil.t21 purge;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select * from phil.t21;
  select * from phil.t21
                   *
  ERROR at line 1:
  ORA-00942: table or view does not exist


2. time based recovery

SQL> conn / as sysdba
SQL> shutdown abort
SQL> !cp $ORACLE_BASE/oradata/devdb_backup/*.dbf $ORACLE_BASE/oradata/devdb
SQL> startup mount;
SQL> recover database until time '2009-12-21 18:21:31';

ORA-00279: change 1145878 generated at 12/21/2009 18:19:23 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/oradata/devdb_fra/DEVDB/archivelog/2009_12_21/o1_mf_1_6_%u_.arc
ORA-00280: change 1145878 for thread 1 is in sequence #6

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
--> auto 입력

SQL> alter database open resetlogs;
SQL> select * from phil.t21;
COL1
------------------------------
21-DEC-09
22-DEC-09



    ○ 불완전 복구 + export/import

      1. shutdown 및 whole 백업
      2. 일반 : 불완전 복구
         - 모든 datafile 복원
         - startup mount
         - recover database until cancel;
         - alter database open resetlogs;
      3. emp를 export
      4. 0을 whole restore + inactive group 삭제/생성
      5. 2를 import


    ○ clone DB를 이용 복구(clone DB를 이용한 복구 실습. TSP)

      1. control file의 trace를 만듬
      2. clone db용 디렉토리 생성
      3. datafile과 online redo logfile, archive log file을 clone db용 디렉토리로 복사
      4. 파라미터 파일 생성
      5. startup nomount
      6. trace 수정 후 실행
      7. alter database mount
      8. recover database until time '2008-08-23:22:38:04' using backup controlfile;
      9. alter database open resetlogs;



기타 참고사항

- export 명령 찾아볼 것.

- 어느 것이 복구시에 더 많은 시간이 걸릴까?
  tablespace drop -> 명령이 alert에 남는다.
  table drop      -> 명령이 남지 않는다. (logminer로 분석을 해서는 볼 수 있음)

- EM에 접속과 원격지에서 sysdba로 접속하려면쓰려면 password file이 있어야.함

'Oracle > Backup & Recovery' 카테고리의 다른 글

MTTR (Mean Time To Recover)  (0) 2009.12.21
MTBF(Mean Time Between Failures)  (0) 2009.12.21
User Managed Backup  (0) 2009.12.18
flashback database를 가능하게 하는 설정  (0) 2009.12.17
RMAN의 구성요소 및 구성실습  (1) 2009.12.16
Posted by 자수성가한 부자
Oracle/Backup & Recovery2009. 12. 18. 15:21
● User Managed Backup

----------------------------------------
             Noarvhivelog    Archivelog
----------------------------------------

closed             O              O      → 몽땅
(shutdown)
open               X              O      → Database file → 1. Datafile
----------------------------------------                   2. Redo log file
                                                           3. Control file
                                         → 기타중요파일 : 복사

  ◎ Database file
    1. Datafile
      ① 데이터 파일 전체 백업
         - 장점 : 한번에 작업이 가능
         - 단점 : 리두의 발생이 많아질 수 있음

SQL> Alter database begin backup;
OS] cp 파일 /data/backup
SQL> Alter database end backup;

      ② 테이블 스페이스별 백업 
         - 장점 : 리두의 발생이 적음
         - 단점 : 명령을 많이 쳐야한다.(SQL로 명령 생성 후 copy & paste)

SQL> alter tablespace 이름 begin;
OS] cp 파일이름 /data/backup
SQL> alter tablespace 이름 end backup;


SQL> select 'alter tablespace '||tablespace_name||' begin backup;'||chr(10)||
            '!cp '||file_name||' /u01/app/oracle/oradata/devdb_backup'||chr(10)||
            'alter tablespace '||tablespace_name||' end backup;' as commands
         from dba_data_files;


    2. Redo log file(백업 대상이 아님)
    3. control  file
       : alter database backup control to trace;
         - user_dump_dest
         - sid_ora_pid.trc

               trace 파일 찾는 SQL

SQL> select
  d.value||'/'||p.value||'_ora_'||s.spid||'.trc'
  as trace_file_name
from
  (
  select value
  from v$parameter
  where name = 'instance_name'
  ) p,
  (
  select value
  from v$parameter
  where name = 'user_dump_dest'
  ) d,
  (
  select spid
  from v$process
  where addr = (
    select paddr
    from v$session
    where sid = (select sid from v$mystat where rownum = 1)
    )
  ) s
;


  ◎ 기타 중요파일
      : 그냥 복사
     - parameter file
     - archived log file
     - diagnostic file


기타 참고사항

- sqlplus에서 spool시에 적용 가능한 설정
  : set heading off
    set feed off

- Q : open backup하면 백업한 시간이 다르므로 동기화정보가 맞지 않음  -> 제대로 백업이 될 것인가???
  A : 제대로 백업이 됨. 동기화 정보가 같을 필요가 없다.
      alter tablespace 파일이름 begin backup : 파일의 헤더만 frozen됨
      파일 복사
      alter tablespace 파일이름 end backup:

      복구시 : recover datafile 1

'Oracle > Backup & Recovery' 카테고리의 다른 글

MTBF(Mean Time Between Failures)  (0) 2009.12.21
User Managed Recovery  (0) 2009.12.18
flashback database를 가능하게 하는 설정  (0) 2009.12.17
RMAN의 구성요소 및 구성실습  (1) 2009.12.16
backup  (0) 2009.12.14
Posted by 자수성가한 부자
Oracle/Backup & Recovery2009. 12. 17. 16:31
flashback database를 가능하게 하는 설정.


0. 반드시 archivelog mode일 것
   : 아래의 쿼리로 database의 mode를 확인할 수 있다.

SQL> archive log list

1. 반드시 FRA설정이 되어 있을 것.
    : db_recovery_file_dest, db_recovery_file_dest_size 파라미터가 설정되어 있을 것.

2. 아래의 순서대로 설정을 한다.

SQL> shutdown immediate
SQL> startup mount exclusive;                                                       -- 특정 인스턴스가 독점적으로 쓰기 위해 startup
SQL> alter system set db_flashback_retention_target=2880 scope= both;     -- 최대 이틀전까지 돌아갈 수 있도록 설정.
SQL> alter database flashback on;
SQL> alter database open


flashback buffer가 shared pool내에 생김, 크기는 redo log buffer의 두배
RVWR : 주기적으로 flashback log를 FRA로 기록한다.

'Oracle > Backup & Recovery' 카테고리의 다른 글

MTBF(Mean Time Between Failures)  (0) 2009.12.21
User Managed Recovery  (0) 2009.12.18
User Managed Backup  (0) 2009.12.18
RMAN의 구성요소 및 구성실습  (1) 2009.12.16
backup  (0) 2009.12.14
Posted by 자수성가한 부자
Oracle/Backup & Recovery2009. 12. 16. 14:10
● Administration Workshop  review

  ◎ Oracle Database 10g는 Grid Computing을 지원하는 최초의 데이터베이스

  ◎ Grid computing은 pooling, virtualization, provisioning이 가능해야한다.
                     (ASM),   (RAC),         (AS, oracle streams) 


  ◎ Cluster : 서로 다른 기계를 마치 하나의 기계인 것처럼 사용 할 수 있게 하는 기술

  ◎ OMF(Oracle Managed File)
    
- 오라클이 파일을 알아서 관리
     - db_create_file_dest, db_create_online_log_dest_1 ~ db_create_online_log_dest_5
       파라미터가 설정되어 있어야 한다.



● RMAN (Recovery Manager)
 
  ◎ RMAN의 구성요소



    ○ Target Database
    ○ Catalog Database
    ○ Recovery Catalog
    ○ Auxiliary Database
    ○ Image copy : backup as copy database의 명령으로 인한 결과물
    ○ Backup Set : backup as backupset database의 명령으로 인한 결과물로 Backup Piece의 묶음
                   분할 압축한 zip파일 전체. a00.zip ~ a02.zip
    ○ Backup Piece :
backup as backupset database의 명령으로 인한 결과물.
                     분할 압축한 zip파일 하나 하나. a00.zip, a01.zip, a02.zip

  ◎ RMAN 실습
    ○ Database mode 수정

OS] mkdir $ORACLE_BASE/oradata/devdb_arch
OS] mkdir $ORACLE_BASE/oradata/devdb_fra
OS] sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup force
SQL> alter system set log_archive_dest_1 = 'location=$ORACLE_BASE/oradata/devdb_arch/';
SQL> alter system set db_recovery_file_dest_size = 2G;
SQL> alter system set db_recovery_file_dest = '$ORACLE_BASE/oradata/devdb_fra';
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list


    ○ Target Database


OS] vi $ORACLE_HOME/network/admin/tnsnames.ora
orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.122.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
OS] tnsping orcl
OS] sqlplus system/oracle@orcl
SQL> select * from v$tablespace;
SQL> select name from v$datafile;
SQL> create tablespace rman_ts
     datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\rman_ts01.dbf' size 100m
     autoextend on next 10m maxsize 2g;
SQL> create user js??
     identified by js??
     default tablespace rman_ts
     temporary tablespace temp
     quota unlimited on rman_ts;
SQL> grant connect, resource, RECOVERY_CATALOG_OWNER
     to js??;
SQL> exit
OS] rman catalog js??/js??@orcl
RMAN> create catalog;
RMAN> exit
[oracle@ora10gr2 ~]$ export ORACLE_SID=devdb
[oracle@ora10gr2 ~]$ rman target / catalog js??/js??@orcl
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
RMAN> backup database;


    ○ 작업 결과 확인


  유저       : js??
  암호       : js??
  접속식별자 :
select * from user_objects order by object_type;
select * from rc_database;
select * from rc_tablespace;
select * from rc_backup_piece;


  ◎ Database Link
     : tnsnames.ora에 정의되어 있는 주소에 직접 연결할 수 있는 Database Link를 만들고 실습

OS] export ORACLE_SID=devdb
OS] sqlplus / as sysdba
SQL> create user paul
     idenfied by lion
     default tablespace USER_TAB_TS
     temporary tablespace TEMP;
SQL> grant connect, resource to paul;
SQL> conn paul/lion
SQL> CREATE DATABASE LINK orcl_link
     CONNECT TO js?? IDENTIFIED BY js??
     USING 'orcl';
SQL> select * from rc_database@orcl_link;



기타 참고사항

- RMAN용 백업정보를 몇일간 남길 것인가를 결정하는 파라미터

SQL> show parameter control_file_record_keep_time

- auxiliary[gzlri] : 보조의, 부의


'Oracle > Backup & Recovery' 카테고리의 다른 글

MTBF(Mean Time Between Failures)  (0) 2009.12.21
User Managed Recovery  (0) 2009.12.18
User Managed Backup  (0) 2009.12.18
flashback database를 가능하게 하는 설정  (0) 2009.12.17
backup  (0) 2009.12.14
Posted by 자수성가한 부자
Oracle/Backup & Recovery2009. 12. 14. 17:16
● Backup 의 분류
  ◎ logical backup
      : export, datapump

  ◎ physical backup
      : os명령, RMAN + OSB(Oracle Secure Backup, 10g R2 new feature)
      - 컨트롤 파일을 읽고 -> 백업을 함
         - > datafile과 백업을 마치고 각 파일의 위치와 정보를 control파일에 기록

아래는 RMAN사용법(신뢰성있는 백업이 가능하게 함)

-- 백업
OS] rman target /
RMAN> backup database;                       --> datafile + controlfile 백업
RMAN> backup tablespace users;            --> datafile 백업
RMAN> backup archivelog all;                  --> archived log file 백업
               
-- 복원 & 복구
RMAN> restore tablespace users;
RMAN> recovery tablespace users;

-- 백업 리스트
RMAN> list backup;
RMAN> delete backipset 1

OSB를 이용하면 오라클 관련 파일뿐 아니라 그 외의 파일들도 백업이 가능하게 됨.

● 용어정리
  ◎ full backup      : 데이터가 들어있는 블럭만 백업    { <-> incremental backup }
  ◎ whole backup : 전체백업                                  { <-> partitial backup }
  ◎ offline backup : 정상 shutdown 후 백업. 모든 동기화 정보가 맞음.

SQL> shutdown immediate
SQL> !mkdir /u01/app/oracle/oradata/ikdb_backup
SQL> !cp /u01/app/oracle/oradata/ikdb/* /u01/app/oracle/oradata/ikdb_backup
RMAN> startup mount;
RMAN> backup database;

  ◎ online backup : shutdown하지 않고 백업. 유저들이 좋아할만한 백업.

SQL> startup open
SQL> alter tablespace system begin backup;
SQL> !cp /u01/app/oracle/oradata/ikdb/system01.dbf /u01/app/oracle/oradata/ikdb_backup
SQL> alter tablespace system end backup;
RMAN> startup open;
RMAN> backup database;


RMAN> show all;

RMAN> backup as copy                          database;
RMAN> backup as backupset                   database;        -- HWM까지의 데이터만 백업
RMAN> backup as compressed backupset database;       -- HWM까지의 데이터만 압축해서 백업


● recovery
   ◎ open이 되려면 최소한 갖춰야 하는 요건
      - 모든 control file이 정상이어야 한다.
      - 모든 online datafile이 정상이어야 한다.
      - 리두 로그 파일은 최소한 멤버 1개는 정상이어야 한다.

● flashback
    - backup & recovery에 비해서 빠르다.
    - 변경된 데이터만 복구
    - 유저의 실수에 대해서만 복구가 가능.
   ◎ 종류
       1. flashback database
           - backward, forward 둘다 가능
           - 유저들이 여기저기에 많은 문제를 발생시켰을 때 사용.
           - 언두가 내려쓰는 특정 시점으로 되돌린다음 세세한 내용은 리두로 되돌림
           - 리두는 작업하나하나가 내려써짐
           - 언두는 특정기간(15분 등) 마다 한번씩 내려써짐
           - 평상시에 플래쉬백 로그가 남도록 설정해야 함.
           - mount상태에서 가능함.

       2. flashback table
           - 특정한 시점으로 테이블을 복구한다.
           - 추가적인 공간이 필요없다.
           - 언두 테이블 스페이스에서 데이터를 가져온다.
           - 시스템 테이블에 대해서는 불가능

       3. flashback versions query
           - row level의 플래쉬백

       4. flashback transaction query
           - row level의 플래쉬백


※ os 명령을 이용한 backup은 신뢰할만한 backup이 아님 -> RMAN을 이용할 것.


'Oracle > Backup & Recovery' 카테고리의 다른 글

MTBF(Mean Time Between Failures)  (0) 2009.12.21
User Managed Recovery  (0) 2009.12.18
User Managed Backup  (0) 2009.12.18
flashback database를 가능하게 하는 설정  (0) 2009.12.17
RMAN의 구성요소 및 구성실습  (1) 2009.12.16
Posted by 자수성가한 부자