Ok, so I was preparing for a DC services migration with a client and this would involve resizing the CPU count of Exadatas for better attending those services. This way, one of the steps will require reduce CPU counts in one of the sites to be aligned with the license terms.
Checking for the steps to accomplish that, I found references to change CPU and core count, but always described in the case of increasing allocation. As per 2.7 Increasing the Number of Active Cores on Database Servers. But not so much about reducing, as this seems to be unusual…
Also considering that the planned change would be within the minimum number requirement: 2.1 Restrictions for Capacity-On-Demand on Oracle Exadata Database Machine.
Reviewing on MOS, we found the When Attempting to Change the Number of Cores, Errors With: DBM-10004 – Decreasing the Number of Active Cores is not Supported ( Doc ID 2177634.1 ), pointing to use the clause “FORCE” on “ALTER DBSERVER pendingCoreCount =x” command.
And this worked. I just disabled the iaasMode to play safe. Have a look:
[root@grepora01~]# dbmcli DBMCLI: Release - Production on Mon Jan 05 01:10:12 EEST 2019 Copyright (c) 2007, 2014, Oracle. All rights reserved. DBMCLI> LIST DBSERVER attributes coreCount 36/44 DBMCLI> ALTER DBSERVER pendingCoreCount = 24 force DBM-10022: At least 26 physical cores need to be active in order to support IaaS. DBMCLI> ALTER DBSERVER iaasMode = "off" DBServer exadb01 successfully altered DBMCLI> ALTER DBSERVER pendingCoreCount = 24 force DBServer grepora01 successfully altered. Please reboot the system to make the new pendingCoreCount effective. DBMCLI> LIST DBSERVER attributes pendingCoreCount 24/44
–> Restart the server
After restarting, it should look like:
DBMCLI> LIST DBSERVER attributes coreCount 24/44 DBMCLI> LIST DBSERVER attributes pendingCoreCount
Hope this helps!