|
kelsoncong 发表于 2012-6-27 10:38 ![]()
这个我之前看过点介绍,是不一样的,
另外我在itpub上看到一篇博文写的很不错,
http://blog.itpub.net ...
博文里的错误估计也是没考虑pctfree:- SQL> SELECT SUM(T.BYTES)/1024/1024 FROM USER_SEGMENTS T WHERE T.SEGMENT_NAME = 'TEST_DBA_OBJECTS_CTAS_NOCOM';
- SUM(T.BYTES)/1024/1024
- ----------------------
- 29
- Packing Compressed Tables
- If you use conventional DML on a table compressed with basic compression, then all inserted and updated rows are stored uncompressed. To "pack" the compressed table such that these rows are compressed, you can use an ALTER TABLE MOVE statement.
- [color=Red]对于本身是压缩表但是插入数据是按照常规插入的情况下,官方虽然说没有压缩但事实之前的实验表明数据占据的空间还是比存在于非压缩表中占用空间要少[/color],为了让这些数据进一步压缩,可以使用alter table move这种语句来实现,来看一下实验;
- SQL> SELECT SUM(T.BYTES)/1024/1024 FROM USER_SEGMENTS T WHERE T.SEGMENT_NAME = 'TEST_DBA_OBJECTS_INSERT';
- SUM(T.BYTES)/1024/1024
- ----------------------
- 26
- SQL> ALTER TABLE TEST_DBA_OBJECTS_INSERT MOVE ;
- Table altered
- SQL> SELECT SUM(T.BYTES)/1024/1024 FROM USER_SEGMENTS T WHERE T.SEGMENT_NAME = 'TEST_DBA_OBJECTS_INSERT';
- SUM(T.BYTES)/1024/1024
- ----------------------
- 11
复制代码 |
|