Tibero Flashback 가이드 2014. 05. 09.
목차 1. FLASHBACK 소개... 3 1.1. Flashback 개요... 3 1.2. Flashback 기능... 3 2. FLASHBACK 기능... 3 2.1. FLASHBACK QUERY... 3 2.1.1. FLASHBACK QUERY 개요... 3 2.1.2. FLASHBACK QUERY 예제... 3 2.2. FLASHBACK DROP (RECYCLE BIN)... 6 2.2.1. FLASHBACK DROP 개요... 6 2.2.2. FLASHBACK DROP 예제... 7 2.3. PURGE... 10 2.3.1. PURGE 개요... 10 2.3.2. Purge 예제... 10 2
Tibero FLASHBACK 가이드 1. FLASHBACK 소개 1.1. Flashback 개요 복잡한데이터를관리하다보면데이터베이스관리자나사용자들의오류에의해데이터손실의피해가빈번하게발생한다. 예를들면, DB 관리중에테이블을삭제하거나데이터를잘못된값으로수정하기도한다. Tibero 의 Flashback 기능을사용하면몇개의명령문으로삭제된테이블을복구하거나수정된데이터의이전정보를조회할수있다. 1.2. Flashback 기능 구분 Tibero 내용 Flashback Query Flashback Drop (Recycle Bin) Tibero 4.0 SP1 이상지원 (as of timestamp 지원 ) Tibero 4.0 SP1 이상지원 과거특정시점의 Data 를검색 삭제한 Table 을삭제하기이전으로복구 2. FLASHBACK 기능 2.1. FLASHBACK QUERY 2.1.1. FLASHBACK QUERY 개요 기본적으로데이터베이스는가장최근에 commit 된데이터를기준으로작업을수행한다. 사용자실수로인한장애발생등의원인으로인해과거의특정시점을기준으로데이터베이스를조회하고자한다면, Flashback Query 기능을이용할수있다. Tibero 의 Flashback query 기능은 Undo Tablespace 를이용하므로 Undo Retention 기간동안만데이터를보장한다. 2.1.2. FLASHBACK QUERY 예제 _TSN_TIME_MAP_SIZE - UNDO_RETENTION 시간동안생성되는 TSN_TIME_MAP 개수를설정하는파라미터이다. 3
UNDO_RETENTION - Undo 에저장되어있는데이터의재사용이가능한최소시간을설정하는파라미터이다. ( 단위 : Sec) 구분 설명 타입 Integer 기본값 900 속성 Optional, Adjustable, Dynamic, System 설정방법 TIP 파일을설정한후재기동하거나 ALTER 문으로변경한다. 문법 TIP 파일 - UNDO_RETENTION=900 ALTER 문 - ALTER SYSTEM SET UNDO_RETENTION=900 - ALTER SESSION SET UNDO_RETENTION=900 TIP 파일수정 : %$TB_HOME%/config/%TB_SID%.tip 파일을텍스트편집기로열어수정한다. UNDO_RETENTION 과 _TSN_TIME_MAP_SIZE 의파라미터를설정한다. #------------------------------------------------------------------------------- # # RDBMS initialization parameter # #------------------------------------------------------------------------------- DB_NAME=tibero LISTENER_PORT=8629 CONTROL_FILES="/home/Tibero/tbdata/c1.ctl" CERTIFICATE_FILE="/home/Tibero/tibero5/config/svr_wallet/tibero.crt" #PRIVKEY_FILE="/home/Tibero/tibero5/config/svr_wallet/tibero.key" #WALLET_FILE="/home/Tibero/tibero5/config/svr_wallet/WALLET" DB_CREATE_FILE_DEST=/home/Tibero/tbdata LOG_ARCHIVE_DEST=/home/Tibero/arch MAX_SESSION_COUNT=10 TOTAL_SHM_SIZE=512M UNDO_RETENTION=900 _TSN_TIME_MAP_SIZE=1000 - UNDO_RETENTION 의 default 값은 900 이고, _TSN_TIME_MAP_SIZE 의 default 값은 1000 이다. - UNDO_RETENTION/_TSN_TIME_MAP_SIZE =900/1000 = 0.9초간격으로 TSN-TIME MAP이저장할수있지만, 최소단위가 1초이므로 1초주기로저장한다. 저장된 TSN-TIME MAP은 select * from _vt_tsn_time_map; 으로조회할수있다. - Flashback DML 기능은 UNDO를참조하여데이터를복원하는방법이다. 따라서, UNDO_RETENTION 이초과된데이터에대해복구할수없다. UNDO_RETENTION Default Value = 900 이면, 900초이므로 15분이초과된데이터는복구불가능하다. 4
주의사항 - UNDO_RETENTION/_TSN_TIME_MAP_SIZE 계산결과값단위가너무크지않도록주의한다. 예 ) 86400/1000 = 86.4초간격으로 tsn-time map이저장된다. 즉, 86.4초이내의변경내용은같은 tsn으로취급하기때문에그시간주기이하의변경내용을조회할수없다. 테스트테이블생성 - Flashback Test Table 을생성한다. SQL> create table Flashback_test (c1 number, c2 number, c3 number); Table 'FLASHBACK_TEST' created. 테스트데이터입력 - Flashback Test Table 에 Test Data 를 Insert 한다. SQL> declare begin for i in 1..10000 loop insert into Flashback_test values (i,i,i); end loop; end; / PSM completed. SQL> commit; Commit completed. 현재상태조회 - 현재시간과테이블건수를조회한다. SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DDHH24:MI:SS') -------------------------------------------- 2014-05-08 14:57:40 SQL> select count(*) from Flashback_test where C1 between 1 and 999; COUNT(*) ---------- 999 장애발생 - Flashback Test Table 의 Data를 Delete 처리한다. SQL> delete from Flashback_test where C1 between 1 and 999; 999 rows deleted. SQL> commit; Commit succeeded. 5
SQL> select count(*) from Flashback_test; COUNT(*) ---------- 9001 장애이전시점으로복구 - Flashback Test Table 의 Data 를 Delete 처리한이전시점으로 Flashback Query 를수행하여 Data 를조회한다. SQL> Insert into Flashback_test select * FROM Flashback_test as of timestamp to_timestamp('2014-05-08 14:57:40','yyyy-mm-dd hh24:mi:ss') where C1 between 1 and 999; 999 rows inserted. SQL> commit; Commit completed. SQL> select count(*) from Flashback_test; COUNT(*) ---------- 10000 2.2. FLASHBACK DROP (RECYCLE BIN) 2.2.1. FLASHBACK DROP 개요 FLASHBACK DROP (RECYCLE BIN) - 사용자실수로 Table 을 Drop 처리한경우 Drop 된 Table 복구기능을제공한다. - Drop Table 을하게되면실제그것을 drop 하는것보다먼저해당오브젝트의이름을바꾼다. Drop 된 Table 을완전삭제하기위해서 Purge 작업으로가능하다. Windows 의휴지통기능과유사하다. - FLASHBACK DROP 기능을사용할때테이블을제거하면시스템이테이블및인덱스, 트리거, 제약조건의이름을생성하여변경하고, 실제로제거하지않는다. 단, 제거할테이블과관련된외래키제약조건은제거된다. FLASHBACK DROP 예외사항다음과같은경우에는 USE_RECYCLEBIN=Y 로설정하더라도 RECYCLEBIN 으로오브젝트가들어가지않는다. - TEMP TABLE 을 DROP할경우 - SYS 계정의오브젝트를 DROP할경우 - ALTER MOVE한경우원본테이블 6
2.2.2. FLASHBACK DROP 예제 DB_RECYCLE_CACHE_SIZE - RECYCLE Buffer Pool 의크기를지정하는파라미터이다. 구분 설명 타입 Integer 기본값 0 속성 Optional, Adjustable, Static, System 설정방법 TIP 파일에설정한후재기동한다. 문법 TIP 파일 - DB_RECYCLE_CACHE_SIZE=100 USE_RECYCLEBIN - 사용자실수로인해 Object 를 Drop 한경우복구기능을제공하는파라미터이다. 구분 설명 타입 기본값 속성 Boolean N Optional, Adjustable, Dynamic, System 설정방법 TIP 파일을설정한후재기동하거나 ALTER 문으로변경한다. 문법 TIP 파일 - USE_RECYCLEBIN={Y N} ALTER 문 - ALTER SYSTEM SET USE_RECYCLEBIN={Y N} - ALTER SESSION SET USE_RECYCLEBIN={Y N} TIP 파일수정 - TIP 파일수정 : %$TB_HOME%/config/%TB_SID%.tip 파일을텍스트편집기로열어수정한다. - FLASHBACK DROP (RECYCLE BIN) 기능사용을위해 USE_RECYCLEBIN 의 Default 값은 N 이므로, Y 로설정한다. #------------------------------------------------------------------------------- # # RDBMS initialization parameter # #------------------------------------------------------------------------------- DB_NAME=tibero LISTENER_PORT=8629 CONTROL_FILES="/home/Tibero/tbdata/c1.ctl" CERTIFICATE_FILE="/home/Tibero/tibero5/config/svr_wallet/tibero.crt" #PRIVKEY_FILE="/home/Tibero/tibero5/config/svr_wallet/tibero.key" #WALLET_FILE="/home/Tibero/tibero5/config/svr_wallet/WALLET" 7
DB_CREATE_FILE_DEST=/home/Tibero/tbdata LOG_ARCHIVE_DEST=/home/Tibero/arch MAX_SESSION_COUNT=10 TOTAL_SHM_SIZE=512M DB_RECYCLE_CACHE_SIZE=100 USE_RECYCLEBIN=Y 테스트테이블생성 - FLASHBACK Test Table 을생성한다. SQL> conn tibero/tmax Connected to Tibero. SQL> create table flashback_test (c1 number, c2 number, c3 number); Table 'FLASHBACK_TEST' created. 주의사항 - SYS 계정으로 Table Drop 시 RECYCLE BIN 에오브젝트정보가이동되지않음을주의하도록한다. 즉, SYS 계정으로 FLASHBACK DROP 기능을사용할수없다. 테스트데이터입력 - FLASHBACK Test Table 에 Test Data 를 Insert 한다. SQL> declare begin for i in 1..10000 loop insert into flashback_test values (i,i,i); end loop; end; / PSM completed. SQL> commit; Commit succeeded. 현재상태조회 - 현재시간과테이블건수를조회한다. SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DDHH24:MI:SS') -------------------------------------------- 2014-04-29 15:37:18 1 row selected. SQL> select count(*) from flashback_test; 8
COUNT(*) ---------- 10000 장애발생 - Flashback Test Table 의 Drop 처리한다. SQL> drop table flashback_test; Table 'FLASHBACK_TEST' dropped. SQL> select count(*) from flashback_test; TBR-8033: Specified schema object was not found. at line 1, column 23: - Table Drop 시, drop table flashback_test purge; 처리해서바로삭제할수도있다. RECYCLE BIN 정보조회 - FLASHBACK DROP 된 Table 의상세정보를아래의 Query 로조회한다. SQL> SELECT * FROM USER_RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME TYPE TS_NAME CREATETIME DROPTIME DROPTSN -------------------------------------------------------------------------------- TIBERO_TBL168500 FLASHBACK_TEST TABLE USR 2014-04-28:17:46:34 2014-04-29:15:39:18 50792 장애이전시점으로테이블복구 - Flashback Test Table 의 Flashback Drop 기능을사용하여테이블을복구한다. SQL> flashback table flashback_test to before drop; Flashbacked. SQL> select count(*) from flashback_test; COUNT(*) ---------- 10000 주의사항 - Flashback Table 시에원래이름을다른객체가사용해버린경우에는 Flashback 되지않는다. 위의경우를위해 rename to 옵션을사용한다. Flashback table [ 테이블명 ] to before drop rename to [ 새이름 ]; - 같은이름의 recycle bin 이여러개존재하는경우, 원래이름을주어서 Flashback 하면가장최근것이 Flashback 된다. RECYCLE BIN 의테이블정보조회 - user_recyclebin 에복구된테이블정보가조회되지않음을확인할수있다. SQL> SELECT * FROM USER_RECYCLEBIN; SQL> SELECT * FROM RECYCLEBIN; 9
0 row selected. 주의사항 - 테이블을복구하면, USER_RECYCLEBIN 에서 Drop 된테이블정보를조회할수없다. (Windows 의휴지통기능과유사하다.) 2.3. PURGE 2.3.1. PURGE 개요 PURGE - RECYCLEBIN 뷰에포함된스키마객체를완전히제거한다. PURGE 옵션 구분 PURGE TABLE <table_name명 > PURGE INDEX <index_name명 > PURGE RECYCLEBIN PURGE DBA_RECYCLEBIN PURGE TABLESPACE <tablespace_name명 > PURGE TABLESPACE <tablespace_name명 > USER <user_name명 > 내용 Drop된 Table을삭제 Drop된 Index를삭제 User_Recyclebin에존재하는자신의객체삭제 Dba_Recyclebin에존재하는모든객체삭제 Dba_Recyclebin에서특정테이블스페이스의객체삭제 USER 절을지정하면 Dba_Recyclebin에서특정테이블스페이스안에서특정사용자의객체만삭제 2.3.2. Purge 예제 파라미터설정 - DB_RECYCLE_CACHE_SIZE : RECYCLE Buffer Pool 의크기를지정하는파라미터이다. - USE_RECYCLEBIN : 사용자실수로인해 Object 를 Drop 한경우복구기능을제공하는파라미터이다. TIP 파일수정 - TIP 파일수정 : %$TB_HOME%/config/%TB_SID%.tip 파일을텍스트편집기로열어수정한다. - RECYCLE BIN 기능사용을위해 USE_RECYCLEBIN 의 Default 값은 N 이므로, Y 로설정한다. #------------------------------------------------------------------------------- # # RDBMS initialization parameter # #------------------------------------------------------------------------------- DB_NAME=tibero LISTENER_PORT=8629 CONTROL_FILES="/home/Tibero/tbdata/c1.ctl" CERTIFICATE_FILE="/home/Tibero/tibero5/config/svr_wallet/tibero.crt" #PRIVKEY_FILE="/home/Tibero/tibero5/config/svr_wallet/tibero.key" 10
#WALLET_FILE="/home/Tibero/tibero5/config/svr_wallet/WALLET" DB_CREATE_FILE_DEST=/home/Tibero/tbdata LOG_ARCHIVE_DEST=/home/Tibero/arch MAX_SESSION_COUNT=10 TOTAL_SHM_SIZE=512M DB_RECYCLE_CACHE_SIZE=100 USE_RECYCLEBIN=Y 테스트테이블생성 - FLASHBACK Test Table 을생성한다. SQL> conn tibero/tmax Connected to Tibero. SQL> create table flashback_test (c1 number, c2 number, c3 number); Table 'FLASHBACK_TEST' created. 테스트데이터입력 - FLASHBACK Test Table 에 Test Data 를 Insert 한다. SQL> declare begin for i in 1..10000 loop insert into flashback_test values (i,i,i); end loop; end; / PSM completed. SQL> commit; Commit succeeded. 현재상태조회 - 현재시간과테이블건수를조회한다. SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DDHH24:MI:SS') -------------------------------------------- 2014-04-29 15:37:18 1 row selected. SQL> select count(*) from flashback_test; COUNT(*) ---------- 10000 11
장애발생 - Flashback Test Table 의 Drop 처리한다. SQL> drop table flashback_test; Table 'FLASHBACK_TEST' dropped. SQL> select count(*) from flashback_test; TBR-8033: Specified schema object was not found. at line 1, column 23: RECYCLE BIN 정보조회 - FLASHBACK DROP 된 Table 의상세정보를아래의 Query 로조회한다. SQL> SELECT * FROM USER_RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME TYPE TS_NAME CREATETIME DROPTIME DROPTSN -------------------------------------------------------------------------------- TIBERO_TBL168500 FLASHBACK_TEST TABLE USR 2014-04-28:17:46:34 2014-04-29:15:39:18 50792 RECYCLE BIN 의테이블정보삭제 - Purge 기능을사용하여테이블을 user_recyclebin 에서삭제처리한다. user_recyclebin 에 Purge 된테이블이삭제되어조회되지않음을확인할수있다. SQL> select object_name, original_name, droptime from user_recyclebin order by droptime desc; OBJECT_NAME ORIGINAL_NAME DROPTIME ------------------ ---------------- --------------------- TIBERO_TBL138400 FLASHBACK_TEST 2009-09-24:04:11:25 1 row selected. SQL> purge table flashback_test; Purged. SQL> select object_name, original_name, droptime from user_recyclebin order by droptime desc; OBJECT_NAME ORIGINAL_NAME DROPTIME ------------------ ---------------- --------------------- 0 row selected. 12
Copyright 2014 TmaxData Co., Ltd. All Rights Reserved. Trademarks Tibero RDBMS is a registered trademark of TmaxData Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Contact Information TmaxData can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options. Korea TmaxData Co., Ltd 5, Hwangsaeul-ro 329beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do. South Korea Tel: +82-31-779-7113 Fax: +82-31-779-7119 Email: info@tmax.co.kr Web (Korean): http://www.tmaxdata.com Technical Support: http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632. U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web (English): http://www.tmaxsoft.com Russia Tmax Russia L.L.C. Grand Setun Plaza, No A204 Gorbunova st.2, Moscow, 121596 Tel: +7(495)970-01-35 Email: info.rus@tmaxsoft.com Web (Russian): http://ru.tmaxsoft.com Singapore Tmax Singapore Pte. Ltd. 430 Lorong 6, Toa Payoh #10-02, OrangeTee Building. Singapore 319402 Tel: +65-6259-7223 Email: info.sg@tmaxsoft.com United Kingdom TmaxSoft UK Ltd. Surrey House, Suite 221, 34 Eden Street, Kingston-Upon- Thames, KT1 1ER United Kingdom Tel: + 44-(0)20-8481-3776 Email: info.uk@tmaxsoft.com Web (English): http:/www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info.jp@tmaxsoft.com Web (Japanese): http://www.tmaxsoft.co.jp China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2 North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027. China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn Brazil TmaxSoft Brazil Avenida Copacabana, 177-3 andar 18 do Forte Empresarial, Alphaville - Barueri, Sao Paulo, SP-Brasil CEP 06472-001 Email: contato.brasil@tmaxsoft.com TD-TRBU-D0509101 13