Alter Flash Cache Mode on Storage Server in Exadata and Zero Data Loss Recovery Appliance

Flash Cache is a mechanism that use the high-performance flash storage on Exadata Storage Servers to keep frequently used data and index blocks readily available. It operates as a fast cache between the slower disks and the database servers, greatly reducing I/O wait time and improving overall system performance for both OLTP and data warehousing. It can suffer millions of IOPS and supports features such as write-through or write-back caching, cache persistence after restarts, and intelligent data handling. As a result, it accelerates read operations, increases transaction throughput, and delivers greater efficiency and stability for workloads with heavy data demand.

Modes: 

  • Write-Through: Data written to both flash and disk, for read-heavy loads
  • Write-Back: Data written to flash first, then disk, for write-intensive workloads

In my environment, I am using a Zero Data Loss Recovery Appliance. ZDLRA has the same hardware than Exadata, so, the process should be the same.

My Zero Data Loss Recovery Appliance is a X9 and an Elastic Configuration with 2 compute nodes and 6 storage nodes.

In this article I am going to change the flash cache from Write-Through mode to Write-Back mode after a reimage and reconfiguration storage cell.

First, let’s bring down the ZDLRA services. On compute node, with oracle user and connected with rasys on ZDLRA database, check the status of service:

[oracle@zdl01dbadm01 ~]$ sqlplus rasys

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Dec 8 09:18:31 2025
Version 19.26.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Enter password:
Last Successful login time: Mon Dec 08 2025 09:18:27 -03:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0

SQL> SELECT state FROM ra_server;

STATE
-------------------
ON

Now, shutdown the service and check if it turn OFF:

SQL> exec dbms_ra.abort;

PL/SQL procedure successfully completed.

SQL> SELECT state FROM ra_server;

STATE
-------------------
OFF

Let’s bring to down the ZDLRA database. Check the database status and shutdown after that:

[oracle@zdl01dbadm01 ~]$ srvctl status database -d zdlra02
Instance zdlra021 is running on node zdl01dbadm01
Instance zdlra022 is running on node zdl01dbadm02
[oracle@zdl01dbadm01 ~]$ srvctl stop database -d zdlra02 -o immediate
[oracle@zdl01dbadm01 ~]$ srvctl status database -d zdlra02
Instance zdlra021 is not running on node zdl01dbadm01
Instance zdlra022 is not running on node zdl01dbadm02

Connected with root user on cell node that you want to change the write mode, lets flush the flash cache:

[root@zdl01celadm04 ~]$ cellcli -e "alter flashcache all flush"
Flash cache flush on FD_00_zdl01celadm04 failed because flash cache is not in write back mode.
Flash cache flush on FD_01_zdl01celadm04 failed because flash cache is not in write back mode.

It’s ok if you receive the message above because in my case, my currently write mode is Write-Through, maybe can be your case too.

Drop the flash cache:

[root@zdl01celadm04 ~]$ cellcli -e "drop flashcache all"
Flash cache zdl01celadm04_FLASHCACHE successfully dropped

Change to right mode:

[root@zdl01celadm04 ~]$ cellcli -e "alter cell flashCacheMode=writeback"
Cell zdl01celadm04 successfully altered

Recreate the flash cache:

[root@zdl01celadm04 ~]$ cellcli -e "create flashcache all"
Flash cache zdl01celadm04_FLASHCACHE successfully created

With root, connected on compute node, check the flash disks status:

[root@zdl01dbadm01 ~]$ dcli -l root -g ~/cell_group "cellcli -e list flashcache attributes name, size, status";
zdl01celadm01: zdl01celadm01_FLASHCACHE    11.643218994140625T     normal
zdl01celadm02: zdl01celadm02_FLASHCACHE    11.643218994140625T     normal
zdl01celadm03: zdl01celadm03_FLASHCACHE    11.643218994140625T     normal
zdl01celadm04: zdl01celadm04_FLASHCACHE    11.643218994140625T     normal
zdl01celadm05: zdl01celadm05_FLASHCACHE    11.643218994140625T     normal
zdl01celadm06: zdl01celadm06_FLASHCACHE    11.643218994140625T     normal

Check the write mode:

[root@zdl01dbadm01 ~]$ dcli -l root -g ~/cell_group "cellcli -e list cell attributes name, flashCacheMode";
zdl01celadm01: zdl01celadm01       WriteBack
zdl01celadm02: zdl01celadm02       WriteBack
zdl01celadm03: zdl01celadm03       WriteBack
zdl01celadm04: zdl01celadm04       WriteBack
zdl01celadm05: zdl01celadm05       WriteBack
zdl01celadm06: zdl01celadm06       WriteBack

With oracle user, lets bring up all ZDLRA service, beginning with database:

[root@zdl01dbadm01 ~]$ su - oracle
Last login: Mon Dec  8 09:17:31 -03 2025 on pts/0
[oracle@zdl01dbadm01 ~]$ srvctl start database -d zdlra02
[oracle@zdl01dbadm01 ~]$ srvctl status database -d zdlra02
Instance zdlra021 is running on node zdl01dbadm01
Instance zdlra022 is running on node zdl01dbadm02

Connected with rasys on database, startup the ZDLRA services and check the status:

[oracle@zdl01dbadm01 ~]$ sqlplus rasys

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Dec 8 09:35:02 2025
Version 19.26.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Enter password:
Last Successful login time: Mon Dec 08 2025 09:34:50 -03:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.26.0.0.0

SQL> exec dbms_ra.startup;

PL/SQL procedure successfully completed.

SQL> select state from ra_server;

STATE
-------------------
ON

That’s it.

Reference: (FAQ2730) Exadata Write-Back Flash Cache – FAQ


Deixe um comentário