- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
探讨Oracle表压缩技术及应用
探讨Oracle表压缩技术及应用
Create table sale_detail_record_partition(
Department_id number(3),
Employee_id number(5),
Year_id number(4),
Month_id number(2),
Week_id number(2),
Day_id number(3),
Money_num number(10,2)
)
Partition by range(Year_id)
(
Partition sale_before_2004
Values less than(2004) compress,
Partition sale_2004
Values less than(2005) compress,
Partition sale_2005
Values less than(2006)
);
在表空间级别上定义压缩属性。当压缩属性被定义在表空间上时,在其中创建表时,该特性将被表继承,但表级别的压缩属性会覆盖表空间的压缩属性。具体实现语法如下:
Create tablespace sales_tablespace data file ‘D:\oracle10g\oradata\oracle10\sal_tab_file1.ora’ size 5M default compress;
或通过alter tablespace语句修改已存在的表空间的压缩属性。
Alter tablespace sales_tablespace data file ‘D:\oracle10g\oradata\oracle10\sal_tab_file1.ora’ size 5M default nocompress;
相关查询
查看一个表是否是压缩表
Select compression from user_tables where lower(table_name)=’sale_detail_record’;
COMPRESSION
查看一个表空间是否被压缩可以通过查询dba_tablespaces数据字典
Select def_tab_compression from dba_tablespaces where lower(tanlespace_name)=’sales_tablespace’;
DEF_TAB_COMPRESSION
查看各分区表的压缩属性
Select table_name,partition_name,compression from user_tab_partitions
TABLE_NAME PARTITION_NAME COMPRESSION
表压缩实现
表被定义或修改为有压缩属性后,并不意味数据就已经被压缩。数据压缩实际上是发生在往一个表装载或插入数据的过程中,而且要使数据能够被压缩,必须正确地使用批量装载或插入。具体有以下4种操作。
在SQL*Loader中使用直接路径装载数据。
执行Create table … as select语句。
执行并行插入语句。
执行串行插入语句并且使用append提示。
SQL语句实例分别如下:
Create table sale_detail_record_bak compress as select * from sale_detail_record;
Insert /*append*/ into sale_detail_record_bak select * from sale_detail_record;
Insert /* +parallel (sale_detail_record_bak,4) */ into sale_detail_record_bak select * from sale_detail_record;
对于一个已经存有数据的非压缩表(或压缩表),可以通过如下语句压缩其中的数据,同时修改表的压缩属性:
Alter table sale_detail_record move compress;
这种方法可以用来弥补装载或插入数据时,因不符合压缩条件而未被压缩的表或数据。
如果要解除一个表的压缩属性,并同时解压缩其中数据,则执行下列语句:
Alter table sale_detail_record move uncompress;
压缩率测试
大量实例测试表明,Oracle引进表压缩技术能大比例减少数据的占用空间,但不同的应用类型、装载数据的语法、数据块大小、存储参数等因素会导致不同的压缩率。因此有必要对实际系统表的潜在压缩率进行量化测试。笔者编写了一个测试非压缩表潜在压缩率的程序,使用方法如下:
Set serveroutput on;
Execute test_
文档评论(0)