30 May 2020

Oracle Database on Solaris ZFS done right

ZFS is the default filesystem on Oracle Solaris. It is
very easy to use with the two commands zpool and zfs.

Disk management
Expand existing LUNs or add additional LUNs if you
need more space. Since Solaris 11.4 you can remove LUNs if you
want to shrink your pool.

Features
No need for filesystem checks, because of the copy-on-write
implementation. You can create snapshots and clones,
use encryption and compression. Transfer data to other
systems using send/receive or sharing.
Move the pools using export/import to other systems.

ZFS builds the base for the Solaris BootEnvironment (beadm)
where you are able to update to and boot from different Solaris 11
Updates.

ZFS is my preferred filesystem and volume manager, but
is everything perfect? No. You need to carefully configure
ZFS to avoid and work around fragmentation.


Oracle Database

You can run Oracle Database very well on ZFS and profit
from snapshots, cloning and other features. Especially
for larger databases (many TB) with lots of data changes
you should setup carefully.

Following a few Best Practices based on own experiences
and Recommendations by Oracle:

- data pool with log device / 8KB recordsize for data / logbias=latency
- redo pool with log device / 1MB recordsize / logbias=latency
- archive pool / 1MB recordsize

Add multiple LUNs for striping. Use SSDs for highest performance.
If you are using SAN increase zfs:zfs_vdev_max_pending and ssd:ssd_max_throttle to 20.
Limit the ZFS Cache (zfs:zfs_arc_max)
Make sure there is around 20% free space on the zpools.
Use a Server with 'enough' Memory.

After many years of using ZFS it always hurts, if I have
to use other more complicated filesystem ....


Links

Pool Creation Practices for an Oracle Database (Solaris 11.4 ZFS Guide)

Configuring Oracle ZFS for an Oracle Database Whitepaper (2014)

Oracle DB erfolgreich betreiben auf SPARC/LDoms/Solaris/ZFS     (German Presentation)