教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 数据库类教程 · Oracle教程 · Oracle综合技巧

Oracle 11gR1中表压缩增强

学院最新推荐文章
教程推荐
『Oracle 11gR1中表压缩增强』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2008-8-12 

Oracle 9i开始引入表压缩技术,主要用于数据仓库项目节约存储空间,在11g中它已经成为一个主流特性,在OLTP数据库上的表现也让人非常满意了,除了节约存储空间外,压缩可导致I/O性能增强,减少缓冲区内存占用,使用这些优点是要付出代价的,因为压缩引起CPU开销较大,因此它不是在任何情况下都是有益的。

压缩子句可以在表空间,表或分区一级使用下面的选项指定:

◆NOCOMPRESS - 表或分区不压缩,当没有具体指定压缩子句时这是默认行为。
◆COMPRESS - 这个选项被认为适合于数据仓库系统,只在直接路径插入过程中在表或分区上启用压缩。
◆COMPRESS FOR DIRECT_LOAD OPERATIONS - 这个选项与COMPRESS关键字有同样的影响。
◆COMPRESS FOR ALL OPERATIONS - 这些选项被认为适合于OLTP系统,如名字暗示的那样,这些选项为所有操作启用了压缩,包括普通的DML语句,这个选项需要COMPATIBLE初始化参数设置为11.1.0或更高。

下面的例子展示了在表和分区一级应用多个压缩选项。

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

);

表级压缩设置反映在[dba|all|user]_tables视图中的COMPRESSION和COMPRESS_FOR列。

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.

SQL>

没有使用表级压缩的话这些列将显示NULL值。

分区级压缩设置反映在[DBA|ALL|USER]_TAB_PARTITIONS视图中的COMPRESSION和COMPRESS_FOR列。

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.

SQL>

可以使用alter table命令修改表和分区的压缩设置,修改对现有的数据没有影响,只对应用到表上的新操作有影响。

ALTER TABLE test_tab_1 NOCOMPRESS;

ALTER TABLE test_tab_2 MODIFY PARTITION test_tab_q4 COMPRESS FOR ALL OPERATIONS;

使用create  tablespace和alter  tablespace命令可以修改表空间级的默认压缩设置,当前的设置显示在DBA_TABLESPACES视图的DEF_TAB_COMPRESSION和COMPRESS_FOR列中。

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.

SQL>

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.

SQL>

DROP TABLESPACE test_ts INCLUDING CONTENTS AND DATAFILES;

在多级指定了压缩设置时,总是使用最详细的设置,如:分区设置总是覆盖表设置,表设置总是覆盖表空间设置。
表压缩有关的限制包括:

◆压缩表如果使用了COMPRESS FOR ALL OPERATIONS选项,它只能添加或删除列。
◆压缩表必须有多余255列。
◆压缩不能应用于lob段。
◆表压缩只对堆组织表有效,对索引组织表无效。
◆压缩子句不能应用于哈希分区或哈希-列表分区,相反,它们必须从表空间、表或分区设置中继承它们的压缩设置。
◆表压缩不能指定给扩展表或群集表。


作者:无 来源:无
】【关闭窗口
·上页:
·下页:
相关文章
     数据库类教程 - Oracle综合技巧
普通教程Oracle 11g R1中大小写敏感地口
普通教程SQL Server与Oracle数据库在安全
普通教程Oracle 11g R1中AWR基线增强(1)
普通教程Oracle学习地一些建议
普通教程一步完成封装编译
普通教程Oracle Warehouse Builder 自动
普通教程Oracle 11gR1中表压缩增强
普通教程Oracle只希望红帽存在 其余Linu
普通教程Oracle中SQL语句执行效率地查询
普通教程Oracle 11gR1中地表空间加密
普通教程Oracle Wait Event:Data file i
普通教程Oracle 11gR1中地SecureFile(1)
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光