You are in good shape.
With free=231,012 plus cache=6,164,504, you actually have 6,395,516 bytes of real memory available for any process that needs it.
So is the database server releasing the memory so that the oracle app can reclaim it, while the tomcat server is not releasing the memory because there is nothing sitting around waiting to use it?
This is essentially correct, but better stated "The oracle app had a need for real page frames, so the kernel trimmed back the page cache to accommodate it; while the tomcat server has not had a need yet, so the kernel has not trimmed the cache back."
When the tomcat server has a need for more real memory there should be roughly 6GB available for it to take.
I'm almost reluctant to include this, but just so you have a more complete picture - but advising you NOT to do anything based on this information:
In the newest kernels, there is something new called "swappiness" that indirectly determines how much the cache will be trimmed back (you can google it), but I wouldn't play with any tuning parameters unless you absolutely had too.
I repeat. You can tune your system to run better under a specific set of circumstances, and destroy performance under average conditions. Plus you now have to spend all of your time with the care and feeding of this specialized system. So I, personally would not tamper with the defaults. Not preaching, just my $.02.