甲分区维护操作是一个分区相关的操作,诸如添加,交换,合并,或分裂表的分区。
Oracle数据库为增量统计信息维护提供以下支持:
- 如果分区维护操作触发了统计信息收集,那么数据库可以重用以前与旧段一起删除的概要。
DBMS_STATS可以在未分区的表上创建大纲。概要使数据库能够在分区交换操作中维护增量统计信息,而不必在交换后显式收集分区上的统计信息。
当在表上DBMS_STATS首选项INCREMENTAL设置为true时;
INCREMENTAL_LEVEL首选项控制收集哪些摘要以及何时收集 ,此首选项采用以下值:
TABLE :DBMS_STATS在此表上收集表级概要。您只能设置INCREMENTAL_LEVEL到TABLE在表级别,而不是在架构,数据库,或全球水平。PARTITION(默认) :DBMS_STATS仅在分区表的分区级别收集摘要。
当执行一个分区交换,以具有提要该分区的交换被交换后,设置INCREMENTAL到true和INCREMENTAL_LEVEL到TABLE在表上与分隔交换。
假设条件
本教程假定以下内容:
- 您要
p_sales_01_2010在sales表中加载空分区。 - 您创建一个临时表
t_sales_01_2010,然后填充该表。 - 您希望数据库在分区交换操作中维护增量统计信息,而不必在交换后显式收集分区上的统计信息。
维护增量统计信息作为分区交换操作的一部分:
- 为登台表设置增量统计信息首选项
t_sales_01_2010。例如,运行以下语句:
BEGIN DBMS_STATS.SET_TABLE_PREFS ( ownname => 'sh' , tabname => 't_sales_01_2010' , pname => 'INCREMENTAL' , pvalue => 'true' ); DBMS_STATS.SET_TABLE_PREFS ( ownname => 'sh' , tabname => 't_sales_01_2010' , pname => 'INCREMENTAL_LEVEL' , pvalue => 'table' ); END; - 收集登台表的统计信息
t_sales_01_2010。例如,运行以下PL / SQL代码:
BEGIN DBMS_STATS.GATHER_TABLE_STATS ( ownname => 'SH' , tabname => 'T_SALES_01_2010' ); END; /DBMS_STATS在上收集表级摘要t_sales_01_2010。 - 确保
INCREMENTAL首选项true在sh.sales表中。例如,运行以下PL / SQL代码:
BEGIN DBMS_STATS.SET_TABLE_PREFS ( ownname => 'sh' , tabname => 'sales' , pname => 'INCREMENTAL' , pvalue => 'true' ); END; / - 如果你还没有收集到sh.sales的统计数据与之前
INCREMENTAL设置为true,然后收集分区的统计数据进行交换。例如,运行以下PL / SQL代码:
BEGIN DBMS_STATS.GATHER_TABLE_STATS ( ownname => 'sh' , tabname => 'sales' , pname => 'p_sales_01_2010' , pvalue => granularity=>'partition' ); END; / - 执行分区交换。
例如,使用以下SQL语句:
ALTER TABLE sales EXCHANGE PARTITION p_sales_01_2010 WITH TABLE t_sales_01_2010;交换之后,分区表既有统计信息,又有partitionion的提要
p_sales_01_2010。在之前版本的Oracle数据库12c中,上面的语句交换段数据和统计
p_sales_01_2010用t_sales_01_2010。该数据库未维护未分区表(例如)的概要t_sales_01_2010。要在分区表上收集全局统计信息,您需要重新扫描p_sales_01_2010分区以获得其概要。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




