« Oracle 11G OLTP Compress支持的含义 »
DBA » http://www.anysql.net/dba/oracle_11g_oltp_compress.html 2007-11-16在Oracle 11g之前, 普通的Insert不能使数据以Compress方式存贮, 你可以做实验对它进行验证, 只能通过将表移动一下, 或用CTAS或Bulk Insert的方式来进行表压缩. 最近也开始用Compress表存放一些几年前的数据了.
虽然有触目惊心的Bug, 但空间的节约却是可观的, 有时也得挺而走险(没有这么严重)一下.
在Oracle 11g中, 号称支持OLTP的Compress表, 并不是算法有什么改进(我用AUL 5去恢复11g中的压缩表, 也能恢复出来, 就说明了这一点), 也只是修复了一些Bug, 并且在普通的Insert语句下, 也可以进行压缩(还没有装11g进行验证). 如果这个功能安全可靠的话, 到是可以用于存放什么Log信息的表, 一个系统中总是不关键的数据占据了大多数存贮.
11g安装软件太大了, 我还没有下载Windows的版本呢? 谁下载了去拷一下算了.


Update:
For 11g Database Servers another option is to create the compressed table using the additional clause “For all operations”
CREATE TABLE LEE COMPRESS FOR ALL OPERATIONS AS SELECT * FROM ALL_OBJECTS WHERE 1=0;
我下载了11g for win32,并顺利安装在了Vista上,解压后1.79G。
11g compress 我用普通的sql测试了一下,好像没有被压缩
也可能跟数据有关。
具体什么操作能够触发compress?
ctas,append 这些我测试过在9i是可以被压缩的
有同事说parallel也能够被压缩,单是我这并没有测出来。
真是很郁闷
11g R2中听说会有列压缩的功能, 不知道这个是不是和Sybase IQ中的列存贮一样的原理。