`

Oracle 11g Compress Enhancement(原创)

 
阅读更多

OLTP Table Compression
In earlier releases, you could compress data only during bulk load operations such as during a direct load or a create table as select operation. You couldn’t, however, compress data during a DML operation such as an insert operation. Oracle Database 11g extends its table compression capability to OLTP workloads, meaning you can now compress data during a data insertion job, for example. The compression technology Oracle uses works independent of the application, meaning you can use compression for packaged applications such as SAP and PeopleSoft.
OLTP compression saves you storage by reducing space consumption by 50 to 75 percent. A major concern when compressing data is the impact on performance, especially during read operations, when the database usually has to uncompress the data before reading it. Oracle’s new OLTP compression technology doesn’t degrade write performance, while improving the read performance. Write performance doesn’t degrade because of Oracle’s batched compression strategy. The read performance is better because Oracle reads compressed data directly without first uncompressing the data.
When new data comes in, the database inserts that data into a data block, but in an uncompressed format. Once the block reaches its PCTFREE level, Oracle compresses the data in the block. This compression strategy is efficient and also uses space efficiently by eliminating the holes made by the deleted data in the data blocks.
Setting Up Table Compression   

Table compression was introduced in Oracle 9i as a space saving feature for data warehousing projects. In 11g it is now considered a mainstream feature that is acceptable for OLTP databases. In addition to saving storage space, compression can result in increased I/O performance and reduced memory use in the buffer cache. These advantages do come at a cost, since compression incurs a CPU overhead, so it won't be of benefit to everyone.

Note. Basic table compression is a free feature of the Enterprise Edition database, but OLTP compression requires the Advanced Compression option.
The compression clause can be specified at the tablespace, table or partition level with the following options:

  • NOCOMPRESS - The table or partition is not compressed. This is the default action when no compression clause is specified.
  • COMPRESS - This option is considered suitable for data warehouse systems.Compression is enabled on the table or partition during direct-path inserts only.
  • COMPRESS FOR DIRECT_LOAD OPERATIONS - This option has the same affect as the simple COMPRESS keyword.
  • COMPRESS FOR ALL OPERATIONS - This option is considered suitable for OLTP systems. As the name implies, this option enables compression for all operations, including regular DML statements. This option requires the COMPATIBLE initialization parameter to be set to 11.1.0 or higher. In 11gR2 this option has been renamed to COMPRESS FOR OLTP and the original name has been deprecated.

The following examples show the various compression options applied at table and partition level.

-- Table compression.
CREATE TABLE test_tab_1 (
  id            NUMBER(10)    NOT NULL,
  description   VARCHAR2(50)  NOT NULL,
  created_date  DATE          NOT NULL
)
COMPRESS FOR ALL OPERATIONS;
-- Partition-level compression.
CREATE TABLE test_tab_2 (
  id            NUMBER(10)    NOT NULL,
  description   VARCHAR2(50)  NOT NULL,
  created_date  DATE          NOT NULL
)
PARTITION BY RANGE (created_date) (
  PARTITION test_tab_q1 VALUES LESS THAN (TO_DATE('01/01/2008', 'DD/MM/YYYY')) COMPRESS,
  PARTITION test_tab_q2 VALUES LESS THAN (TO_DATE('01/04/2008', 'DD/MM/YYYY')) COMPRESS FOR DIRECT_LOAD OPERATIONS,
  PARTITION test_tab_q3 VALUES LESS THAN (TO_DATE('01/07/2008', 'DD/MM/YYYY')) COMPRESS FOR ALL OPERATIONS,
  PARTITION test_tab_q4 VALUES LESS THAN (MAXVALUE) NOCOMPRESS
);
Table-level compression settings are reflected in the COMPRESSION and COMPRESS_FOR columns of the [DBA|ALL|USER]_TABLES views.
SELECT table_name, compression, compress_for FROM user_tables;
TABLE_NAME                     COMPRESS COMPRESS_FOR
------------------------------ -------- ------------------
TEST_TAB_1                     ENABLED  FOR ALL OPERATIONS
TEST_TAB_2
2 rows selected.
Tables defined with partition-level compression and no table-level compression display NULL values in these columns.
Partition-level compression settings are reflected in the COMPRESSION and COMPRESS_FOR columns of the [DBA|ALL|USER]_TAB_PARTITIONS views.
SELECT table_name, partition_name, compression, compress_for FROM user_tab_partitions;
TABLE_NAME                     PARTITION_NAME                 COMPRESS COMPRESS_FOR
------------------------------ ------------------------------ -------- ------------------
TEST_TAB_2                     TEST_TAB_Q1                    ENABLED  DIRECT LOAD ONLY
TEST_TAB_2                     TEST_TAB_Q2                    ENABLED  DIRECT LOAD ONLY
TEST_TAB_2                     TEST_TAB_Q3                    ENABLED  FOR ALL OPERATIONS
TEST_TAB_2                     TEST_TAB_Q4                    DISABLED
4 rows selected.
The compression settings for tables and partitions can be modified using the ALTER TABLE command. The alterations have no effect on existing data, only on new operations applied to the table.
ALTER TABLE test_tab_1 NOCOMPRESS;
ALTER TABLE test_tab_2 MODIFY PARTITION test_tab_q4 COMPRESS FOR ALL OPERATIONS;
Default compression settings can be specified at the tablespace level using the CREATE TABLESPACE and ALTER TABLESPACE commands. The current settings are displayed in the DEF_TAB_COMPRESSION and COMPRESS_FOR columns of the DBA_TABLESPACES view.
CREATE TABLESPACE test_ts
  DATAFILE '/u01/app/oracle/oradata/DB11G/test_ts01.dbf'
  SIZE 1M
  DEFAULT COMPRESS FOR ALL OPERATIONS;
SELECT def_tab_compression, compress_for
FROM   dba_tablespaces
WHERE  tablespace_name = 'TEST_TS';
DEF_TAB_ COMPRESS_FOR
-------- ------------------
ENABLED  FOR ALL OPERATIONS
1 row selected.
ALTER TABLESPACE test_ts DEFAULT NOCOMPRESS;
SELECT def_tab_compression, compress_for
FROM   dba_tablespaces
WHERE  tablespace_name = 'TEST_TS';
DEF_TAB_ COMPRESS_FOR
-------- ------------------
DISABLED
1 row selected.
DROP TABLESPACE test_ts INCLUDING CONTENTS AND DATAFILES;
When compression is specified at multiple levels, the most specific setting is always used. As such, partition settings always override table settings, which always override tablespace settings.
The restrictions associated with table compression include:

  • Compressed tables can only have columns added or dropped if the COMPRESS FOR ALL OPERATIONS option was used.
  • Compressed tables must not have more than 255 columns.
  • Compression is not applied to lob segments.
  • Table compression is only valid for heap organized tables, not index organized tables.
  • The compression clause cannot be applied to hash or hash-list partitions. Instead, they must inherit their compression settings from the espace, table or partition settings.
  • Table compression cannot be specified for external or clustered tables.

参考至: 《McGraw.Hill.OCP.Oracle.Database.11g.New.Features.for.Administrators.Exam.Guide.Apr.2008》            http://www.oracle-base.com/articles/11g/table-compression-enhancements-11gr1.php
本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    Oracle 10gR2压缩(Compress)技术

    Oracle 10gR2压缩(Compress)技术 1 1、oracle压缩简介 1 2、oracle压缩优点 2 3、压缩分类 2 3.1 表级压缩 2 3.2 表空间级压缩 3 3.3 物化视图压缩 3 3.4 分区表压缩 3 ...附录B、Oracle11gR2 Compress 21

    Oracle Advanced Compression Option (ACO) 白皮书

    Oracle Database 11g Release 1 introduced the Advanced Compression Option to help customers cope with these challenges. Innovations in Oracle compression technologies help customers reduce the ...

    Oracle基本建表语句

    希望这个文档对喜欢学习Oracle的同学有所帮助

    commons-compress包

    apache.commons.compress 第三方开源软件。能解压,压缩文件。里面包括commons-compress-1.9、commons-compress-1.2.1的版本。 当遇到这种错误,应该重点关注Caused by:后面的内容 Caused by:xxx Unsupported major....

    commons-compress-1.4.1-API文档-中文版.zip

    赠送jar包:commons-compress-1.4.1.jar; 赠送原API文档:commons-compress-1.4.1-javadoc.jar; 赠送源代码:commons-compress-1.4.1-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.4.1.pom; 包含...

    commons-compress-1.19-API文档-中文版.zip

    赠送jar包:commons-compress-1.19.jar; 赠送原API文档:commons-compress-1.19-javadoc.jar; 赠送源代码:commons-compress-1.19-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.19.pom; 包含翻译后...

    JSCompress.rar

    JSCompress

    commons-compress-1.20-API文档-中英对照版.zip

    赠送jar包:commons-compress-1.20.jar; 赠送原API文档:commons-compress-1.20-javadoc.jar; 赠送源代码:commons-compress-1.20-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.20.pom; 包含翻译后...

    commons-compress-1.21-API文档-中文版.zip

    赠送jar包:commons-compress-1.21.jar; 赠送原API文档:commons-compress-1.21-javadoc.jar; 赠送源代码:commons-compress-1.21-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.21.pom; 包含翻译后...

    commons-compress.jar包

    commons-compress.jar,包括commons-compress-1.0.jar和commons-compress-1.8.jar两个jar包,等你来拿。

    commons-compress-1.20-API文档-中文版.zip

    赠送jar包:commons-compress-1.20.jar; 赠送原API文档:commons-compress-1.20-javadoc.jar; 赠送源代码:commons-compress-1.20-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.20.pom; 包含翻译后...

    apache-common-compress.rar

    用于压缩/解压缩的java开发工具包,基本上主流格式全包含,其中apache-common-compress内有5个jar包,两个是test的不用管,剩余三个,一个是源码包,一个是开发包另一个是javadoc。解压除RAR外的所有格式。 apache-...

    compress-1.7-src

    commons-compress-1.7-src

    KIC_Compress.KD

    KIC_Compress.KD

    commons-compress-1.8.1-API文档-中文版.zip

    赠送jar包:commons-compress-1.8.1.jar; 赠送原API文档:commons-compress-1.8.1-javadoc.jar; 赠送源代码:commons-compress-1.8.1-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.8.1.pom; 包含...

    compress-lzf-1.0.3-API文档-中英对照版.zip

    赠送jar包:compress-lzf-1.0.3.jar; 赠送原API文档:compress-lzf-1.0.3-javadoc.jar; 赠送源代码:compress-lzf-1.0.3-sources.jar; 赠送Maven依赖信息文件:compress-lzf-1.0.3.pom; 包含翻译后的API文档:...

    commons-compress-1.18.jar下载

    没有积分的可以去这个网站下载:http://commons.apache.org/proper/commons-compress/download_compress.cgi

    compress.jar

    资源用途: 一个Java语言编写的... -g 分组参数。默认:20 注意:-f与-indir不能同时使用。 使用方法 1. 单图片压缩 java -jar compress.jar -f 文件位置 2. 批量压缩 java -jar compress.jar -indir 文件夹位置

    java源码:文件压缩解压缩包 Commons Compress.rar

    java源码:文件压缩解压缩包 Commons Compress.rar

    commons-compress-1.19-API文档-中英对照版.zip

    赠送jar包:commons-compress-1.19.jar; 赠送原API文档:commons-compress-1.19-javadoc.jar; 赠送源代码:commons-compress-1.19-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.19.pom; 包含翻译后...

Global site tag (gtag.js) - Google Analytics