The OpenACS request processor normally allocates at least one db
handle in order to do authentication checks and the like, no? So my
guess is that it is still holding that handle at the time you try to
allocate another from the same pool, which of course breaks, as
AOLserver does not allow that.
Note there is no particular reason to do that sort of check in a conn
thread, did you try it from the scheduler thread instead? You can run
that internally on the AOLserver, there is no need to have a separate
keepalive server hitting a Tcl page to do the same thing.
Even better might be to also have AOLserver directly monitor an open
TCP/IP connection to the remote Oracle server, and somehow get
immediate notification when the network flakes out, although I don't
know if that's feasible.
Clearly what you really want for this client is to fix AOLserver so
that it can re-connect to Oracle without restarting AOLserver. Many
people have wanted that over the years, but in normal use you almost
never really need it so AFAIK no one actually implemented the feature.
(I won't ask why this client insists on keeping their main OpenACS
database instance on the other side of a flaky network... which seems
insane.)