Before Oracle 11g, the data will not be compressed by normal insert statement even if the table is created with compress option. If you want to compress a tables data, you need to move table as compressed, or do a CTAS, or bulk insert rows into compressed tables. We are starting to use compress table to store some history data.
ALTER TABLE ... COMPRESS
ALTER TABLE ... MOVE COMPRESS
CREATE TABLE ... COMPRESS AS ...
FORALL ... INSERT INTO ...
INSERT INTO ... SELECT ...
There are a lot of bug related to compress, but it can save a lot of storage, in our real case, it saved us 80% disk space, so we decide to take the risk.
In Oracle 11g, you can use compress table in OLTP system, which means the data can be compressed even by normal insert, nothing else. No compress logic improve, just some bug fixes, because AUL 5 can extract the rows from compressed tables in Oracle 11g. Hope the compress feature will be very robust in 11g.
CREATE TABLE ... COMPRESS FOR ALL OPERATIONS ...
To use OLTP compress, you need to create table with "FOR ALL OPERATIONS" option.
