본문 바로가기

빅데이터과정/WORKSHOP 1

#21_140711_WSHOP_UNDO DATA

728x90

# UNDO DATA



  • undo data가 지원하는 내용






1.     rollback

2.     flashback 기능

flashback query : 특정 테이블의 과거 data를 쿼리
flashback table

3. undo 데이터를 위해 DBA가 관리해야할 파라미터

 # undo_management : auto로 관리
 # undo_retention : commit을 했어도 데이터를 복구할 수 있는 시간
 # undo_tablespace : 
     -  undo segment 를 저장한다
     -  undo_tablespace는 retention 시간을 보장하지 않기 때문에 retention 크기를 늘렸으     면 tablespace 공간도 늘려줘야 한다
     -   DML 너무작은 undo tablespace는 DML 작업을 수행하지 못하게 한다



flashback query
SQL> delete from emp;
SQL> select * from emp
  as of timestamp(systimestamp - interval '5' minute);
emp 테이블을 지운 후 5분전의 값을 확인할 수 있다
현재시간에서 5분을 뺀 시점을 조회
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK      MANAGER         7839 09-MAY-81       2450                    10
      7566 JONES      MANAGER         7839 01-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 10-SEP-81       1250       1400         30
      7499 ALLEN      SALESMAN        7698 11-FEB-81       1600        300         30
      7844 TURNER     SALESMAN        7698 21-AUG-81       1500          0         30
      7900 JAMES      CLERK           7698 11-DEC-81        950                    30
      7521 WARD       SALESMAN        7698 23-FEB-81       1250        500         30
      7902 FORD       ANALYST         7566 11-DEC-81       3000                    20
      7369 SMITH      CLERK           7902 09-DEC-80        800                    20
      7788 SCOTT      ANALYST         7566 22-DEC-82       3000                    20
      7876 ADAMS      CLERK           7788 15-JAN-83       1100                    20
      7934 MILLER     CLERK           7782 11-JAN-82       1300                    10


systimestamp 는 현재시간을 의미한다
SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
11-JUL-14 02.12.50.988084 PM +09:00

flashback 복구 : 방금 구행했던 쿼리인 delete의 반대로 수행하기 떄문에 insert를 다시 한다.

SQL> alter table emp enable row movement;
flashback 이 가능하도록 활성화 시킴
SQL> flashback table emp to timestamp
  (systimestamp - interval '10' minute);
flashback 으로 10분 뒤로 복구
SQL> commit;


  

문제82. undo_retention 을 3600 초로 변경하시오

ALTER SYSTEM SET undo_retention=900 SCOPE=both;
show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1



문제83. undo_management 를 auto 로 두는 것과 manual로 두는 것의 차이가 무엇인가?

auto – undo segment 관리를 오라클이 자동으로 함
manual – undo segment 관리를 수동으로 한다내가 직접 취소할 데이터를 담을 세그먼트를 만들어서 관리해야 한다(10g 버전 이전)



문제84. 현재 활설화 되어 있는 undo segment 가 몇 개인지 확인하시오

SQL> select * from v$rollname;

       USN NAME
---------- ------------------------------
         0 SYSTEM
         1 _SYSSMU1_592353410$
         2 _SYSSMU2_967517682$
         3 _SYSSMU3_1204390606$
         4 _SYSSMU4_1003442803$
         5 _SYSSMU5_538557934$
         6 _SYSSMU6_2897970769$
         7 _SYSSMU7_3517345427$
         8 _SYSSMU8_3901294357$
         9 _SYSSMU9_1735643689$
        10 _SYSSMU10_4131489474$

문제85. undo_management 를 manual 로 변경하고 db를 내렸다 올리시오

SQL> alter system set undo_management=manual scope=spfile;
SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      MANUAL
undo_retention                       integer     3600
undo_tablespace                      string      UNDOTBS1

SQL> select * from v$rollname;
undo segment 가 11개에서 1개만 남은 것을 확인할 수 있다
       USN NAME
---------- ------------------------------
         0 SYSTEM

SQL> create rollback segment rbs01;
SQL> alter rollback segment rbs01 online;
SQL> select * from v$rollname;
manual 로 변경하면 수동으로 segment를 생성해야 한다
       USN NAME
---------- ------------------------------
         0 SYSTEM
        11 RBS01






문제86. 테이블 스패이스 리스트를 조회해서 undo tablepsace 이름이 무엇인지 조회하시오

