赞
踩
1. 概念
ILM(Information lifecycle management)这个概念诞生于上世纪60-70年代,由StorageTek(2010年被Oracle收购) 提出,EMC推广,是指从一个信息系统数据及其相关元数据产生和初始存储阶段到最后过时被删除时的一套综合管理方法。
可以根据各项数据标准(常用性、重要性等)自动把数据归到各层,并且自动完成数据在各层之间的移动。
2. 产生背景
1. 12c前的实现方法
① 实现步骤
Data Retention(数据保留,保证某些数据未被删除 -- 用户权限限制)
Immutability(不变性,保证某些数据未被修改过 -- 证书与数字签名)
Privacy(数据隐私 -- VPD、数据加密)
Auditing(标准审计、细粒度审计)
Expiration(数据过期 -- 移动到归档数据库、数据删除)
② 缺点
③ 实现测试
- 创建表空间
- CREATE TABLESPACE ILM_HIGH_COST
- DATAFILE '/data/ilm_high_cost.dbf' SIZE 1G
- AUTOEXTEND ON NEXT 1G MAXSIZE 30G;
-
- CREATE TABLESPACE ILM_LOW_COST
- DATAFILE '/data/ilm_low_cost.dbf' SIZE 1G
- AUTOEXTEND ON NEXT 10G MAXSIZE 30G;
-
- 创建测试用户并授权
- create user ilmtest identified by ilmtest default TABLESPACE ILM_HIGH_COST;
- grant connect,resource to ilmtest;
-
- ALTER USER ilmtest QUOTA UNLIMITED ON ILM_HIGH_COST;
- ALTER USER ilmtest QUOTA UNLIMITED ON ILM_LOW_COST;
-
-
- 建分区表
- CREATE TABLE ilmtest.ilm_table
- ( ID VARCHAR2(120) primary key,
- time NUMBER(18,0)
- ) partition by range(time)
- interval (86400000) --一天
- (
- partition p_day_1 values less than (1535731200000) --2018-09-01 00:00:00
- );
-
- 建索引
- CREATE INDEX ilmtest.ilm_table_N2 ON ilmtest.ilm_table(time);
-
- 导入测试数据
-
-
- 查看分区情况
- select table_name,partition_name from dba_tab_partitions where table_name='ILM_TABLE';
-
- 手动移动分区,注意11g会锁表,move后索引会失效
- ALTER TABLE ilmtest.ilm_table MOVE PARTITION SYS_P929 TABLESPACE ilm_low_cost COMPRESS;
-
- 创建存储过程及job定期移动分区
- 略
2. 12c实现方法
① 12c的改进
② 热图
用于追踪Oracle DB数据访问(段级)及修改情况(行级和段级)
特点:
ALTER SYSTEM SET HEAT_MAP = ON;
启用后数据访问情况将被追踪(system及sysaux中对象除外),启/禁用热图同时会启/禁用ADO
跟踪数据段数据查询及修改时间
跟踪数据块修改时间
区分索引lookup访问及全表扫描访问
自动排除维护任务访问:统计信息收集、DDL、备份、表重定义等
对象级无成本
块级成本<< 5%
相关视图:
V$HEAT_MAP_SEGMENT – 展示实时段访问信息
ALL_,DBA_, USER_HEAT_MAP_SEGMENT – 展示最近段访问信息(V$视图每小时写入一次)
ALL_, DBA_,USER_HEAT_MAP_SEG_HISTOGRAM – 展示段访问信息
DBA_HEATMAP_TOP_OBJECTS – 展示最活跃对象
DBA_HEATMAP_TOP_TABLESPACES – 展示最活跃表空间
DBMS_HEAT_MAP包提供更为灵活的信息展示,支持查看块、区、段、对象、表空间级热图信息,ADO用其过滤“热”块
- SELECT * FROM TABLE(DBMS_HEAT_MAP.BLOCK_HEAT_MAP('SH','SALES')) WHERE ROWNUM < 10;
-
- SELECT SUBSTR(tablespace_name,1,16) Tblspace, min_writetime, min_ftstime
- FROM TABLE(DBMS_HEAT_MAP.TABLESPACE_HEAT_MAP('EXAMPLE'));
-
- SELECT relative_fno, block_id, blocks, TO_CHAR(min_writetime, 'mm-dd-yy hh-mi-ss') Mintime,
- TO_CHAR(max_writetime, 'mm-dd-yy hh-mi-ss') Maxtime,
- TO_CHAR(avg_writetime, 'mm-dd-yy hh-mi-ss') Avgtime
- FROM TABLE(DBMS_HEAT_MAP.EXTENT_HEAT_MAP('SH','SALES')) WHERE ROWNUM < 10;
-
- SELECT SUBSTR(owner,1,10) Owner, SUBSTR(segment_name,1,10) Segment,
- SUBSTR(partition_name,1,16) Partition, SUBSTR(tablespace_name,1,16) Tblspace,
- segment_type, segment_size FROM TABLE(DBMS_HEAT_MAP.OBJECT_HEAT_MAP('SH','SALES'));
③ 自动数据优化 ADO
ADO根据热图收集的信息,按照用户定义的策略自动压缩和在不同层级存储间移动数据
ADO 策略
压缩策略
- create table t1 (C1 number, C2 varchar2(9)) partition by list(C2)
- (partition p1 values(‘clerk’, ‘salesman’) ilm add policy column
- store compress for archive high segment after 3 months of creation);
-
- ALTER TABLE sales MODIFY PARTITION sales_q1_2002
- ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW
- AFTER 30 DAYS OF NO MODIFICATION;
存储层策略
默认按表空间使用率(85%,25%)移动
- ALTER TABLE sales MODIFY PARTITION sales_q1_1999
- ILM ADD POLICY TIER TO my_low_cost_sales_tablespace;
图中设置TBS_PERCENT_FREE=55
自定义表空间使用率达到多少时移动
- BEGIN
- DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.TBS_PERCENT_USED, 85):
- DBMS_ILM_ADMIN.CUSTOMIZE_ILM(DBMS_ILM_ADMIN.TBS_PERCENT_FREE, 25):
- END;
在上例中,当表空间达到用户定义的阈值 (85%) 时,数据库会自动将表空间中的极冷表/分区移至目标表空间(注意不会检查目标表空间剩余存储空间),直到表空间配额至少有25%的可用百分比。
可定义按函数策略移动(表空间级不支持)
- CREATE OR REPLACE FUNCTION NOT_MODIFIED_CUSTOM (objn IN NUMBER) RETURN BOOLEAN
- IS
- days number:=0;
- begin
- select max(sysdate - SEGMENT_WRITE_TIME) into days from user_heat_map_segment where subobject_name = (select subobject_name from user_objects where object_id=objn);
- -- For DEBUG purposes only
- -- insert into ado_table select object_id,object_name,subobject_name,days, sysdate from user_objects where object_id=objn;
- -- commit;
- if (days>1) then return true; else return false; end if;
- end;
- /
-
-
- ALTER TABLE t MODIFY PARTITION P1 ILM ADD POLICY TIER TO ILM_LOW_COST ON NOT_MODIFIED_CUSTOM;
执行原理图
由于HEAP MAP在内存中的数据每一小时才写入到磁盘上,所以查看DBA_HEAT_MAP_SEGMENT一般是有延迟的。 实际数据存放在HEAT_MAP_STAT$字典基表上
3. 12.2新特性
① ADO支持In-Memory存储
ALTER TABLE sales_2015 ILM ADD POLICY NO INMEMORY AFTER 7 DAYS OF NO ACCESS;
② ADO和heat map支持多租户架构,可在PDB中单独设置
③ ADO支持按时间条件指定tier策略(但表空间必须为只读)
ALTER TABLE invoices MODIFY PARTITION invoices_2016_q4 ILM ADD POLICY TIER TO slow_storage_ts READ ONLY SEGMENT AFTER 6 MONTHS OF NO ACCESS;
4. 禁用和删除ILM ADO 策略
- /* You can disable or delete an ADO policy in a table with the following */
- ALTER TABLE sales_ado ILM DISABLE POLICY P1;
- ALTER TABLE sales_ado ILM DELETE POLICY P1;
-
- /* You can disable or delete all ADO policies in a table with the following */
- ALTER TABLE sales_ado ILM DISABLE_ALL;
- ALTER TABLE sales_ado ILM DELETE_ALL;
-
- /* You can disable or delete an ADO policy in a partition with the following */
- ALTER TABLE sales MODIFY PARTITION sales_q1_2002 ILM DISABLE POLICY P2;
- ALTER TABLE sales MODIFY PARTITION sales_q1_2002 ILM DELETE POLICY P2;
-
- /* You can disable or delete all ADO policies in a partition with the following */
- ALTER TABLE sales MODIFY PARTITION sales_q1_2000 ILM DISABLE_all;
- ALTER TABLE sales MODIFY PARTITION sales_q1_2000 ILM DELETE_ALL;
5. ADO的增强
立即执行ADO策略(默认会在维护窗口执行)
- declare
- v_executionid number;
- begin
- dbms_ilm.execute_ILM (ILM_SCOPE => dbms_ilm.SCOPE_SCHEMA,
- execution_mode => dbms_ilm.ilm_execution_online,
- task_id => v_executionid);
- end;
- /
6. ADO相关视图
• (USER/DBA)_ILMPOLICIES – 查看ADO 策略及状态
• (USER/DBA)_ILMDATAMOVEMENTPOLICIES – ADO 策略细节
• (USER/DBA)_ILMOBJECTS – 策略、对象、继承信息和状态
• (USER/DBA)_ILMEVALUATION_DETAILS -- 策略评估结果记录
• (USER/DBA)_ILMTASKS – 任务及状态,每个task ID跟踪一个ADO评估/执行实例
• (USER/DBA)_ILMEVALUATIONDETAILS – 每个task的评估细节
• (USER/DBA)_ILMRESULTS – ADO job状态及结果
• (USER/DBA)_ILMPARAMETERS -- ILM相关参数
7. 使用限制
12.1 - 19c Oracle分区表的新特性_Hehuyi_In的博客-CSDN博客_dbms_part
参考:
19c及11g官方文档 vldb-and-partitioning-guide
https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/ilm/ilm_tiering/ilm_tiering.html
Example for ILM ADO Storage Tiering Policy on Table Partition (文档 ID 1966394.1)
Example for ILM ADO Storage Tiering Policy Using Custom PL/SQL Policy Function on Table Partition (文档 ID 1967038.1)
【Oracle Database 12c新特性】Information Lifecycle Management ILM和Storage Enhancements
《partitioning-wp-12c-1896137》
《NoCOUG_201505_Kanagaraj_ILM》
《NoCOUG_201805_Lakshmanan_ADO》
《ilm-on-oracle11g-1-129053》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。