Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 禁用分区索引上的压缩?_Oracle - Fatal编程技术网

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';