Oracle 禁用分区索引上的压缩?
我正在尝试禁用数据库中的压缩,并且我已经能够在索引级别禁用除分区索引之外的所有内容 我已经运行了以下查询:Oracle 禁用分区索引上的压缩?,oracle,Oracle,我正在尝试禁用数据库中的压缩,并且我已经能够在索引级别禁用除分区索引之外的所有内容 我已经运行了以下查询: ALTER TABLE <table_name> MOVE NOCOMPRESS; ALTER INDEX <index_name> REBUILD NOCOMPRESS; ALTER INDEX <index_name> REBUILD PARTITION <partition_name> NOCOMPRESS; ALTER INDE
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>;
仍然返回结果,我不能使用alterindex。。。在这里重建
,因为“ORA-14086:分区索引可能不能作为一个整体重建。”我希望我可以使用类似于的alterindex。。。修改默认属性NOCOMPRESS'
,但这似乎不起作用
是否有其他方法可以在索引级别禁用压缩而不手动重建每个索引?“是否有其他方法可以在索引级别禁用压缩而不手动重建每个索引?” 在尝试更改间隔分区索引的默认压缩时遇到了相同的问题。简短的回答是否定的,不是12c数据库 从(当时)为甲骨文工作的人那里得到以下信息 “开发人员的反应是,一些新的分区类型,如引用分区,自动分区创建依赖于unpasse,继承不适用于压缩和内存,因为他们尚未将这些属性添加到unpasse。 "
看了@garymyers在回答中提到的网站后,我在一个后续页面上注意到,每个网页都有一个12.2版本的数据库参数,它允许您在表或表空间级别从现有索引继承索引压缩:
SYS@extdev02> alter system set db_index_compression_inheritance=table;
System altered.
请注意,参数的值可以是表空间
或表
。这不是一个完美的解决方案,因为它的范围相当广泛;但它可以满足你90%的需求。但是,您仍然需要逐个分区更改现有索引;这只会影响新的分区索引
如果需要,可以将麻烦的索引放在单独的表空间中,并将参数设置为tablespace
我在Oracle12.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';
然后调用上述查询的输出。这是个糟糕的消息,但感谢您的确认。几个星期以来,我一直在努力寻找一个明确的答案。看来我还有一点工作要做!
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';