Yes, these are common reasons (see also this if you have not already done so).
Given that you are using two different environments (dev / prod), have you confirmed that the MAXCURSOR parameter is the same (or that Prod MAXCURSOR> Dev MAXCURSOR)?
You should also examine your batch process and see if the amount of data can cause your process to open more cursor in prod. Example: your batch runs a stored procedure for each department code in the partition table, and each instance of this procedure opens N cursors.
If you have - say - 3 off. codes in dev, because this is enough for your tests, and 34 department codes in Prod, you can use the cursor 10 times and get into the same situation ...
source share