I've never used the LogOn/OffServer method for that reason. According to the Help files, the connection should also close when the CRAXDRT.Application object is destroyed, so perhaps you could also attempt to solve your current problem be destoying the Application object after each report run. Of course, you'd also need to change up your code a bit to reinstantiate the Application object every time you're going to load a report.
I don't use Oracle, but I've created many applications integrating with CR, and have always had success with SetLogOnInfo.
-dave