Using full desktop AutoCAD as a non-user-interactive server app is problematic, to say the least. Especially your code try to use the same instance of AutoCAD session (the code first tries to find existing AutoCAd session, and only start a new session of no existing one is obtained), which is particular bad practice when using AutoCAD as "server" (plus, multiple SendCommand() calls that could be executed out of sync makes thing even worse). Even you can claim it had worked for quite a while, it was mostly out of good luck (low work load), IMO.
If you have to use AutoCAD as server, it would be better to start a new AutoCAD session, build one drawing and then close the AutoCAD session. Just imagine, when drawing building is in progress, and since the process need to get data from somewhere (Oracle DB, as you mentioned) outside the process, and you never know what could happen and the process has to wait the data come back. So, the drawing building process could be long or short. If then a nother request comes in and you code luckily find the existing AutoCAD session and tries to hold it for new request while the existing AutoCAd session is still working on previous request... Your app now may be in a "dead lock" state.
Depending on your workload, running multiple AutoCAD session in the same computer may also be problematic, of course, because AutoCAd desktop app is such a "resouces" hangry beast.
You should consider to use AutoCAD console for this type of work instead of full AutoCAD.