
# DBE_ILM
#### 接口介绍
服务于ILM策略实施，实现ILM策略的评估以及压缩Job的停用接口。
表1DBE_ILM 
| 接口名称        | 描述                                       |
|:---|:---|
| EXECUTE_ILM | 根据参数执行对指定的数据和ILM策略进行评估，评估通过则会生成对应的压缩Job。 |
| STOP_ILM    | 根据参数停止正在执行的压缩Job。                        |
   
- DBE_ILM.EXECUTE_ILM 根据参数执行对于的ILM策略，原型为：
  ```
  DBE_ILM.EXECUTE_ILM(
  OWNER          IN VARCHAR2,
  OBJECT_NAME    IN VARCHAR2,
  TASK_ID        OUT NUMBER,
  SUBOBJECT_NAME IN VARCHAR2 DEFAULT NULL,
  POLICY_NAME    IN VARCHAR2 DEFAULT 'ALL POLICIES',
  EXECUTION_MODE IN NUMBER DEFAULT 2);
  ```
  表2DBE_ILM.EXECUTE_ILM接口参数说明 
  | 参数             | 描述                                                                                                                    |
  |:---|:---|
  | OWNER          | 对象所属Schema。                                                                                                           |
  | OBJECT_NAME    | 对象名称。                                                                                                                 |
  | TASK_ID        | 输出生成ADO task的描述符ID。                                                                                                   |
  | SUBOBJECT_NAME | 数据子对象名称。                                                                                                              |
  | POLICY_NAME    | 策略名称，通过查询GS_ADM_ILMOBJECTS视图可知，默认DBE_ILM.ILM_ALL_POLICIES代表该对象上所有策略。DBE_ILM.ILM_ALL_POLICIES默认值为'ALL POLICIES'，不支持小写。 |
  | EXECUTION_MODE | 执行模式，本期不涉及在线模式（ILM_EXECUTION_ONLINE）或离线模式（ILM_EXECUTION_OFFLINE）。                                                     |
     
  
- DBE_ILM.STOP_ILM
  根据参数停止正在执行的ILM策略，原型为：
  ```
  DBE_ILM.STOP_ILM(
  TASK_ID             IN NUMBER DEFAULT -1,
  P_DROP_RUNNING_JOBS IN BOOLEAN DEFAULT FALSE,
  P_JOBNAME           IN VARCHAR2 DEFAULT NULL)
  ```
  表3DBE_ILM.STOP_ILM接口参数说明 
  | 参数                  | 描述                                                  |
  |:---|:---|
  | TASK_ID             | 指定待停止ADO task的描述符ID。                                |
  | P_DROP_RUNNING_JOBS | 是否停止正在执行中的任务，true为强制停止，false为不停止正在执行的任务。            |
  | P_JOBNAME           | 标识待停止的特定JobName，通过GS_MY_ILMEVALUATIONDETAILS视图可以查询。 |
     
  ![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当并发量较大时，执行DBE_ILM.STOP_ILM可能会提示资源繁忙，稍后重试即可。提示内容为"Resources are busy, please try again later"。
  
 
#### 示例
```
gaussdb=# ALTER DATABASE set ilm = on;
gaussdb=# CREATE Schema ILM_DATA;
gaussdb=# SET current_schema=ILM_DATA;
BEGIN
    DBE_ILM_ADMIN.DISABLE_ILM();
    DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 15);
    DBE_ILM_ADMIN.CUSTOMIZE_ILM(2, 30);
    DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1);
    DBE_ILM_ADMIN.CUSTOMIZE_ILM(12, 10);
    DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 1024);
    DBE_ILM_ADMIN.CUSTOMIZE_ILM(14, 240);
    DBE_ILM_ADMIN.ENABLE_ILM();
END;
/
-- 1.1.2 prepare test data
gaussdb=# CREATE SEQUENCE ILM_DATA.ORDER_TABLE_SE_ORDER_ID MINVALUE 1;
gaussdb=# CREATE OR REPLACE PROCEDURE ILM_DATA.ORDER_TABLE_CREATE_DATA(NUM INTEGER) IS
BEGIN
    FOR X IN 1..NUM
        LOOP
            INSERT INTO ORDER_TABLE VALUES(ORDER_TABLE_SE_ORDER_ID.nextval, '零食大礼包A', NOW());
        END LOOP;
    COMMIT;
END;
/
-- 1.1.3 normal procedure
-- 1.1.3.1 evaluate succeeded - all policy
gaussdb=# CREATE TABLE ILM_DATA.ORDER_TABLE (ORDER_ID INT, GOODS_NAME TEXT, CREATE_TIME TIMESTAMP)
    WITH (STORAGE_TYPE=ASTORE) ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION;
BEGIN
    ILM_DATA.ORDER_TABLE_CREATE_DATA(5);
    PERFORM PG_SLEEP(2);
END;
/
gaussdb=# SELECT ORDER_ID, DBE_COMPRESSION.GET_COMPRESSION_TYPE('ilm_data', 'order_table', ctid::text, NULL) FROM ILM_DATA.ORDER_TABLE;
 order_id | get_compression_type 
----------+----------------------
        1 |                    1
        2 |                    1
        3 |                    1
        4 |                    1
        5 |                    1
(5 rows)
gaussdb=# SELECT ORDER_ID, DBE_HEAT_MAP.ROW_HEAT_MAP('ilm_data','order_table', NULL, ctid::text) FROM ILM_DATA.ORDER_TABLE;
 order_id |                 row_heat_map                  
----------+-----------------------------------------------
        1 | (ilm_data,order_table,,,16799,16799,"(0,1)",)
        2 | (ilm_data,order_table,,,16799,16799,"(0,2)",)
        3 | (ilm_data,order_table,,,16799,16799,"(0,3)",)
        4 | (ilm_data,order_table,,,16799,16799,"(0,4)",)
        5 | (ilm_data,order_table,,,16799,16799,"(0,5)",)
(5 rows)
DECLARE
    v_taskid number;
BEGIN
    DBE_ILM.EXECUTE_ILM(OWNER        => 'ilm_data',
                        OBJECT_NAME    => 'order_table',
                        TASK_ID        => v_taskid,
                        SUBOBJECT_NAME => NULL,
                        POLICY_NAME    => 'ALL POLICIES',
                        EXECUTION_MODE => 2);
    RAISE INFO 'Task ID is:%', v_taskid;
END;
/
INFO:  Task ID is:1
gaussdb=# SELECT ORDER_ID, DBE_COMPRESSION.GET_COMPRESSION_TYPE('ilm_data', 'order_table', ctid::text, NULL) FROM ILM_DATA.ORDER_TABLE;
 order_id | get_compression_type 
----------+----------------------
        1 |                    1
        2 |                    1
        3 |                    1
        4 |                    1
        5 |                    1
(5 rows)
gaussdb=# CALL DBE_ILM.STOP_ILM(-1, true, NULL);
 stop_ilm 
----------
(1 row)
```
