ORACLE 数据归档之三

本文详细介绍了在Oracle数据库中压缩数据表、分区、索引的步骤,包括查看大表、检查索引、压缩表和分区、压缩索引及重建索引的操作。在压缩过程中需要注意表的类型限制以及对DML操作的影响,以及如何维护索引的可用性。
摘要由CSDN通过智能技术生成

Oracle 数据压缩(Compression)步骤(转载)


本文只是叙述运维中压缩表的步骤,具体原理请自行查阅相关文档,不足之处敬请指正。

--1.查看某个用户下最大的30个表
SELECT *
  FROM (SELECT OWNER, SEGMENT_NAME,SEGMENT_TYPE, partition_name,tablespace_name,BYTES / 1024 / 1024 / 1024 AS GB
          FROM DBA_SEGMENTS
         WHERE OWNER = 'user'
         ORDER BY BYTES DESC)
 WHERE ROWNUM <= 30;

--2.检查索引和分区
SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE,partition_name,tablespace_name,BYTES / 1024 / 1024 / 1024 AS GB
          FROM DBA_SEGMENTS
         WHERE OWNER = 'user'
         AND tablespace_name='tbs_name'
         and SEGMENT_NAME='table_name'
         ORDER BY BYTES DESC;
SELECT INDEX_NAME,TABLE_OWNER,TABLE_NAME,COMPRESSION FROM USER_INDEXES WHERE TABLE_NAME='table_name' ;

--3.压缩数据表
ALTER TABLE table_name MOVE COMPRESS FOR OLTP PARALLEL 8;
该方法支持表以后的DML的压缩,同时也会已经存在的数据进行压缩,但是在move 期间会对表加上exclusive(X)锁,其他的DML 操作会被block。使用并行来执行ALTER TABLE MOVE 会增加操作的效率。
MOVE操作会导致分区或者表上的所有失效,需要操作结束后rebuild 索引,或者在执行MOVE操作时加上UPDATE INDEXES,来维护索引。
注意:
OLTP Table Compression 不支持超过255个字段的表,或者表里有LONG 类型的字段。

--4.压缩分区表
分区表是不能整表做MOVE COMPRESS操作的,需要一个分区一个分区的做。
分区表整表压缩会报错:
SQL> ALTER TABLE table_name MOVE COMPRESS FOR OLTP ;
ALTER TABLE table_name MOVE COMPRESS FOR OLTP
            *
ERROR AT LINE 1:
ORA-14511: CANNOT PERFORM OPERATION ON A PARTITIONED OBJECT

可以单个分区做MOVE COMPRESS操作,做MOVE COMPRESS后因ROWID发生了改变,需要把索引REBUILD一下。

ALTER TABLE table_name MOVE PARTITION table_part COMPRESS FOR OLTP PARALLEL 8;


--5.压缩索引
ALTER INDEX index_name REBUILD COMPRESS ;

--6.重建索引
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='table_name' ; //查看一下索引的状态
SELECT INDEX_NAME,PARTITION_NAME,STATUS FROM USER_IND_PARTITIONS WHERE STATUS='UNUSABLE';
REBUILD一下UNUSABLE状态的索引
ALTER INDEX index_name REBUILD PARTITION index_part;

 

相关参考:

https://blog.csdn.net/tianlesoftware/article/details/8170488

https://blog.csdn.net/fenglin20115588/article/details/51862446

原文链接:https://blog.csdn.net/swordlb/article/details/113104609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值