日期:2014-05-16  浏览次数:20489 次

oracle压缩表/表空间----转

Oracle9iR2 开始,ORACLE提供了表/表空间压缩技术,以减少磁盘开销,节省空间,并在某些情况下提高查询性能。

  表压缩是如何工作的在Orcle9i第2版中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数据库的数据块级别上进行的。当确定一个表要被压缩后,数据库便在每一个数据库数据块中保留空间,以便储存在该数据块中的多个位置上出现的数据的单一拷贝。这一被保留的空间被称作符号表(symbol table)。被标识为要进行压缩的数据只存储在该符号表中,而不是在数据库行本身内。当在一个数据库行中出现被标识为要压缩的数据时,该行在该符号表中存储一个指向相关数据的指针,而不是数据本身。节约空间是通过删除表中数据值的冗余拷贝而实现的。

  1.表级别

    1.1 创建一个压缩表:创建表时使用COMPRESS关键字,COMPRESS关键字指示Oracle数据库尽可能以压缩的格式存储该表中的行。       

create table test compress as select * from dba_objects where 1=2create table test (id number,name varchar220),time date) compress;

    1.2 修改现有表为压缩表:

SQL> alter table test compress;

      取消表的压缩:

SQL> alter table test nocompress;

    1.3 确定表是否被压缩:确定一个表是否使用了压缩,查询user_tables,compression字段表明表是否被压缩 

复制代码
SQL> select table_name,compression from user_tables where table_name not like 'BIN%';

TABLE_NAME COMPRESS

----------------------------- --------

CLASSES ENABLED

ROOMS ENABLED

STUDENTS DISABLED

MAJOR_STATS DISABLED
复制代码

  2.表空间级别

    2.1创建表压缩空间