Introduction

In Oracle EBS 12.1 and 12.2 cache is cleared according to the following document:

How To Clear The Cache Using Functional Administrator? (Doc ID 759038.1)

Functional Administrator>Home>Core Services>Caching Framework>Global Configuration>Clear All Cache

But sometimes you may need to automate this process. There is not much information on this topic. I present the procedure that I was able to find below.

1 Clearing the Cache from the Backend

After a lot of research I found the following Oracle Doc:

12.2 E-Business Suite Applications Framework Commands To Use The CacheWatchUtil With The Java Object Cache Monitor Tool For Diagnostics And Debug Log Creation (Doc ID 2329601.1)

It contained a command that drew my attention:

java oracle.ias.cache.CacheWatchUtil watch -address=host:port

Where host is the EBS apps server hostname or IP address. And port is the value of ‘s_java_object_cache_port’ context variable.
Here is the example of this command usage after the EBS run environment application:

[applmgr@demo ~]$ source EBSapps.env run
 
java oracle.ias.cache.CacheWatchUtil watch -address=demo.localdomain:12345
 
Jun 10, 2025 7:45:16 PM oracle.ias.cache.CacheInternal logLifecycleEvent
INFO: JOC is initialized from oracle.ias.cache.CacheWatchUtil.main, ver=11.1.1.2.0, distribute=true, vid=30, coordinator=0, discover list=[[5.9.251.109:23456] segID=1, original]
cache>

For EBS 12.1 the commands differs a bit:

java oracle.ias.cache.CacheWatchUtil watch -config=$ORA_CONFIG_HOME/10.1.3/javacache/admin/javacache.xml

Typing help in the prompt shows a list of the available commands:

cache> help
Usage:
 list caches : print reachable Cache(s) info including CacheId(s)
 lc : shortcut for "list caches"
 list objects [CacheId] [region=] [sort=<0..7>]: print objects list
 lo [CacheId] [region=] [sort=<0..7>]: shortcut for "list objects"
   0: By region name
   1: By object name
   2: By group name
   3: By object type
   4: By valid status
   5: By reference count
   6: By access count
   7: By expiration
 set level=s [CacheId] : set logger level to n
 set timeout=n : set Group Communication timeout value to n
 get config [CacheId] : get configuration info
 dump [CacheId] : cause Cache(s) dump its contents to the logger
 invalidate: cause Cache to invalidate all objects in the cache
 destroy: cause Cache to destroy all objects in the cache
 iostat: distribute cache I/O statistics for this JVM
 help or ? : Display this help
 quit or exit: quit

If you try the ‘list caches’ command it will return some information about the processes using the cache:

cache> list caches
 
View Id: 32
My ProcessId: 47339_demo.localdomain
 
Distributor Table:
     ip/port                 position  processId
============================================================
#1.  5.9.251.109:12345       0         32506_demo.localdomain  Coordinator
 
Member Table:
     ip/port                 position  processId
============================================================
#1.  5.9.251.109:18479       6         34194_demo.localdomain
#2.  5.9.251.109:17815       1         32506_demo.localdomain
#3.  5.9.251.109:17818       3         32518_demo.localdomain
#4.  5.9.251.109:17827       4         32493_demo.localdomain
#5.  5.9.251.109:14369       7         47339_demo.localdomain
#6.  5.9.251.109:36591       5         12784_demo.localdomain
#7.  5.9.251.109:17816       2         32544_demo.localdomain
#8.  5.9.251.109:17813       0         32532_demo.localdomain

The ‘list objects’ command displays objects in each of the caches. The list is quite large, so I will give only an extract.

cache> list objects
 
[FND/PROFILE_OPTION_CACHE]      [UMX_REGISTER_HERE_REG_SRV]     [FND/PROFILE_OPTION_CACHE]      Memory  0       7741    14373 Seconds   true    null
[FND/USER_ID_CACHE]     [FND/USER_ID_CACHE]     [FND]   Region  0       20      None    true    null
[FND/PROFILE_OPTION_VALUE_CACHE]        [[oracle.apps.fnd.profiles.ProfileOptionValue@f9a2d81e $Revision: 120.3 $ extends [oracle.apps.fnd.cache.KeyConverterHelper@f9a2d81e $Revision: 120.4 $ extends [oracle.apps.fnd.cache.GenericCacheLoader@f9a2d81e $Revision: 120.6.12020000.2 $ extends oracle.apps.fnd.profiles.ProfileOptionValue@f9a2d81e]] {FND_LOGIN_ABOUT,null,10005,-1,0,null}]]   [FND/PROFILE_OPTION_VALUE_CACHE]   Memory  0       7733    14373 Seconds   true    null
[FND/FUNCTION_ANCESTOR_CACHE]   [FND/FUNCTION_ANCESTOR_CACHE]   [FND]   Region  0       2740    None    true    null
[JTF/JTF_PROPERTYMANAGER_CACHE] [JTF/JTF_PROPERTYMANAGER_CACHE] [JTF]   Region  0       14      None    true    null
 
Cache 7 at [:0] segID=1, ID:J14369:5.9.251.109:[email protected], position:7
 
 REGION   OBJNAME   GROUP   TYPE   REFCNT   ACCCNT   EXPIRE   VALID   LOCK
-------- --------- ------- ------ -------- -------- -------- ------- ------
[oracle_java_cache_service]     [oracle_java_cache_service]     [null]  Region  1       2       None    true    null

The invalidate command causes the cache to invalidate all objects in the cache

cache> invalidate
 invalidate finished.

I do NOT recommend running the destroy command as it causes the issues in the EBS application front end. The applications restart is required after this command.

2 Conclusion

There is no official Oracle documentation confirming this it is the correct procedure of clearing the cache from the back end.
But I did not face issues related to the cache after I added the above command to a script.
Please test and let me know if it works for you or do you have any suggestions?