技术点小贴士
1.压缩表不支持在线shrink操作。
2.表压缩技术不适合于11g的新大对象技术SecureFiles。因为SecureFiles采用自己的压缩技术
3.当表采用BASIC压缩算法后,表的PCTFREE菜蔬自动设置为0
4.使用COMPRESS FOR OLTP或COMPRESS BASIC 方式,表的字段数量不能超过255个。虽然可以设置成功,但数据实际上是没有压缩的。
5.IOT表不可以压缩。
压缩技术分类
1.Basic Compression适用于数据仓库
2.OLTP Compression既适合交易系统也适合数据仓库
3.Warehouse Compression (Hybrid Columnar Compression)采用11g新混合列压缩技术,适合于数据仓库
4.Online Archival Compression(Hybrid Columnar Compression)采用11g新混合列压缩技术,与Warehouse Compression不同的是,其压缩比最高,但CPU开销最大,甚至影响查询操作,因此适用于数据访问很少的数据归档系统。
创建压缩表
1.普通压缩表
CREATE TABLE sales_history ... COMPRESS;
如下语句通过Direct-Path INSERT操作,向sales_history表以压缩形式写数据
Insert /*+APPEND */ into sales_history select * from sales where cust_id=8890;
commit;
2.创建OLTP压缩表
Create Table orders ... Compress For OLTP;
以下语句第一个分区设计为普通压缩,第二个分区设计为OLTP压缩分区,第三个为非压缩的。
Create Table(
object_id number(10),
object_name varchar2(120)
)
PARTITION BY RANGE (object_id)(
PARTITION p1 VALUES LESS THAN (100000) COMPRESS BASIC,
PARTITION p2 VALUES LESS THAN (200000) COMPRESS FOR OLTP,
PARTITION p3 VALUES LESS THAN (maxvalue) NOCOMPRESS
)
3.创建Warehouse Compression或者Warehouse Compresssion压缩表
Create table sales_history ... COMPRESS FOR QUERY;
Create table sales_history ... COMPRESS FOR ARCHIVE;
修改压缩表
1.将表转换为BASIC压缩表
alter table emp move Compress basic;
2.将表转换为OLTP压缩表
alter table emp move compress for oltp;
3.将一个分区转换为Basic压缩分区
alter table part_objects move partition p3 compress basic;
以下语句修改一个分区的现有的压缩算法,但更改之后的压缩算法只对新纪录有效,而不影响原有记录
alter table part_objects modify partition p1 compress for oltp;
PS:上述move和modify操作均非在线操作,即进行这些操作时这些表不可进行DML操作。欲在线进行压缩算法变更操作,则需要采用在线重定义技术。
查询压缩记录