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/용어정리2009. 12. 18. 16:13
Disk Unload의 약자

Recovery without any backup is normally not supported, however, Oracle Consulting can sometimes extract data from an off-line database using a utility called DUL (Disk UnLoad). This utility reads data in the data files and unloads it into SQL*Loader or export dump files. DUL does not care about rollback segments, corrupted blocks, etc, and can thus not guarantee that the data is not logically corrupt. It is intended as an absolute last resort and will most likely cost your company a lot of money!!!


출처 : http://blog.naver.com/orapybubu/40047939471

'Oracle > 용어정리' 카테고리의 다른 글

옵티마이져(Optimizer)란?  (0) 2010.02.04
FGA  (0) 2009.12.23
OLTP  (0) 2009.12.16
Oracle LogMiner  (0) 2009.12.10
Tuning(튜닝)이란?  (0) 2009.12.09
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/용어정리2009. 12. 16. 11:00

OLTP란?

OLTP는 Online Transaction Processing의 약자이다.

온라인 업무의 처리 형태의 하나이다. 터미널에서 받은 메시지를 따라 호스트가 처리를 하고, 그 결과를 다시 터미널에 되돌려주는 방법을 말한다.

네트워크상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위 작업을 처리하는 방식을 말한다. 주로 신용카드 조회 업무나 자동 현금 지급 등 금융 전산 관련 부문에서 많이 발생하기 때문에 ‘온라인 거래처리’라고도 한다. 이 방식의 특징은 기존 컴퓨터 통신에서 이용해 온 온라인 방식과 달리 다수의 이용자가 거의 동시에 이용할 수 있도록 송수신 자료를 트랜잭션(데이터 파일의 내용에 영향을 미치는 거래 ·입출고 ·저장 등의 단위 행위) 단위로 압축, 비어 있는 공간을 다른 사용자들이 함께 쓸 수 있도록 한 점이다.

출처 : http://100.naver.com/100.nhn?docid=717935

'Oracle > 용어정리' 카테고리의 다른 글

FGA  (0) 2009.12.23
DUL(Disk Unload)  (0) 2009.12.18
Oracle LogMiner  (0) 2009.12.10
Tuning(튜닝)이란?  (0) 2009.12.09
Enqueue vs Latch  (0) 2009.11.26
Posted by 자수성가한 부자
Oracle/Admin2009. 12. 15. 16:05
SQL*Loader

외부의 데이터 파일의 데이터를 데이터베이스의 테이블로 넣기 위한 유틸리티
일종의 insert 자동발생기로 생각하면 됨

datafile과 control file이 있어야 함.
datafile에 맞는 control file(text)을 잘 만드는 것이 실력이다.

control file은 로딩될 데이터의 위치와 파일명, 데이터의 포맷 등이 기술되어 있다.

data file(a.txt) 의 내용

7782 CLARK      MANAGER   7839  2572.50          10
7839 KING       PRESIDENT       5500.00          10
7934 MILLER     CLERK     7782   920.00          10
7566 JONES      MANAGER   7839  3123.75          20
7499 ALLEN      SALESMAN  7698  1600.00   300.00 30
7654 MARTIN     SALESMAN  7698  1312.50  1400.00 30
7658 CHAN       ANALYST   7566  3450.00          20
7654 MARTIN     SALESMAN  7698  1312.50  1400.00 30

control file(a.ctl)의 내용

 LOAD DATA
 INFILE 'a.txt'
 INTO TABLE t1
      (empno         POSITION(01:04)   INTEGER EXTERNAL,
       ename         POSITION(06:15)   CHAR,
       job           POSITION(17:25)   CHAR,
       mgr           POSITION(27:30)   INTEGER EXTERNAL,
       sal           POSITION(32:39)   DECIMAL EXTERNAL,
       comm          POSITION(41:48)   DECIMAL EXTERNAL,
       deptno        POSITION(50:51)   INTEGER EXTERNAL)

 SQL*Loader를 이용하여 데이터 적재

