12.2 ACFS compression, part I

One of the new 12.2 features is the ability to transparently compress ACFS filesystems.

Compression is enabled using acfsutil utility:

[root@raca1 ~]# acfsutil -h compress on
Usage: acfsutil [-h] compress on [-a ]
- Set default compression algorithm
Currently only 'lzo' available
- Enable compression on volume

Clearly there is support for more compression algorithms to be added in the future but right now only lzo is supported.

Let's go ahead and enable compression on the ACFS filesystem I have:

[root@raca1 ~]# acfsutil compress on /u02/oradata

Compression status can be checked using acfsutil info fs:

[root@raca1 ~]# acfsutil info fs /u02/oradata
/u02/oradata
ACFS Version: 12.2.0.1.0
on-disk version: 46.0
compatible.advm: 12.2.0.0.0
ACFS compatibility: 12.2.0.0.0
flags: MountPoint,Available
mount time: Fri Jul 7 12:53:39 2017
mount sequence number: 0
allocation unit: 4096
metadata block size: 4096
volumes: 1
total size: 8589934592 ( 8.00 GB )
total free: 6935588864 ( 6.46 GB )
file entry table allocation: 393216
primary volume: /dev/asm/data-95
label:
state: Available
major, minor: 250, 48641
logical sector size: 4096
size: 8589934592 ( 8.00 GB )
free: 6935588864 ( 6.46 GB )
metadata read I/O count: 23833
metadata write I/O count: 39103
total metadata bytes read: 257896448 ( 245.95 MB )
total metadata bytes written: 421969920 ( 402.42 MB )
ADVM diskgroup: DATA
ADVM resize increment: 67108864
ADVM redundancy: unprotected
ADVM stripe columns: 8
ADVM stripe width: 1048576
number of snapshots: 0
snapshot space usage: 0 ( 0.00 )
replication status: DISABLED
compression status: ENABLED

As a quick test I've created a new empty database inside ACFS filesystem. We can now check compressed file sizes:

[root@raca1 ora12cr2]# acfsutil compress info /u02/oradata/ora12cr2/sysaux01.dbf
Compression Unit size: 8192
Disk storage used: ( 88.70 MB )
Disk storage saved: ( 461.31 MB )
Storage used is 16% of what the uncompressed file would use.
File is not scheduled for asynchronous compression.
[root@raca1 ora12cr2]# ls -l /u02/oradata/ora12cr2/sysaux01.dbf
-rw-r----- 1 oracle dba 576724992 Jul 7 13:45 /u02/oradata/ora12cr2/sysaux01.dbf

It is worth noting that not all file types are compressed. For example redo logs are left uncompressed:

[root@raca1 ora12cr2]# acfsutil compress info /u02/oradata/ora12cr2/redo01.log
The file /u02/oradata/ora12cr2/redo01.log is not compressed.

So far so good -- the feature indeed allows you to save some space by compressing the files. I will continue exploring this capability in the next part.