We live in an era where businesses are powered by data, running their most critical systems on robust platforms such as Oracle Exadata Cloud@Customer and Oracle Exadata Cloud Service. Yet, after migration, many organizations tend to overlook the rich set of features these platforms provide.
Think of it this way: if you buy a Ferrari, you don’t drive it like a regular car. You learn its features, understand its capabilities, and drive it like a Ferrari. The same mindset applies to Exadata – to get the most out of it, you need to leverage its features fully.
One key feature that is often underutilized is Exadata compression. Exadata offers multiple compression options, including Hybrid Columnar Compression (HCC), OLTP table compression, and basic table compression, designed to reduce storage costs, improve I/O performance, and accelerate analytic workloads. By implementing the right compression strategies, organizations can unlock significant efficiency gains without compromising performance, making Exadata not just a platform for running databases but a powerhouse for high-performance, cost-effective data management.
Exadata supports a variety of compression technologies, each optimized for different workload types. Below are the primary options:
For this article, I will specifically highlight the benefits of Oracle Advanced Compression.
Oracle Advanced Compression delivers a wide range of benefits that help reduce storage, improve performance, and lower operational costs. Below are the key advantages:
(For more details, you can refer to Oracle’s official documentation: https://www.oracle.com/ca-en/database/advanced-compression/#rc30p2)
In this article, I will demonstrate the true power of Oracle Advanced Compression and show how it can significantly reduce storage requirements while maintaining optimal performance. For this example, I am using an Exadata Cloud Service (ExaCS) environment with Advanced OLTP Compression enabled.
To evaluate the impact, I selected a table linked to a query with a very high execution count – making it an ideal candidate for compression testing and performance analysis.
Step 1: Check the Current Table Size
Before applying compression, let’s capture the baseline size of the table.
col segment_name for a30
select segment_name,sum(bytes)/1024/1024/1024 GB from dba_segments where segment_name in ('&table_name') group by segment_name;
Sample Output :
SEGMENT_NAME GB
------------------------------ ----------
TEST_ASSET_MAPPING 176
The TEST_ASSET_MAPPING table is extremely large, occupying 176 GB, making it a strong candidate for compression.
Step 2: Analyze Table Activity (Inserts & Deletes)
This table also contains an index that is primarily used to retrieve primary key values. Because the table experiences a high volume of insert and delete operations, it is an excellent candidate for Advanced OLTP Compression, which is specifically optimized for environments with heavy DML.
In addition to the frequent DML activity, the large number of deletions has resulted in significant table fragmentation, further reinforcing the need for compression and a segment reorganization to reclaim space and improve efficiency.
Use the following query to examine modification activity:
select table_name,inserts,deletes from dba_tab_modifications where table_name = '&table_name';
Sample output :
TABLE_NAME INSERTS DELETES
------------------------------ ---------- ----------
TEST_ASSET_MAPPING 253082 1598890
The heavy DML workload confirms that OLTP Compression is a good fit for this table.
Compress the Table
ALTER TABLE SCOTT.TEST_ASSET_MAPPING MOVE ROW STORE COMPRESS ADVANCED ONLINE parallel 4;
Rebuild the Index with Compression
ALTER INDEX SCOTT.IDX_UAM_1 rebuild COMPRESS ADVANCED HIGH ONLINE PARALLEL 4;
These commands compress both the table and its associated index while keeping the objects online, ensuring minimal impact on application availability.
After applying compression, the next step is to verify that both the table and its index are correctly compressed.
Validate Table Compression
Use the following SQL query to check the compression status of the table:
set lines 600
col OWNER for a20
col TABLE_NAME for a30
col COMPRESSION for a30
select OWNER,TABLE_NAME,COMPRESSION,COMPRESS_FOR from dba_tables where table_name '&table_name';
-- Sample output
OWNER TABLE_NAME COMPRESS COMPRESS_FOR
-------------------- ------------------------------ -------- ------------------------------
USER_ASSET_SVC USER_ASSET_MAPPING ENABLED ADVANCED
This confirms that Advanced Compression is enabled on the table.
Validate Index Compression
Next, verify the compression settings for the associated index:
Sample Output:
select OWNER,INDEX_NAME,INDEX_TYPE,SAMPLE_SIZE,LAST_ANALYZED,COMPRESSION from dba_indexes where index_name='&index_name';
OWNER INDEX_NAME INDEX_TYPE SAMPLE_SIZE LAST_ANAL COMPRESSION
------------------- ---------------- -------------- ----------- --------- -------------
USER_ASSET_SVC IDX_UAM_1 NORMAL 43885629 23-JUN-25 ADVANCED HIGH
This confirms that the index has been successfully rebuilt using Advanced High Compression.
Once compression is applied, it’s important to measure the impact on storage. Use the same query as before to check the current table size:
| Object | Before Compression (GB) | After Compression (GB) | Savings (%) |
|---|---|---|---|
| TEST_ASSET_MAPPING | 17 GB | 4 GB | ~23% |
| IDX_UAM_1 Index | – | – | Reduced storage and faster index scans |
Real-World Compression Results on a 30TB Database
While the earlier example focused on a single sample table, we also evaluated Advanced Compression across several large tables in a production-sized 30TB database. The results clearly demonstrate the substantial storage savings that can be achieved.
It’s worth noting that if you choose to use Hybrid Columnar Compression (HCC) -available only on Exadata – you can often achieve even higher compression ratios. Ultimately, the level of savings depends on selecting the right compression method for your data and workload patterns.
| TABLE_NAME | BEFORE_GB | AFTER_GB | COMP_RATIO | COMPRESSION_T |
| EQ_MACHINE_HOURS_DATA | 2709 (2.7 T) | 542 | 5 | Compress Advanced |
| EQ_TELEMATICS_DATA | 746 | 226 | 3.3 | Compress Advanced |
| EQ_TELEMATICS_SPN_INVALID_DATA | 212 | 48 | 4.4 | Compress Advanced |
| EQ_EQUIPMENT_MOVEMENT | 145 | 63 | 2.3 | Compress Advanced |
| EQ_TELEMATICS_HISTOGRAM_DATA | 139 | 49 | 2.8 | Compress Advanced |
Oracle’s Advanced Compression is a powerful feature that delivers substantial storage savings, improves I/O performance, and optimizes operational efficiency – especially in Exadata and large-scale database environments.
Through both sample tables and real-world examples from a 30TB database, we observed compression ratios ranging from 2.3x to 5x, demonstrating that even high-DML transactional tables benefit significantly without any performance degradation.
This becomes even more important when considering the cost of ExaCS storage. A single X11M storage server costs approximately $2,830.90 per month, while an X10M storage server costs around $2,160.00 per month. ExaCS makes it easy to add storage with just a few clicks, but that convenience comes at a premium. Using storage wisely – and leveraging features like Advanced Compression – can dramatically reduce consumption and help organizations avoid unnecessary costs.
In short, compression transforms Oracle databases into a high-performance, cost-efficient platform, ensuring that you maximize the value of your Exadata investment while keeping operational expenses under control.