데이터 자동 삭제

데이터 보존 기간을 지정하여, 해당 기간이 지나면 데이터가 자동으로 삭제되는 기능이다.

보존 기간 및 삭제 주기를 지정한 Retention Policy를 생성하고, ALTER 구문을 통해 테이블에 적용/해제할 수 있다.

Retention Policy 생성

보존 기간 및 삭제 주기를 지정하여 RETENTION POLICY를 생성한다.

보존 기간은 월(MONTH), 일(DAY) 단위로 지정할 수 있으며, 삭제 주기는 일(DAY), 시간(HOUR) 단위로 지정할 수 있다.

POLICY 정보는 M$RETENTION 테이블 조회하여 확인할 수 있다.

Syntax:

CREATE RETENTION policy_name DURATION duration {MONTH|DAY} INTERVAL interval {DAY|HOUR}
  • policy_name : 생성할 policy 이름
  • duration : 삭제할 데이터의 보존 기간(시스템 시간 기준)
  • interval : 보존 기간 확인 주기

Example:

-- 1일 이상 지난 데이터를 삭제하고, 갱신 주기를 1시간으로 한다.
Mach> CREATE RETENTION policy_1d_1h DURATION 1 DAY INTERVAL 1 HOUR;
Executed successfully.

-- 1달 이상 지난 데이터를 삭제하고, 갱신 주기를 3일로 한다.
Mach> CREATE RETENTION policy_1m_3d DURATION 1 MONTH INTERVAL 3 DAY;
Executed successfully.

Mach> SELECT * FROM M$RETENTION;
USER_ID     POLICY_NAME                               DURATION             INTERVAL             
-----------------------------------------------------------------------------------------------------
1           POLICY_1D_1H                              86400                3600                 
1           POLICY_1M_3D                              2592000              259200               
[2] row(s) selected.

Retention Policy 적용

사전에 생성된 RETENTION POLICY를 테이블에 적용한다.

적용 이후에는 삭제 주기마다 보존 기간을 확인하여 삭제한다.

RETENTION POLICY가 적용된 테이블 정보는 V$RETENTION_JOB 테이블을 조회하여 확인할 수 있다.

Syntax:

ALTER TABLE table_name ADD RETENTION policy_name
  • table_name : 적용할 table 이름
  • policy_name : 적용할 policy 이름

Example:

Mach> CREATE TAG TABLE tag (name VARCHAR(20) PRIMARY KEY, time DATETIME BASETIME, value DOUBLE SUMMARIZED);
Executed successfully.

Mach> ALTER TABLE tag ADD RETENTION policy_1d_1h;
Altered successfully.

Mach> SELECT * FROM V$RETENTION_JOB;
USER_NAME                                                                         TABLE_NAME                                                                        
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
POLICY_NAME                                                                       STATE                                                                             LAST_DELETED_TIME               
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SYS                                                                               TAG                                                                               
POLICY_1D_1H                                                                      WAITING                                                                           NULL                            
[1] row(s) selected.

Retention Policy 해제

테이블에 적용된 RETENTION POLICY를 해제한다.

해제 이후에는 데이터가 삭제되지 않고 영구 보존된다.

Syntax:

ALTER TABLE table_name DROP RETENTION;
  • table_name : 해제할 table 이름

Example:

Mach> ALTER TABLE tag DROP RETENTION;
Altered successfully.

Retention Policy 삭제

해당 RETENTION POLICY가 적용 중인 테이블이 존재하면 삭제할 수 없다.

적용 중인 테이블의 RETENTION을 해제하고 삭제해야 한다.

Syntax:

DROP RETENTION policy_name
  • policy_name : 삭제할 policy 이름

Example:

Mach> ALTER TABLE tag ADD RETENTION policy_1d_1h;
Altered successfully.

-- ERROR
Mach> DROP RETENTION policy_1d_1h;
[ERR-02702: Policy (POLICY_1D_1H) is in use.]

Mach> ALTER TABLE tag DROP RETENTION;
Altered successfully.

-- SUCCESS
Mach> DROP RETENTION policy_1d_1h;
Dropped successfully.
최근 업데이트