SQL> SELECT tablespace_name, CONTENTS
FROM dba_tablespaces; 
contests가 undo로 되어있는 테이블이 복구용 테이블 스패이스이다
TABLESPACE_NAME                CONTENTS
------------------------------ ---------
SYSTEM                         PERMANENT
SYSAUX                         PERMANENT
UNDOTBS1                       UNDO
TEMP                           TEMPORARY
USERS                          PERMANENT
EXAMPLE                        PERMANENT
DATA01                         PERMANENT



문제87. undotbs3 란 이름으로 undo tablespace 를 생성하시오

SQL> create undo tablespace undotbs3
    datafile '/home/oracle/undotbs03.dbf' size 100m;



문제88. 현재 사용하고 있는 undo segment가 저장되어 있는 undo tablespace가 무엇인지 조회하시오

SQL> select segment_name, status, tablespace_name
  from dba_rollback_segs;
undotbs3는 오프라인이고 나머지는 온라인으로 되어있다
SEGMENT_NAME                   STATUS           TABLESPACE_NAME
------------------------------ ---------------- ------------------------------
RBS01                          OFFLINE          SYSTEM
SYSTEM                         ONLINE           SYSTEM
_SYSSMU10_4131489474$          ONLINE           UNDOTBS1
_SYSSMU9_1735643689$           ONLINE           UNDOTBS1
_SYSSMU8_3901294357$           ONLINE           UNDOTBS1
_SYSSMU7_3517345427$           ONLINE           UNDOTBS1
_SYSSMU6_2897970769$           ONLINE           UNDOTBS1
_SYSSMU5_538557934$            ONLINE           UNDOTBS1
_SYSSMU4_1003442803$           ONLINE           UNDOTBS1
_SYSSMU3_1204390606$           ONLINE           UNDOTBS1
_SYSSMU2_967517682$            ONLINE           UNDOTBS1
_SYSSMU1_592353410$            ONLINE           UNDOTBS1
_SYSSMU21_2953536696$          OFFLINE          UNDOTBS3
_SYSSMU20_411699934$           OFFLINE          UNDOTBS3
_SYSSMU19_3590386750$          OFFLINE          UNDOTBS3
_SYSSMU18_1605625091$          OFFLINE          UNDOTBS3
_SYSSMU17_3917235633$          OFFLINE          UNDOTBS3
_SYSSMU16_2960619271$          OFFLINE          UNDOTBS3
_SYSSMU15_1310993138$          OFFLINE          UNDOTBS3
_SYSSMU14_312169738$           OFFLINE          UNDOTBS3
_SYSSMU13_850975623$           OFFLINE          UNDOTBS3
_SYSSMU12_943526448$           OFFLINE          UNDOTBS3



문제89. undo_tablespace 파라미터 값을 undotbs3로 변경하시오

SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     3600
undo_tablespace                      string      UNDOTBS1

SQL> alter system set undo_tablespace=undotbs3 scope=both;
SQL> show parameter undo
undotbs3로 바꾼 것을 확인할 수 있다
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     3600
undo_tablespace                      string      UNDOTBS3



문제90. 다시 undotbs1로 변경하시오


SQL> alter system set undo_tablespace=undotbs1 scope=both;
SQL> show parameter undo
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     3600
undo_tablespace                      string      UNDOTBS1




문제93. guarantee 로 retention 시간을 보장하시오

SQL> alter tablespace undotbs1 retention guarantee;
이명령어로 어떤일이 있어도 그 시간을 보장하도록 한다
SQL> select tablespace_name, retention
    from dba_tablespaces;

TABLESPACE_NAME                RETENTION
------------------------------ -----------
SYSTEM                         NOT APPLY
SYSAUX                         NOT APPLY
UNDOTBS1                       GUARANTEE
TEMP                           NOT APPLY
USERS                          NOT APPLY
EXAMPLE                        NOT APPLY
DATA01                         NOT APPLY
TS02                           NOT APPLY
TS03                           NOT APPLY
TS20                           NOT APPLY
TS50                           NOT APPLY
TS700                          NOT APPLY
TS_EMP_RATE                    NOT APPLY
UNDOTBS3                       NOGUARANTEE



문제95. guarantee 를 해제하시오


alter tablespace undotbs1 retention noguarantee;


'빅데이터과정 > WORKSHOP 1 ' 카테고리의 다른 글

#21_140711_WSHOP_AUDIT  (0) 2014.07.15
#21_140711_WSHOP_최소 권한의 원칙 적용  (0) 2014.07.15
#21_140711_WSHOP_ DEAD LOCK  (0) 2014.07.15
#21_140711_WSHOP_LOCK충돌  (0) 2014.07.15
#21_140711_WSHOP_임시테이블  (0) 2014.07.15