I'd suggest taking to a GM specialist or a diagnostic specialist if you can find one. But one odd thing that could be a factor is a faulty thermostat preventing the engine from getting fully warmed up. It'd be a good idea to check the running temperature on a 'scanner,' reading engine data from the computer while driving to see if the engine's reaching running temperature.
Disconnecting the battery won't solve anything. All the monitors will have to reset (ready) so that won't do you any good. Many years ago you could DC the battery and lose learned data, shutting off the check engine light and restoring defaults, but that's not the case in a modern car. Wouldn't fix anything either.
Here's a directory link for you:
https://repairpal.com/directory?address=76137&car_brand_n...