当前位置:  数据库>oracle

Oracle 11g表压缩

    来源: 互联网  发布时间:2017-06-26

    本文导语: 最近一套生产库表空间一直告警在90%以上,但的磁盘硬件资源又不足,整个库已经达到26T。库里存储了近4年的数据,与业务沟通说历史数据基本上不会做操作,但是又不能归档,所以想到了压缩表来节省表空间。 随着数据库的...

最近一套生产库表空间一直告警在90%以上,但的磁盘硬件资源又不足,整个库已经达到26T。库里存储了近4年的数据,与业务沟通说历史数据基本上不会做操作,但是又不能归档,所以想到了压缩表来节省表空间。

随着数据库的增长,我们可以考虑使用Oracle的表压缩技术。表压缩可以节省磁盘空间、减少data buffer cache的内存使用量、并可以显著的提升读取和查询的速度。当使用压缩时,在数据导入和DML操作时,将导致更多的CPU开销,然而,由于启用压缩而减少的I/O需求将抵消CPU的开销而产生的成本。表的压缩对于应用程序来说是完全透明的,对于决策支持系统(DSS)、联机事务处理系统(OLTP)、归档系统(Archive Systems)来说表的压缩是有益处的。我们可以压缩表空间,表和分区。如果压缩表空间,那么在默认的情况下,表空间上创建的所有表都将被压缩。只有在表执行插入、更新或批量数据载入时,才会执行数据的压缩操作。

Table Compression Methods

Table Compression MethodCompression LevelCPU OverheadApplicationsNotes

Basic compression

High

Minimal

DSS

None.

OLTP compression

High

Minimal

OLTP, DSS

None.

Warehouse compression (Hybrid Columnar Compression)

Higher

Higher

DSS

The compression level and CPU overhead depend on compression level specified (LOW or HIGH).

Archive compression (Hybrid Columnar Compression)

Highest

Highest

Archiving

The compression level and CPU overhead depend on compression level specified (LOW or HIGH).

当使用Basic Compression,warehouse Compression,Archive Compression类型的压缩时,会在发生批量数据导入时才会执行压缩。OLTP Compression被用于联机事务处理系统,可以对任意的SQL操作执行数据压缩。Warehouse Compression和Archive Compression可以获得很高的压缩等级,因为它们采用了Hybrid Columnar(混合列)压缩技术,Hybrid Columnar采用一种改良的列的存储形式替代一行为主的存储形式。Hybird Columnar技术允许将相同的数据存储在一起,提高了压缩算法的效率。当使用混合列压缩算法时,将导致更多的CPU开销,因此这种压缩技术适用于更新不频繁的数据。

Table Compression Characteristics

Table Compression MethodCREATE/ALTER TABLE SyntaxDirect-Path INSERTNotes

Basic compression

COMPRESS [BASIC]

Rows are compressed with basic compression.

COMPRESS and COMPRESS BASIC are equivalent.

Rows inserted without using direct-path insert and updated rows are uncompressed.

OLTP compression

COMPRESS FOR OLTP

Rows are compressed with OLTP compression.

Rows inserted without using direct-path insert and updated rows are compressed using OLTP compression.

Warehouse compression (Hybrid Columnar Compression)

COMPRESS FOR QUERY [LOW|HIGH]

Rows are compressed with warehouse compression.

This compression method can result in high CPU overhead.

Updated rows and rows inserted without using direct-path insert are stored in row format instead of column format, and thus have a lower compression level.

Archive compression (Hybrid Columnar Compression)

COMPRESS FOR ARCHIVE [LOW|HIGH]

Rows are compressed with archive compression.

This compression method can result in high CPU overhead.

Updated rows and rows inserted without using direct-path insert are stored in row format instead of column format, and thus have a lower compression level.

测试:

oracle版本11.2.0.4

1、创建压缩表

zx@ORCL>create table t_basic (id number,name varchar2(10)) compress;
 
Table created.
 
zx@ORCL>create table t_oltp (id number,name varchar2(10)) compress for oltp;
 
Table created.
 
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name in ('T_BASIC','T_OLTP');
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T_BASIC              ENABLED  BASIC
T_OLTP                ENABLED  OLTP

2、未压缩表与压缩表转换
2.1 alter table ... compress/nocompress
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name ='T';
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T                  DISABLED
 
zx@ORCL>alter table t compress;
 
Table altered.
 
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name ='T';
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T                  ENABLED  BASIC
 
zx@ORCL>alter table t nocompress;
 
Table altered.
 
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name ='T';
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T                  DISABLED

