• ILM ADO storage tiering policy on table partition


    GOAL
     This article shows an example for applying ILM ADO storage tiering policy on table partition.

    SOLUTION
    The example creates and enforces ADO storage tiering policy on the partition JAN_1_2007 of the ILM_DEMO table.

    The policy is created by the following command:
        

      ALTER TABLE ILM_DEMO MODIFY PARTITION  JAN_1_2007 ILM ADD POLICY TIER TO ILMTSDEMO_LOWCOST;
          
    The example shows that the partition JAN_1_2007 is originally stored on ILM_SOURCE tablespace.

    After data load into partition JAN_1_2007, the ILM_SOURCE tablespace got 75% full, 25% free.

    We added a storage tiering policy to partition JAN_1_2007 to move it to ILMTSDEMO_LOWCOST tablespace.

    The policy evaluates to true when the tablespace containing the object meets the tablespace fullness threshold.

    The example shows that this did not happen initally and dba_ilmevaluationdetails show PRECONDITION NOT SATISFIED after policy evaluation.

    In order to the policy to evaluate to true we adjusted the ILM parameters TBS_PERCENT_FREE and TBS_PERCENT_USED, then the policy evaluated to true and the corresponding ILM job was triggered to carry out the move of the JAN_1_2007 partition to the ILMTSDEMO_LOWCOST tablespace.

    After the ILM job completed, the corresponding storage tiering policy was disabled automatically.

    Througout the example we forced the evaluation of the policy instead of waiting for the maintenance window to open and trigger the policy evaluation and the corresponding job (as by default ILM policies are evaluated in the maintenance window).

    The example script is the following.

    You may need to execute the dbms_ilm_admin procedures as SYS AS SYSDBA user in order to avoid ORA-38330: insufficient privilege for ILM operation. This is due to bug 16887946, which is fixed in 12.2.

    For simplicity the example below has been executed as user SYS AS SYSDBA in 12.1.0.2.

    spool tier_part_ex1.log

    set lines 300
    set echo on
    col name format a30
    col policy_name format a11;
    col object_owner format a10;
    col object_name format a20;
    col object_type format a20;
    col subobject_name format a23;
    col enabled format a7;
    col tier_tablespace format a20;
    col tier_status format a20;
    col custom_function format a20 wrapped;
    col TABLE_NAME format a20
    col PARTITION_NAME format a25
    col "Last Analyzed" format a20
    col high_value format a40
    col segment_name format a30
    col comments format a30
    col START_TIME format a30
    col COMPLETION_TIME format a30
    col STATISTICS format a30
    col JOB_NAME format a20
    col task_owner format a20
    set serveroutput on
    alter session set nls_date_format='DD-MM-YYYY HH24:MI:SS';


    -- Pre-requisites
    -- conn sys as sysdba

    -- heat_map = ON
    alter system set heat_map = ON;

    CREATE TABLESPACE ILM_SOURCE DATAFILE 'ILM_SOURCE.dbf'  SIZE 12m REUSE AUTOEXTEND ON NEXT 2m MAXSIZE 1024M EXTENT MANAGEMENT LOCAL;
    CREATE TABLESPACE ILMTSDEMO_LOWCOST DATAFILE 'ILMTSDEMO_LOWCOST.dbf'  SIZE 50m REUSE AUTOEXTEND ON NEXT 5m MAXSIZE 1024M EXTENT MANAGEMENT LOCAL;


    -- Create table and partition JAN_1_2007 in the ILM_SOURCE tablspace and load rows into it

    CREATE TABLE ILM_DEMO
    (
      ILM_TRD_EFF_DT            DATE                NOT NULL,
      ILM_ADT_TIMESTAMP         TIMESTAMP(6)        DEFAULT (SYSDATE)             NOT NULL,
      ILM_BIN_NO                VARCHAR2(20 BYTE)   DEFAULT ' '                   NOT NULL,
      ILM_NETWRK_LEVEL          VARCHAR2(2 BYTE)    DEFAULT ' '                   NOT NULL
    )
    PARTITION BY RANGE (ILM_TRD_EFF_DT)
    (  
      PARTITION JAN_1_2007 VALUES LESS THAN (TO_DATE(' 2007-01-16 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
        NOCOMPRESS TABLESPACE ILM_SOURCE,  
      PARTITION ILM_DEMO_PART_20140430 VALUES LESS THAN (TO_DATE(' 2014-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
        NOCOMPRESS   ,  
      PARTITION ILM_DEMO_PART_20140515 VALUES LESS THAN (TO_DATE(' 2014-05-16 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
        NOCOMPRESS   
        );

    -- Insert rows into partition JAN_1_2007
    begin
     FOR j in 1..80000 LOOP
       insert into ILM_DEMO (ILM_TRD_EFF_DT) values (TO_DATE(' 2007-01-10 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')+1/j);
      end loop;
    commit;
    end;
    /

    -- Collects stats on the table, so that user_tab_partitions return accurate values
    begin DBMS_STATS.GATHER_TABLE_STATS(ownname => user, tabname => 'ILM_DEMO', granularity => 'ALL', cascade => DBMS_STATS.AUTO_CASCADE,  method_opt => 'FOR ALL COLUMNS SIZE AUTO', estimate_percent => NULL);
    end;

    select table_name , PARTITION_NAME , TABLESPACE_NAME , to_char(LAST_ANALYZED,'MM/DD/YYYY HH24:MI') as "Last Analyzed" , NUM_ROWS  , BLOCKS from user_tab_partitions where table_name='ILM_DEMO' order by table_name ,partition_position;
    select table_name   , TABLESPACE_NAME , to_char(LAST_ANALYZED,'MM/DD/YYYY HH24:MI') as "Last Analyzed" , NUM_ROWS  , BLOCKS 
    from user_tables where table_name='ILM_DEMO' order by table_name  ;

    select tablespace_name, segment_name, segment_type,partition_name from user_segments where partition_name='JAN_1_2007';

    -- Query space in the ILM_SOURCE tablespace
    -- Note % Free and % Used values.
    -- We will come back to this later at the storage tiering policy

    SELECT /* + RULE */ df.tablespace_name "Tablespace",
    df.bytes / (1024 * 1024) "Size (MB)",
    SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
    Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
    Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"
    FROM dba_free_space fs,
    (SELECT tablespace_name,SUM(bytes) bytes
    FROM dba_data_files
    GROUP BY tablespace_name) df
    WHERE fs.tablespace_name (+) = df.tablespace_name and df.tablespace_name ='ILM_SOURCE'
    GROUP BY df.tablespace_name,df.bytes
    Order by 4;


    -- Create a storage tiering policy on PARTITION  JAN_1_2007
    -- Note the decision to move segment depends on the default thresholds (see dba_ilmparameters for current values).

    ALTER TABLE ILM_DEMO MODIFY PARTITION  JAN_1_2007 ILM ADD POLICY TIER TO ILMTSDEMO_LOWCOST;

    --info on policy
    select * from dba_ilmparameters;
    select * from user_ILMDATAMOVEMENTPOLICIES;
    select * from user_ilmobjects;
    select * from user_ilmpolicies;

    -- Force evaluation of the policy, and execution of ADO task
    -- for this demo we cannot wait for the maintenance window to open and trigger the ADO policies jobs.
    -- Instead, we are going to use the following PL/SQL block and trigger it.
    DECLARE
    v_executionid number;
    BEGIN
    dbms_ilm.execute_ILM (ILM_SCOPE      => dbms_ilm.SCOPE_SCHEMA,
                          execution_mode => dbms_ilm.ilm_execution_offline,
                          task_id        => v_executionid);
    END;
    /

    -- shows that the partition has NOT moved to ILMTSDEMO_LOWCOST tablespace
    select tablespace_name, segment_name, segment_type,partition_name from user_segments where partition_name='JAN_1_2007';

    --shows ILM task, and that corresponding job has not been created
    -- because during policy evaluation PRECONDITION NOT SATISFIED
    select t.task_id, t.task_owner, t.state,e.policy_name, e.object_owner, e.object_name,e.SELECTED_FOR_EXECUTION
           ,r.job_name,r.job_state,r.start_time,r.completion_time,r.statistics
       from dba_ilmtasks t,dba_ilmevaluationdetails e,dba_ilmresults r
       where    t.task_id=e.task_id(+)    and  t.task_id=r.task_id(+)  and e.object_owner = user;


    -- Adjust TBS_PERCENT_FREE, TBS_PERCENT_USED if you need to in order to get the evaluation of the policy to true,
    -- and get the corresponding storage tiering job triggered.
    -- You may need to execute these as SYS AS DBA user due to Bug 16887946
    -- Tablespace usage threshold paramters in storage tiering
     begin dbms_ilm_admin.customize_ilm(DBMS_ILM_ADMIN.TBS_PERCENT_FREE,30);
       dbms_ilm_admin.customize_ilm(DBMS_ILM_ADMIN.TBS_PERCENT_USED,70);
       end;

     select * from dba_ilmparameters;

    -- Force evaluation of the policy, and execution of ADO task
    DECLARE
    v_executionid number;
    BEGIN
    dbms_ilm.execute_ILM (ILM_SCOPE      => dbms_ilm.SCOPE_SCHEMA,
                          execution_mode => dbms_ilm.ilm_execution_offline,
                          task_id        => v_executionid);
    END;
    /

    --shows ILM task, corresponding job, and its completion status
    select t.task_id, t.task_owner, t.state,e.policy_name, e.object_owner, e.object_name,e.SELECTED_FOR_EXECUTION
           ,r.job_name,r.job_state,r.start_time,r.completion_time,r.statistics
       from dba_ilmtasks t,dba_ilmevaluationdetails e,dba_ilmresults r
       where    t.task_id=e.task_id(+)    and  t.task_id=r.task_id(+)  and e.object_owner = user;

    -- wait for 20 seconds until job completes
    EXEC dbms_lock.sleep(20);

    select t.task_id, t.task_owner, t.state,e.policy_name, e.object_owner, e.object_name,e.SELECTED_FOR_EXECUTION
           ,r.job_name,r.job_state,r.start_time,r.completion_time,r.statistics
       from dba_ilmtasks t,dba_ilmevaluationdetails e,dba_ilmresults r
       where    t.task_id=e.task_id(+)    and  t.task_id=r.task_id(+)  and e.object_owner = user;

    -- shows that the partition has moved to ILMTSDEMO_LOWCOST tablespace
    select tablespace_name, segment_name, segment_type,partition_name from user_segments where partition_name='JAN_1_2007';

    -- A segment level tiering policy is disabled after its first execution.
    select * from user_ILMDATAMOVEMENTPOLICIES;
    select * from user_ilmobjects;  

    spool off
     

    An output of the above is the following:

    SQL> -- Pre-requisites
    SQL> -- conn sys as sysdba
    SQL> 
    SQL> -- heat_map = ON
    SQL> alter system set heat_map = ON;

    System altered.

    SQL> 
    SQL> CREATE TABLESPACE ILM_SOURCE DATAFILE 'ILM_SOURCE.dbf'  SIZE 12m REUSE AUTOEXTEND ON NEXT 2m MAXSIZE 1024M EXTENT MANAGEMENT LOCAL;

    Tablespace created.

    SQL> CREATE TABLESPACE ILMTSDEMO_LOWCOST DATAFILE 'ILMTSDEMO_LOWCOST.dbf'  SIZE 50m REUSE AUTOEXTEND ON NEXT 5m MAXSIZE 1024M EXTENT MANAGEMENT LOCAL;

    Tablespace created.

    SQL> 
    SQL> 
    SQL> -- Create table and partition JAN_1_2007 in the ILM_SOURCE tablspace and load rows into it

    SQL> CREATE TABLE ILM_DEMO
      2  (
      3    ILM_TRD_EFF_DT         DATE             NOT NULL,
      4    ILM_ADT_TIMESTAMP     TIMESTAMP(6)         DEFAULT (SYSDATE)           NOT NULL,
      5    ILM_BIN_NO         VARCHAR2(20 BYTE)   DEFAULT ' '           NOT NULL,
      6    ILM_NETWRK_LEVEL      VARCHAR2(2 BYTE)    DEFAULT ' '           NOT NULL
      7  )
      8  PARTITION BY RANGE (ILM_TRD_EFF_DT)
      9  (
     10    PARTITION JAN_1_2007 VALUES LESS THAN (TO_DATE(' 2007-01-16 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
     11       NOCOMPRESS TABLESPACE ILM_SOURCE,
     12    PARTITION ILM_DEMO_PART_20140430 VALUES LESS THAN (TO_DATE(' 2014-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
     13       NOCOMPRESS   ,
     14    PARTITION ILM_DEMO_PART_20140515 VALUES LESS THAN (TO_DATE(' 2014-05-16 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
     15       NOCOMPRESS
     16           );

    Table created.

    SQL> 
    SQL> -- Insert rows into partition JAN_1_2007
    SQL> begin
      2   FOR j in 1..80000 LOOP
      3      insert into ILM_DEMO (ILM_TRD_EFF_DT) values (TO_DATE(' 2007-01-10 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')+1/j);
      4    end loop;
      5  commit;
      6  end;
      7  /

    PL/SQL procedure successfully completed.

    SQL> 
    SQL> -- Collects stats on the table, so that user_tab_partitions return accurate values
    SQL> exec DBMS_STATS.GATHER_TABLE_STATS(ownname => user, tabname => 'ILM_DEMO', granularity => 'ALL', cascade => DBMS_STATS.AUTO_CASCADE,  method_opt => 'FOR ALL COLUMNS SIZE AUTO', estimate_percent => NULL);

    PL/SQL procedure successfully completed.

    SQL> 
    SQL> select table_name , PARTITION_NAME , TABLESPACE_NAME , to_char(LAST_ANALYZED,'MM/DD/YYYY HH24:MI') as "Last Analyzed" , NUM_ROWS  , BLOCKS from user_tab_partitions where table_name='ILM_DEMO' order by table_name ,partition_position;

    TABLE_NAME           PARTITION_NAME            TABLESPACE_NAME                Last Analyzed          NUM_ROWS     BLOCKS                                                                                                                                                                                    
    -------------------- ------------------------- ------------------------------ -------------------- ---------- ----------                                                                                                                                                                                    
    ILM_DEMO             JAN_1_2007                ILM_SOURCE                     01/31/2015 12:59          80000       1006                                                                                                                                                                                    
    ILM_DEMO             ILM_DEMO_PART_20140430    SYSTEM                         01/31/2015 12:59              0          0                                                                                                                                                                                    
    ILM_DEMO             ILM_DEMO_PART_20140515    SYSTEM                         01/31/2015 12:59              0          0                                                                                                                                                                                    

    SQL> 
    SQL> select tablespace_name, segment_name, segment_type,partition_name from user_segments where partition_name='JAN_1_2007';

    TABLESPACE_NAME                SEGMENT_NAME                   SEGMENT_TYPE       PARTITION_NAME                                                                                                                                                                                                             
    ------------------------------ ------------------------------ ------------------ -------------------------                                                                                                                                                                                                  
    ILM_SOURCE                     ILM_DEMO                       TABLE PARTITION    JAN_1_2007                                                                                                                                                                                                                 

    SQL> 
    SQL> -- Query space in the ILM_SOURCE tablespace
    SQL> -- Note % Free and % Used values.
    SQL> -- We will come back to this later at the storage tiering policy
    SQL> 
    SQL> SELECT /* + RULE */ df.tablespace_name "Tablespace",
      2  df.bytes / (1024 * 1024) "Size (MB)",
      3  SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
      4  Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
      5  Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"
      6  FROM dba_free_space fs,
      7  (SELECT tablespace_name,SUM(bytes) bytes
      8  FROM dba_data_files
      9  GROUP BY tablespace_name) df
     10  WHERE fs.tablespace_name (+) = df.tablespace_name and df.tablespace_name ='ILM_SOURCE'
     11  GROUP BY df.tablespace_name,df.bytes
     12  Order by 4;

    Tablespace                      Size (MB)  Free (MB)     % Free     % Used                                                                                                                                                                                                                                  
    ------------------------------ ---------- ---------- ---------- ----------                                                                                                                                                                                                                                  
    ILM_SOURCE                             12          3         25         75                                                                                                                                                                                                                                  

    SQL> 
    SQL> 
    SQL> -- Create a storage tiering policy on PARTITION  JAN_1_2007
    SQL> -- Note the decision to move segment depends on the default thresholds (see dba_ilmparameters for current values).
    SQL> 
    SQL> ALTER TABLE ILM_DEMO MODIFY PARTITION  JAN_1_2007 ILM ADD POLICY TIER TO ILMTSDEMO_LOWCOST;

    Table altered.

    SQL> 
    SQL> --info on policy
    SQL> select * from dba_ilmparameters;

    NAME                                VALUE                                                                                                                                                                                                                                                                   
    ------------------------------ ----------                                                                                                                                                                                                                                                                   
    ENABLED                                 1                                                                                                                                                                                                                                                                   
    RETENTION TIME                         30                                                                                                                                                                                                                                                                   
    JOB LIMIT                               2                                                                                                                                                                                                                                                                   
    EXECUTION MODE                          2                                                                                                                                                                                                                                                                   
    EXECUTION INTERVAL                     15                                                                                                                                                                                                                                                                   
    TBS PERCENT USED                       85                                                                                                                                                                                                                                                                   
    TBS PERCENT FREE                       25                                                                                                                                                                                                                                                                   
    POLICY TIME                             0                                                                                                                                                                                                                                                                   

    8 rows selected.

    SQL> select * from user_ILMDATAMOVEMENTPOLICIES;

    POLICY_NAME ACTION_TYPE SCOPE   COMPRESSION_LEVEL              TIER_TABLESPACE      TIER_STATUS          CONDITION_TYPE         CONDITION_DAYS CUSTOM_FUNCTION                                                                                                                                              
    ----------- ----------- ------- ------------------------------ -------------------- -------------------- ---------------------- -------------- --------------------                                                                                                                                         
    P382        STORAGE     SEGMENT                                ILMTSDEMO_LOWCOST                                                             0                                                                                                                                                              

    SQL> select * from user_ilmobjects;

    POLICY_NAME OBJECT_OWN OBJECT_NAME          SUBOBJECT_NAME          OBJECT_TYPE          INHERITED_FROM       ENABLED DEL                                                                                                                                                                                   
    ----------- ---------- -------------------- ----------------------- -------------------- -------------------- ------- ---                                                                                                                                                                                   
    P382        SYS        ILM_DEMO             JAN_1_2007              TABLE PARTITION      POLICY NOT INHERITED YES     NO                                                                                                                                                                                    

    SQL> select * from user_ilmpolicies;

    POLICY_NAME POLICY_TYPE   TABLESPACE                     ENABLED DELETED                                                                                                                                                                                                                                    
    ----------- ------------- ------------------------------ ------- -------                                                                                                                                                                                                                                    
    P382        DATA MOVEMENT                                YES     NO                                                                                                                                                                                                                                         

    SQL> 
    SQL> -- Force evaluation of the policy, and execution of ADO task
    SQL> -- for this demo we cannot wait for the maintenance window to open and trigger the ADO policies jobs.
    SQL> -- Instead, we are going to use the following PL/SQL block and trigger it.
    SQL> DECLARE
      2  v_executionid number;
      3  BEGIN
      4  dbms_ilm.execute_ILM (ILM_SCOPE      => dbms_ilm.SCOPE_SCHEMA,
      5                 execution_mode => dbms_ilm.ilm_execution_offline,
      6                 task_id      => v_executionid);
      7  END;
      8  /

    PL/SQL procedure successfully completed.

    SQL> 
    SQL> -- shows that the partition has NOT moved to ILMTSDEMO_LOWCOST tablespace
    SQL> select tablespace_name, segment_name, segment_type,partition_name from user_segments where partition_name='JAN_1_2007';

    TABLESPACE_NAME                SEGMENT_NAME                   SEGMENT_TYPE       PARTITION_NAME                                                                                                                                                                                                             
    ------------------------------ ------------------------------ ------------------ -------------------------                                                                                                                                                                                                  
    ILM_SOURCE                     ILM_DEMO                       TABLE PARTITION    JAN_1_2007                                                                                                                                                                                                                 

    SQL> 
    SQL> --shows ILM task, and that corresponding job has not been created
    SQL> -- because during policy evaluation PRECONDITION NOT SATISFIED
    SQL> select t.task_id, t.task_owner, t.state,e.policy_name, e.object_owner, e.object_name,e.SELECTED_FOR_EXECUTION
      2          ,r.job_name,r.job_state,r.start_time,r.completion_time,r.statistics
      3      from dba_ilmtasks t,dba_ilmevaluationdetails e,dba_ilmresults r
      4      where     t.task_id=e.task_id(+)    and    t.task_id=r.task_id(+)    and e.object_owner = user;

       TASK_ID TASK_OWNER           STATE     POLICY_NAME OBJECT_OWN OBJECT_NAME          SELECTED_FOR_EXECUTION                     JOB_NAME             JOB_STATE                           START_TIME                     COMPLETION_TIME                STATISTICS                                          
    ---------- -------------------- --------- ----------- ---------- -------------------- ------------------------------------------ -------------------- ----------------------------------- ------------------------------ ------------------------------ ------------------------------                      
           483 SYS                  COMPLETED P382        SYS        ILM_DEMO             PRECONDITION NOT SATISFIED                                                                                                                                                                                            

    SQL> 
    SQL> 
    SQL> -- Adjust TBS_PERCENT_FREE, TBS_PERCENT_USED if you need to in order to get the evaluation of the policy to true,
    SQL> -- and get the corresponding storage tiering job triggered.
    SQL> -- You may need to execute these as SYS AS DBA user due to Bug 16887946
    SQL> -- Tablespace usage threshold paramters in storage tiering
    SQL>  EXEC dbms_ilm_admin.customize_ilm(DBMS_ILM_ADMIN.TBS_PERCENT_FREE,30);

    PL/SQL procedure successfully completed.

    SQL>  EXEC dbms_ilm_admin.customize_ilm(DBMS_ILM_ADMIN.TBS_PERCENT_USED,70);

    PL/SQL procedure successfully completed.

    SQL> 
    SQL>  select * from dba_ilmparameters;

    NAME                                VALUE                                                                                                                                                                                                                                                                   
    ------------------------------ ----------                                                                                                                                                                                                                                                                   
    ENABLED                                 1                                                                                                                                                                                                                                                                   
    RETENTION TIME                         30                                                                                                                                                                                                                                                                   
    JOB LIMIT                               2                                                                                                                                                                                                                                                                   
    EXECUTION MODE                          2                                                                                                                                                                                                                                                                   
    EXECUTION INTERVAL                     15                                                                                                                                                                                                                                                                   
    TBS PERCENT USED                       70                                                                                                                                                                                                                                                                   
    TBS PERCENT FREE                       30                                                                                                                                                                                                                                                                   
    POLICY TIME                             0                                                                                                                                                                                                                                                                   

    8 rows selected.

    SQL> 
    SQL> -- Force evaluation of the policy, and execution of ADO task
    SQL> DECLARE
      2  v_executionid number;
      3  BEGIN
      4  dbms_ilm.execute_ILM (ILM_SCOPE      => dbms_ilm.SCOPE_SCHEMA,
      5                 execution_mode => dbms_ilm.ilm_execution_offline,
      6                 task_id      => v_executionid);
      7  END;
      8  /

    PL/SQL procedure successfully completed.

    SQL> 
    SQL> --shows ILM task, corresponding job, and its completion status
    SQL> select t.task_id, t.task_owner, t.state,e.policy_name, e.object_owner, e.object_name,e.SELECTED_FOR_EXECUTION
      2          ,r.job_name,r.job_state,r.start_time,r.completion_time,r.statistics
      3      from dba_ilmtasks t,dba_ilmevaluationdetails e,dba_ilmresults r
      4      where     t.task_id=e.task_id(+)    and    t.task_id=r.task_id(+)    and e.object_owner = user;

       TASK_ID TASK_OWNER           STATE     POLICY_NAME OBJECT_OWN OBJECT_NAME          SELECTED_FOR_EXECUTION                     JOB_NAME             JOB_STATE                           START_TIME                     COMPLETION_TIME                STATISTICS                                          
    ---------- -------------------- --------- ----------- ---------- -------------------- ------------------------------------------ -------------------- ----------------------------------- ------------------------------ ------------------------------ ------------------------------                      
           484 SYS                  ACTIVE    P382        SYS        ILM_DEMO             SELECTED FOR EXECUTION                     ILMJOB17892          JOB CREATED                                                                                                                                           
           483 SYS                  COMPLETED P382        SYS        ILM_DEMO             PRECONDITION NOT SATISFIED                                                                                                                                                                                            

    SQL> 
    SQL> -- wait for 20 seconds until job completes
    SQL> EXEC dbms_lock.sleep(20);

    PL/SQL procedure successfully completed.

    SQL> 
    SQL> select t.task_id, t.task_owner, t.state,e.policy_name, e.object_owner, e.object_name,e.SELECTED_FOR_EXECUTION
      2          ,r.job_name,r.job_state,r.start_time,r.completion_time,r.statistics
      3      from dba_ilmtasks t,dba_ilmevaluationdetails e,dba_ilmresults r
      4      where     t.task_id=e.task_id(+)    and    t.task_id=r.task_id(+)    and e.object_owner = user;

       TASK_ID TASK_OWNER           STATE     POLICY_NAME OBJECT_OWN OBJECT_NAME          SELECTED_FOR_EXECUTION                     JOB_NAME             JOB_STATE                           START_TIME                     COMPLETION_TIME                STATISTICS                                          
    ---------- -------------------- --------- ----------- ---------- -------------------- ------------------------------------------ -------------------- ----------------------------------- ------------------------------ ------------------------------ ------------------------------                      
           484 SYS                  COMPLETED P382        SYS        ILM_DEMO             SELECTED FOR EXECUTION                     ILMJOB17892          COMPLETED SUCCESSFULLY              31-JAN-15 12.59.54.965415 PM   31-JAN-15 12.59.55.064624 PM                                                       
           483 SYS                  COMPLETED P382        SYS        ILM_DEMO             PRECONDITION NOT SATISFIED                                                                                                                                                                                            

    SQL> 
    SQL> -- shows that the partition has moved to ILMTSDEMO_LOWCOST tablespace
    SQL> select tablespace_name, segment_name, segment_type,partition_name from user_segments where partition_name='JAN_1_2007';

    TABLESPACE_NAME                SEGMENT_NAME                   SEGMENT_TYPE       PARTITION_NAME                                                                                                                                                                                                             
    ------------------------------ ------------------------------ ------------------ -------------------------                                                                                                                                                                                                  
    ILMTSDEMO_LOWCOST              ILM_DEMO                       TABLE PARTITION    JAN_1_2007                                                                                                                                                                                                                 

    SQL> 
    SQL> -- A segment level tiering policy is disabled after its first execution.
    SQL> select * from user_ILMDATAMOVEMENTPOLICIES;

    POLICY_NAME ACTION_TYPE SCOPE   COMPRESSION_LEVEL              TIER_TABLESPACE      TIER_STATUS          CONDITION_TYPE         CONDITION_DAYS CUSTOM_FUNCTION                                                                                                                                              
    ----------- ----------- ------- ------------------------------ -------------------- -------------------- ---------------------- -------------- --------------------                                                                                                                                         
    P382        STORAGE     SEGMENT                                ILMTSDEMO_LOWCOST                                                             0                                                                                                                                                              

    SQL> select * from user_ilmobjects;

    POLICY_NAME OBJECT_OWN OBJECT_NAME          SUBOBJECT_NAME          OBJECT_TYPE          INHERITED_FROM       ENABLED DEL                                                                                                                                                                                   
    ----------- ---------- -------------------- ----------------------- -------------------- -------------------- ------- ---                                                                                                                                                                                   
    P382        SYS        ILM_DEMO             JAN_1_2007              TABLE PARTITION      POLICY NOT INHERITED NO      NO                                                                                                                                                                                    

    SQL> 
    SQL> spool off 
     

    Next step:

    Check out Note 1967038.1 Example for ILM ADO Storage Tiering Policy Using Custom PL/SQL Policy Function on Table Partition

  • 相关阅读:
    Error: impossible constraint in ‘asm‘
    青少年CTFmisc-simpleness
    Leetcode148. 排序链表
    让电商运营10倍提效的自动化工具,你get了吗?
    Spark专业术语定义
    Springboot项目多模块打包jar移动到指定目录,docker打jar包构建镜像部署并运行
    网络学习总结
    后台管理-----动态路由1(首页页面与路由映射的创建)
    C语言——贪吃蛇小游戏
    Lombok最新最全解析
  • 原文地址:https://blog.csdn.net/jnrjian/article/details/138012315