During preparation for a client’s datacenter migration, we decided to move services one-by-one to the datacenter / hardware in order to keep the scope of changes controlled. To accomplish this, we also needed to resize the CPU count of Exadata servers to better attend accommodating services and also keep licensing compliant. In this scenario, one of the steps would be increasing CPUs in the new datacenter and, on the same proportion, reduce CPU counts in the old hardware.
Checking for the steps to accomplish that, however, we found references to change CPU and core count, but always described for increasing allocation, as per 2.7 Increasing the Number of Active Cores on Database Servers. Not much about reducing. I understand it can be a bit unusual, but in our case, it is perfectly reasonable. Also, consider that the planned change would be within the minimum number requirement: 2.1 Restrictions for Capacity-On-Demand on Oracle Exadata Database Machine.
When 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 out that this procedure was actually not supported. The same doc, however, points to the use of clause “FORCE” on “ALTER DBSERVER pendingCoreCount =x” command as a solution. After confirming the procedure with an SR, we did indeed proceed with this.
The only observation here goes to the disabling the iaasMode to play it safe and avoid the issue described as per MOS Exadata X6 Machine Is Not Showing Increased Corecount Value (Doc ID 2269705.1). Check the complete procedure below:
[[email protected]~]# dbmcli DBMCLI: Release - Production on Mon Sep 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 server01 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!