之前未压缩的表可以通过alter table ... compress ... 语句进行压缩。在这种情况下,压缩启用前的记录不会被压缩,只有新插入或更新的数据才会进行压缩。同样,通过alter table ... nocompres ...语句解除对一个表的压缩,表内已压缩的数据还会继续保持压缩的状态,新插入的数据就不再被压缩。
2.2 alter table ... move compress/nocompress

zx@ORCL>select bytes/1024/1024 from user_segments where segment_name='T';
 
BYTES/1024/1024
---------------
        304
 
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name ='T';
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T                  DISABLED
 
zx@ORCL>alter table t move compress ;
 
Table altered.
 
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name ='T';
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T                  ENABLED  BASIC
 
zx@ORCL>select bytes/1024/1024 from user_segments where segment_name='T';
 
BYTES/1024/1024
---------------
        72
 
zx@ORCL>alter table t move nocompress;
 
Table altered.
 
zx@ORCL>select table_name,compression,COMPRESS_FOR from user_tables where table_name ='T';
 
TABLE_NAME            COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
T                  DISABLED
 
zx@ORCL>select bytes/1024/1024 from user_segments where segment_name='T';
 
BYTES/1024/1024
---------------
        272

3、分区表的压缩

zx@ORCL>create table t_comp_part (id number,name varchar2(10))
  2  partition by range(id)
  3  (partition p1 values less than (200),
  4  partition p2 values less than (400)) 
  5  compress;
 
Table created.
 
zx@ORCL>select table_name,PARTITION_NAME,compression,COMPRESS_FOR from user_tab_partitions where table_name = 'T_COMP_PART';
 
TABLE_NAME            PARTITION_NAME              COMPRESS COMPRESS_FOR
------------------------------ ------------------------------ -------- ------------
T_COMP_PART            P1                  ENABLED  BASIC
T_COMP_PART            P2                  ENABLED  BASIC
 
--修改分区的压缩方式
zx@ORCL>alter table t_comp_part modify partition p1 compress for oltp;
 
Table altered.
 
zx@ORCL>select table_name,PARTITION_NAME,compression,COMPRESS_FOR from user_tab_partitions where table_name = 'T_COMP_PART';
 
TABLE_NAME            PARTITION_NAME              COMPRESS COMPRESS_FOR
------------------------------ ------------------------------ -------- ------------
T_COMP_PART            P1                  ENABLED  OLTP
T_COMP_PART            P2                  ENABLED  BASIC

未压缩的分区转为压缩分区
一个表可以有压缩的分区和未压缩的分区,不同的分区可以使用不同的压缩方法。可以采用下列的方法改变分区的压缩方法:
1、alter table ... modify partition ... compress ... ,该方法仅适用于新插入的数据。

2、alter table ... move partition ... compress ... ,该方法适用于新插入的数据和已存在的数据。
如果要把分区表转为压缩表,直接alter table ... move compress ...会报错,只能针对表里的各个分区做alter table ... move partition ... compress ...。
表压缩后对应的索引会失效,需要重建。


    
 
 

您可能感兴趣的文章:

  • oracle定时备份压缩的实现步骤
  • Linux oracle数据库自动备份自动压缩脚本代码
  • Oracle压缩表表空间
  • oracle 11g最新版官方下载地址
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • Linux版本的Oracle 11g将首先被发布
  • 关于Linux下oracle是10g?还是11g?
  • Oracle 11g 相关工具netca,dbca乱码之解决
  • linux iis7站长之家
  • Oracle 11g解锁scott
  • Oracle 11g R2 数据库将在9月发布
  • Oracle内存数据库11g和高速缓存11g上市
  • 有人在fedora 10下安装 oracle database 11g,没有呀?提供个安装步骤
  • 在ubuntu10.04上安装oracle11g失败
  • 关于Oracle 11g 闪回的一个小问题
  • Oracle11g备份和恢复功能的提高
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • Oracle针对Eclipse 11g发布开发包
  • centos5.4安装oracle11g的问题
  • Oracle 11g 数据库 Alert日志的新发展
  • Redhat 6 安装 oracle 11g2的问题
  • 基于Linux环境的Oracle 11g数据库正式推出
  • Oracle 11G密码180天过期后的修改方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 虚拟机装Oracle R12与Oracle10g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle 数据库开发工具 Oracle SQL Developer
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE日期相关操作
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE数据库常用字段数据类型介绍
  • Linux系统下Oracle的启动与Oracle监听的启动
  • Oracle 12c的九大最新技术特性介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • ORACLE中DBMS_RANDOM随机数生成包
  • 网间Oracle的连接,远程连接Oracle服务器??
  • 请教:.profile中:if [ -d /opt/oracle/db01/app/oracle/product/9.2.0 ]是什么意思?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3