写在前面sql
Oracle 12c 能够经过热图和自动数据优化(ADO)实现信息生命周期的管理(ILM),上篇介绍了热图,本篇将对自动数据优化进行展开,经过热图和自动数据优化,最终实现信息生命周期管理。数据库
使用自动数据优化,必须先在系统级别启用热图,经过修改初始化参数heat_map便可,启用热图后,数据库会自动在段上进行热图统计信息的收集,可经过数据字典视图查看热图相关的信息,具体可参考:Oracle 12c Heat Map 热图 。oracle
策略能够在执行create table或alter table时在行、段、表空间级别进行建立,在知足指定的策略时能够进行数据的自动压缩和移动,从而完成数据的归档。app
经过下面的语法结构咱们能够知道如下内容。测试
1)ADO主要在两个层面实现数据的优化,分别为优化
2)压缩的类型lua
3)压缩做用域spa
4)访问模式.net
5)启动时机code
ilm_clause::=
ilm_policy_clause::=
ilm_compression_policy::=
table_compression::=
ilm_tiering_policy::=
ilm_time_period::=
0)查看heat_map初始化参数配置
ALEN@PROD2> show parameter heat_map NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ heat_map string ON
1)建立测试表,能够看出,数据行为259418,表没有被压缩,表占用空间为11534336 BYTES
ALEN@PROD2> create table sales_ado as select * from sales; Table created. ALEN@PROD2> select count(1) from sales_ado; COUNT(1) ---------- 259418 ALEN@PROD2> select t.compression,t.compress_for from user_tables t where t.table_name='SALES_ADO'; COMPRESS COMPRESS_FOR -------- ------------------------------ DISABLED ALEN@PROD2> select t.bytes from user_segments t where t.segment_name='SALES_ADO'; BYTES ---------- 11534336
2)建立策略
ALEN@PROD2> alter table sales_ado ilm add policy row store compress advanced segment after 30 days of no modification; Table altered.
3)查看建立的策略
ALEN@PROD2> col policy_name for a10 ALEN@PROD2> col policy_type for a30 ALEN@PROD2> select policy_name,policy_type,enabled,deleted from user_ilmpolicies; POLICY_NAM POLICY_TYPE ENABLED DELETED ---------- ------------------------------ ------- ------- P102 DATA MOVEMENT YES NO
4)查看策略对象
ALEN@PROD2> col object_owner for a10 ALEN@PROD2> col object_name for a20 ALEN@PROD2> set linesize 200 ALEN@PROD2> select policy_name,object_owner,object_name,object_type,inherited_from,enabled,deleted from user_ilmobjects; POLICY_NAM OBJECT_OWN OBJECT_NAME OBJECT_TYPE INHERITED_FROM ENA DEL ---------- ---------- -------------------- ------------------ -------------------- --- --- P102 ALEN SALES_ADO TABLE POLICY NOT INHERITED YES NO
5)查看热图信息
ALEN@PROD2> select object_name,track_time,segment_write,full_scan,lookup_scan from user_heat_map_seg_histogram where object_name='SALES_ADO'; OBJECT_NAME TRACK_TIME SEG FUL LOO -------------------- ------------------- --- --- --- SALES_ADO 2020-05-26 18:59:53 NO YES NO ALEN@PROD2> select object_name,segment_write_time,segment_read_time,full_scan,lookup_scan from user_heat_map_segment where object_name='SALES_ADO'; OBJECT_NAME SEGMENT_WRITE_TIME SEGMENT_READ_TIME FULL_SCAN LOOKUP_SCAN -------------------- ------------------- ------------------- ------------------- ------------------- SALES_ADO 2020-05-26 19:01:14
6)由于策略是30天内没有修改的话,就启用高级压缩,下面进行模拟,将时间向前推33天
SYS@PROD2> exec dbms_ilm_admin.set_heat_map_table('ALEN','SALES_ADO','',sysdate-33,2); PL/SQL procedure successfully completed.
7)再次查看热图信息,能够看出 2020-04-23以后没有对表作修改
ALEN@PROD2> select object_name,track_time,segment_write,full_scan,lookup_scan from user_heat_map_seg_histogram where object_name='SALES_ADO'; OBJECT_NAME TRACK_TIME SEG FUL LOO -------------------- ------------------- --- --- --- SALES_ADO 2020-05-26 19:06:38 NO YES NO SALES_ADO 2020-04-23 19:06:03 NO NO NO ALEN@PROD2> select object_name,segment_write_time,segment_read_time,full_scan,lookup_scan from user_heat_map_segment where object_name='SALES_ADO'; OBJECT_NAME SEGMENT_WRITE_TIME SEGMENT_READ_TIME FULL_SCAN LOOKUP_SCAN -------------------- ------------------- ------------------- ------------------- ------------------- SALES_ADO 2020-04-23 19:06:03 2020-05-26 19:06:55
8)经过第7步可知,30天内对表没有进行修改操做,那么按照策略,会启用压缩,但策略的执行,须要对应的窗口,或时间间隔,下面进行手工触发策略
ALEN@PROD2> set serveroutput on ALEN@PROD2> declare v_taskid number; begin dbms_ilm.execute_ilm(v_taskid,dbms_ilm.scope_schema,dbms_ilm.ilm_execution_offline); dbms_output.put_line('Task ID is '||v_taskid); end; / Task ID is 63 PL/SQL procedure successfully completed.
9)查看任务的执行状况,能够看出任务执行完成
ALEN@PROD2> select task_id,state,creation_time +0 ct,start_time+0 st,completion_time+0 dt from user_ilmtasks where task_id=63; TASK_ID STATE CT ST DT ---------- --------- ------------------- ------------------- ------------------- 63 COMPLETED 2020-05-26 19:12:44 2020-05-26 19:12:44 2020-05-26 19:12:46 ALEN@PROD2> select task_id,policy_name,object_name,object_type,SELECTED_FOR_EXECUTION,job_name from user_ilmevaluationdetails; TASK_ID POLICY_NAM OBJECT_NAME OBJECT_TYPE SELECTED_FOR_EXECUTION JOB_NAME ---------- ---------- -------------------- ------------------ ---------------------------------------- ---------- 63 P102 SALES_ADO TABLE SELECTED FOR EXECUTION ILMJOB608
10)检查策略执行后,表是否压缩,以及压缩比率
ALEN@PROD2> select t.compression,t.compress_for from user_tables t where t.table_name='SALES_ADO'; COMPRESS COMPRESS_FOR -------- ------------------------------ ENABLED ADVANCED ALEN@PROD2> select t.bytes from user_segments t where t.segment_name='SALES_ADO'; BYTES ---------- 4194304
能够看出,执行策略后,表进行了高级压缩,4194304/11534336 = 0.36 差很少压缩到原来的三分之一。
1)建立表空间,分别用于存放数据以及归档数据
SYS@PROD2> create tablespace ts_data datafile '/u01/app/oracle/oradata/PROD2/ts_data01.dbf' size 13M; Tablespace created. SYS@PROD2> create tablespace ts_low_store datafile '/u01/app/oracle/oradata/PROD2/ts_low01.dbf' size 50M; Tablespace created.
2)建立测试表,表段占用空间为11M,占用ts_data表空间的85%
ALEN@PROD2> create table sales_ts_ado tablespace ts_data as select * from sales; Table created. ALEN@PROD2> select t.compression,t.compress_for,t.tablespace_name from user_tables t where t.table_name='SALES_TS_ADO'; COMPRESS COMPRESS_FOR TABLESPACE_NAME -------- ------------------------------ ------------------------------ DISABLED TS_DATA ALEN@PROD2> select sum(t.bytes)/1024/1024 from user_segments t where t.segment_name='SALES_TS_ADO'; SUM(T.BYTES)/1024/1024 ---------------------- 11
3)策略默认参数是表空间使用百分比TBS PERCENT USED达到85时,会进行数据移动,这里为了实验的目的,修改该值为80
SYS@PROD2> exec dbms_ilm_admin.customize_ilm(8,80); PL/SQL procedure successfully completed.
4)建立存储分层策略,当表空间使用达到80%时,即会进行数据的移动
ALEN@PROD2> alter table sales_ts_ado ilm add policy tier to ts_low_store; Table altered.
5)查看策略
ALEN@PROD2> select policy_name,object_owner,object_name,object_type,inherited_from,enabled,deleted from user_ilmobjects; POLICY_NAM OBJECT_OWN OBJECT_NAME OBJECT_TYPE INHERITED_FROM ENA DEL ---------- ---------- -------------------- ------------------ -------------------- --- --- P102 ALEN SALES_ADO TABLE POLICY NOT INHERITED NO NO P142 ALEN SALES_TS_ADO TABLE POLICY NOT INHERITED YES NO
6)手工触发策略
ALEN@PROD2> declare v_taskid number; begin dbms_ilm.execute_ilm(v_taskid,dbms_ilm.scope_schema,dbms_ilm.ilm_execution_offline); dbms_output.put_line('Task ID is '||v_taskid); end; / Task ID is 84 PL/SQL procedure successfully completed.
7)查看任务执行状况,验证策略执行结果
ALEN@PROD2> select task_id,state,creation_time +0 ct,start_time+0 st,completion_time+0 dt from user_ilmtasks where task_id=84; TASK_ID STATE CT ST DT ---------- --------- ------------------- ------------------- ------------------- 84 COMPLETED 2020-05-26 20:25:19 2020-05-26 20:25:19 2020-05-26 20:25:21 ALEN@PROD2> select t.compression,t.compress_for,t.tablespace_name from user_tables t where t.table_name='SALES_TS_ADO'; COMPRESS COMPRESS_FOR TABLESPACE_NAME -------- ------------------------------ ------------------------------ DISABLED TS_LOW_STORE
能够看到,执行策略后,表段对应的表空间由TS_DATA移到了TS_LOW_STORE,从而自动完成了数据的存储分层移动。
ALEN@PROD2> alter table sales_ado ilm disable policy P102; Table altered. ALEN@PROD2> alter table sales_ado ilm enable policy P102; Table altered.
ALEN@PROD2> alter table sales_ado ilm delete policy P102; Table altered.
1)查看ADO参数
ALEN@PROD2> select * from dba_ilmparameters; NAME VALUE ------------------------------ ---------- ENABLED 1 RETENTION TIME 30 JOB LIMIT 2 EXECUTION MODE 2 EXECUTION INTERVAL 15 TBS PERCENT USED 80 TBS PERCENT FREE 25 POLICY TIME 1 8 rows selected.
2)修改参数,使用dbms_ilm_admin.customize_ilm
ALEN@PROD2> conn / as sysdba Connected. SYS@PROD2> exec dbms_ilm_admin.customize_ilm(parameter =>11 , value => 0); PL/SQL procedure successfully completed.
策略的监控主要经过数据字典视图,分别以下:
1)dba / user_ilmdatamovementpolicies
展现和ILM策略相关的数据移动信息。
2)dba / user_ilmtasks
展现ILM执行的任务信息。
3)dba / user_ilmevaluationdetails
展现ILM任务的评估信息。
4)dba / user_ilmobjects
展现策略和对象信息。
5)dba / user_ilmpolicies
展现策略信息。
6)dba / user_ilmresults
展现数据移动相关的做业信息。
7)dba_ilmparameters
展现ADO相关的参数信息。
以上就是自动数据优化相关的介绍和演示。