Oracle过程中分区交换后的Dbms_Stats.Gatter_Table_Stats



我有一个oracle过程,它将"table1 Partition(P1)"中的所有行插入到table2中。我更新了表2中的一个字段,然后将分区交换回表1:

Alter Table table1 Exchange Partition P1 WITH TABLE table2 Including Indexes Without Validation;

这是有效的。

问题:之后我需要收集表格统计数据吗?代码:

EXECUTE  Dbms_Stats.Gather_Table_Stats (Ownname => 'MySchema', Tabname => 'Table1', Partname 
=> 'P1, Granularity =>  'ALL', Degree => 32);

运行需要很长时间,并且还涉及一些其他问题。

非常感谢,我在谷歌上搜索了一下,找不到确切的答案

  • Steve

Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产版

运行exchange partition时,表的统计信息将变为分区的统计信息,分区的统计数据将变为表的统计数据,即统计信息也会交换。

这里我有一个有三个分区的表,最初所有的统计数据都在那里:

0:admspm@spmdtz> printStats -p location -- (*)
Table_Name|object_Type   |subobject  |last_Analyzed|num_Rows|sample_Size|
-------------------------------------------------------------------------
LOCATION  |Table         |           |06.04. 15:23 |     817|        817|
LOCATION  |TablePartition|PARTITION_1|06.04. 15:23 |     272|        272|
LOCATION  |TablePartition|PARTITION_2|06.04. 15:23 |     272|        272|
LOCATION  |TablePartition|PARTITION_3|06.04. 15:23 |     273|        273|

现在,换出一个分区并将其换回:

0:admspm@spmdtz> create table xxx as select * from location where par_id=3;
Table Xxx created.
0:admspm@spmdtz> alter table location exchange partition partition_3 
                 with table xxx;
Table Location altered.

统计数据都不见了:

0:admspm@spmdtz> printStats -p location
Table_Name|object_Type   |subobject  |last_Analyzed|num_Rows|sample_Size|
-------------------------------------------------------------------------
LOCATION  |Table         |           |06.04. 15:23 |     817|        817|
LOCATION  |TablePartition|PARTITION_1|06.04. 15:23 |     272|        272|
LOCATION  |TablePartition|PARTITION_2|06.04. 15:23 |     272|        272|
LOCATION  |TablePartition|PARTITION_3|             |        |           |

然而,当我分析交换表"XXX"时

0:admspm@spmdtz> stats -gT xxx -- (*)

换回来,我再次得到正确的统计数据

0:admspm@spmdtz> alter table location exchange partition partition_3 
                 with table xxx;
Table Location altered.
0:admspm@spmdtz> printStats -p location
Table_Name|object_Type   |subobject  |last_Analyzed|num_Rows|sample_Size|
-------------------------------------------------------------------------
LOCATION  |Table         |           |06.04. 15:23 |     817|        817|
LOCATION  |TablePartition|PARTITION_1|06.04. 15:23 |     272|        272|
LOCATION  |TablePartition|PARTITION_2|06.04. 15:23 |     272|        272|
LOCATION  |TablePartition|PARTITION_3|02.10. 18:24 |     273|        273|

(*)这些命令由senora工具提供

最新更新