20C 在自动化方面又进了一步,20C 推出自动索引优化,接下来请来介绍:
使用自动数据优化
要实施ILM策略,可以使用自动数据优化(ADO)来自动在数据库中不同存储层之间压缩和移动数据。
该功能包括创建为每个层指定不同压缩级别的策略以及控制何时进行数据移动的功能。
要使用自动数据优化,必须在系统级别启用热图。您可以使用HEAT_MAP初始化参数启用此功能。有关设置HEAT_MAP初始化参数的信息,
启用热图
您可以使用子句的ALTER SYSTEMor ALTER SESSION语句在系统或会话级别启用和禁用热图跟踪HEAT_MAP。
例如,以下SQL语句启用数据库实例的热图跟踪。
ALTER SYSTEM SET HEAT_MAP = ON;
管理自动数据优化策略
使用SQL语句创建和更改表时,可以在行,段和表空间粒度级别上为ADO指定策略。另外,ADO策略可以对索引执行操作。
通过为ADO指定策略,可以自动在数据库中不同存储层之间进行数据移动。这些策略还使您可以为每个层指定不同的压缩级别,控制何时进行数据移动以及优化索引。
表的ADO策略
SQL CREATE和ALTER TABLE语句的ILM子句使您可以创建,删除,启用或禁用ADO策略。ILM策略子句确定压缩或存储分层策略,并包含其他子句,例如AFTER和ON子句,用于指定应采取策略操作的条件。创建表时,可以为ADO添加新策略。您可以更改表以添加更多策略,或者启用,禁用或删除现有策略。您可以将策略添加到整个表或表的分区。AFTER将ADO策略添加到表或表分区时,只能为子句指定一种条件类型。ILM ADO策略具有系统生成的名称,例如P1,P2等等。Pn。
段级别策略仅执行一次。策略成功执行后,将被禁用并且不会再次评估。但是,您可以再次明确启用该策略。行级策略将继续执行,并且在成功执行后不会被禁用。
一个ADO政策的范围可以为一组相关的对象或在一个段或行的水平来指定,使用的关键字GROUP,ROW或SEGMENT。
可以应用于组策略的默认压缩映射为:
COMPRESS ADVANCED堆表上的索引映射到索引和LOW LOB段的标准压缩。
COMPRESS FOR QUERY LOW QUERY HIGH堆表上的/ 映射到索引和MEDIUMLOB段的标准压缩。
COMPRESS FOR ARCHIVE LOWARCHIVE HIGH堆表上的/ 映射到索引和HIGHLOB段的标准压缩。
压缩映射无法更改。GROUP只能应用于细分级别的政策。存储分层策略仅适用于段级别,而不能在行级别指定。
ADO索引策略
索引的ADO策略使用现有的自动数据优化(ADO)框架启用索引的压缩和优化。
您可以使用ALTER INDEX或CREATE INDEXSQL语句的ILM子句添加ADO索引策略。ADO索引策略具有系统生成的名称,例如P1,P2,… P nn。
例如,您可以在创建索引时添加ADO策略。
CREATE TABLE product_sales
(PRODUCT_ID NUMBER NOT NULL,
CUSTOMER_ID NUMBER NOT NULL,
TIME_ID DATE NOT NULL,
CHANNEL_ID NUMBER NOT NULL,
PROMO_ID NUMBER,
QUANTITY_SOLD NUMBER(10,2) NOT NULL);
CREATE INDEX prod_id_idx ON product_sales(product_id) ILM ADD POLICY OPTIMIZE AFTER 7 DAYS OF NO MODIFICATION;
SELECT POLICY_NAME, POLICY_TYPE, ENABLED FROM USER_ILMPOLICIES;
POLICY_NAME POLICY_TYPE ENA
--------------------- ------------- ---
P21 DATA MOVEMENT YES
您可以将ADO策略添加到现有索引。
ALTER INDEX hr.emp_id_idx ILM ADD POLICY SEGMENT TIER TO LOW_COST_TBS;
ALTER INDEX hr.emp_id_idx ILM ADD POLICY OPTIMIZE AFTER 3 DAYS OF NO ACCESS;
该OPTIMIZE子句使ADO可以在满足策略条件时优化索引。优化过程包括压缩,收缩或重建索引之类的操作。
compress:压缩索引段中的部分键值
shrink:在可能的情况下合并索引块的内容以释放块以供重用
rebuild:重建索引以提高空间利用率和访问速度
OPTIMIZE指定该子句后,Oracle会自动确定哪个操作最适合索引,并在优化过程中实施该操作。您不必指定要执行的操作。
在管理索引的ADO策略时,不能手动禁用策略。索引的ADO策略仅执行一次。策略成功执行后,该策略将被禁用并且不会再次评估。
您可以使用ALTER INDEX SQL语句的ILM子句一次删除一个策略。例如:
ALTER INDEX prod_id_idx ILM DELETE POLICY p21;
不支持在索引分区级别修改ILM ADO策略。在索引级别修改的ADO策略被级联到所有分区。