OS] sqlldr phil/phil control=a.ctl direct=y

참조 : http://download.oracle.com/docs/cd/B10501_01/server.920/a96652/ch10.htm#1006795
           http://download.oracle.com/docs/cd/B10501_01/server.920/a96652/ch10.htm#1007588

Export
: 데이터 추출을 할 수 있게 하는 유틸리티

OS] exp test/test file=t2.dmp tables=t2
OS] ls t2.dmp


Import
: 데이터 적재를 할 수 있게 하는 유틸리티

OS] imp test/test file=t2.dmp tables=t2
OS] sqlplus test/test
SQL> select * from t2;

cf)
imp test/test file=t2.dmp show=y


data pump
: 10g new feature이다.
  서버 내부에 job, process가 일을 함.
 
10gR2 메뉴얼에서 확인할 것

OS] 선생님 자료 참고할 것.

OS] exp    test/test@jgh_db file=t2.dmp tables=t2 { full=y}                       -- 세션이 끊어지면 작업도 중단됨
OS] expdp test/test@jgh_db SCHEMA=hr DIRECTORY=dpump   job_name=obama
-- 서버안에 job이 만들어지고, 서버 안에 파일이 만들어짐, 세션이 끊어져도 서버 내부에서 일을 끝날때까지 계속함
OS] expdp test/test@jgh_db attach=obama

OS] expdp hr/hr parfile=hr.par                       -- 설정 내용을 파라미터 파일(.par)에 기술할 것.


expdp : 데이터 펌프 export
impdp : 데이터 펌프 import

impdp hr/hr tables=employees directory

ETL (Extraction Transform Loading)

테이블 스페이스를 다 추출하고(TTS)
테이블 스페이스의 meta data만 뽑는다.

SQL> select * from dba_datapump_jobs

external table
- SQL*Loader를 이용한 external table 9i
- Data pump를 이용한 external table 10g등장.
   pupulation = unload

'Oracle > Admin' 카테고리의 다른 글

Managing Storage  (0) 2010.01.06
Managing Schema Objects  (0) 2009.12.30
Backup and Recovery  (0) 2009.12.10
Optimizer Statistics & Performance Statistics  (0) 2009.12.10
Performance Management  (0) 2009.12.08
Posted by 자수성가한 부자
Oracle/SQL2009. 12. 15. 13:05
상호관련 서브 쿼리(Correlated Sub Query)란?
서브쿼리가 메인쿼리의 컬럼을 참조하면 상호관련 서브 쿼리이다.
소속 부서의 평균 급여보다 많은 급여를 받는 사원

SQL> select * from emp e
     where sal > (select avg(sal) 
                  from emp
                  where deptno = e.deptno);


메인 쿼리의 ROW의 수만큼 서브 쿼리가 실행된다.

상호 관련이 있는 테이블의 update에 사용시 유용하다.

SQL> create table n_dept
     as
     select * from dept;
SQL> create table n_emp
     as 
     select * from emp;
SQL> alter table n_emp add (dname varchar2(10));
SQL> select * from n_dept;
SQL> update n_emp
     set dname = 'ACCOUNTING'
     where deptno = 10;

-- 한번에 부모 테이블의 값이 업데이트 됨
SQL> update n_emp e  
     set dname = (select dname
                  from n_dept

                  where deptno = e.deptno);



SQL> update n_dept
     set sum_sal = (select sum(sal)
                    from n_emp
                    where deptno = d.deptno);

'Oracle > SQL' 카테고리의 다른 글

현재 SCN 구하기  (0) 2010.10.01
히든 파라미터 확인 SQL  (0) 2010.09.01
timezone  (0) 2009.12.15
rollup, cube, grouping sets 연산자  (1) 2009.12.14
multi table insert  (0) 2009.12.14
Posted by 자수성가한 부자