ASHMON on 64bit Oracle 11gR2
It’s been years since I’ve changed any ASHMON code though I have used ASHMON whenever I didn’t have access to DB Optimizer or when I wanted to specifically access v$active_session_history graphically. Yesterday, though, I just got a new laptop that is 64bit and I couldn’t get ASHMON to run! So after only sleeping 4 hours last night I finally got it to run. (a lot of time was just getting Oracle to install which is a separate story – suffice it to say the 11gR2 full database download installed where as the 11gR2 client gave an error that main wasn’t found).
The fix to make ASHMON run on 64 bit turns out to be pretty easy. To make ASHMON run on 64bit requires two 32bit dlls as well as forcing TNS_ADMIN to the directory with the tnsnames.ora (unfortunately oratcl doesn’t seem to accept explicit database addresses , ie name:port:sid, that could bypass the tnsnames.ora) ASHMON for some reason wasn’t picking up the tnsnames.ora in the Oracle 11gR2 directory. I could have forced ASHMON to use the Oracle 11 tnsnames.ora with TNS_ADMIN but figured it was easier to just point ASHMON to a tnsnames in the ASHMON install with TNS_ADMIN. You can edit ashmon/funcs/begin.tcl to change TNS_ADMIN to point to a different tnsnames.ora.
I have now made a new compressed file of ASHMON including the two dlls, oci.dll and oraocius10.dll, as well as changing the variables ORACLE_HOME and TNS_NAMES to point to ./ashmon and ./ashmon/network/admin respectively.
Here is the new “rar” file (I don’t have gzip on my new laptop so just downloaded rar)
This version of ASHMON should run on any windows box within reason. The only “gotcha” is that you have to edit the tnsnames.ora file in the ./ashmon/network/admin to add your targets.