禁用分区索引的压缩?

时间:2017-08-14 21:42:41

标签: oracle

我正在尝试在数据库中禁用压缩,除了索引级别的分区索引之外,我已经能够执行此操作。

我运行了这些查询:

@media (max-width:767px) {
  #ad201.premiere {
    width: 100%;
    position: fixed;
    bottom: 0;
    left: 0;
    z-index: 99999;
    margin: 0;
    border: 1px solid rgb(232, 232, 232);
    background-color: #fff;
    margin: 0 !important;
  }
}

确保不会从分区级别向下使用压缩,而是查询

ALTER TABLE <table_name> MOVE NOCOMPRESS;

ALTER INDEX <index_name> REBUILD NOCOMPRESS;

ALTER INDEX <index_name> REBUILD PARTITION <partition_name> NOCOMPRESS;

ALTER INDEX <index_name> MODIFY PARTITION <partition_name> NOCOMPRESS;

ALTER INDEX <index_name> REBUILD SUBPARTITION <subpartition_name>;

仍然会返回结果,我不能在这里使用 select * from dba_indexes where compression = 'ENABLED'; ,因为ALTER INDEX ... REBUILD我希望我可以使用类似"ORA-14086: a partitioned index may not be rebuilt as a whole."的内容,但这似乎不起作用

是否有另一种方法可以在索引级别禁用压缩而无需手动重建每个索引?

2 个答案:

答案 0 :(得分:2)

&#34;是否有其他方法可以在索引级别禁用压缩而无需手动重建每个索引?&#34;

尝试更改间隔分区索引的默认压缩时遇到同样的问题。简短的回答是否,不适用于12c数据库。

从(当时)为Oracle工作的人那里得到以下信息。

&#34;开发人员的回应是一些新的分区类型,例如按引用分区,自动分区创建依赖于unparse和继承不适用于压缩和与他们的记忆,因为他们尚未将这些属性添加到解密。 &#34;

https://richardfoote.wordpress.com/2016/12/06/12-2-index-advanced-compression-high-part-i-high-hopes/#comments

答案 1 :(得分:0)

在查看@garymyers在回答中提到的网站后,我在后续页面上注意到每个网页有12.2的数据库参数,这允许您从表中的现有索引继承索引压缩或表空间级别:

SYS@extdev02> alter system set db_index_compression_inheritance=table;
System altered.

请注意,参数的值可以是tablespacetable。这不是一个完美的解决方案,因为它的范围很广;但它可能会照顾到你90%的需求。您仍然需要按分区更改现有索引;这只会影响新的分区索引。

如果需要,可以将麻烦的索引放在单独的表空间中,并将参数设置为表空间。

我尝试在Oracle 12.1中执行此操作并接受了该值,但它没有遵守该设置;将第一个索引添加到具有压缩值的表时,添加其他索引不会继承压缩值。

对于现有分区索引,您可以执行以下操作:

select 'alter index ' || INDEX_OWNER || '.' || index_name ||
       ' rebuild partition ' || PARTITION_NAME || ' NOCOMPRESS ;' 
from dba_ind_partitions 
where index_owner='SCOTT' and index_name='I_SOME_INDEX' 
and compression !='DISABLED';

然后调用上面查询的输出。