The first thing that comes to mind in your case, since you are using a VM, is the VMs own network settings, depending on the VM program you are using these might change, but AFAIK in VirtualBox the default is to have the VM inside a NAT, and so unable to "see or be seen" by the remaining machines on your network.
You can check this by simply trying to ping the database system from the VM, if the network settings of the VM are preventing you from reaching the database it should not even ping, if this is the case then you should configure your VM network settings to allow the VM to "see" the database.
It sounds as if you might have tried all these, but just to check...
Can you ping the database server by name and IP address?
Can you telnet to the database server on port 1521 (or whatever port the listener is configured for)(telnet server 1521).
If you have an oracle client installation can you tnsping the datatbase?
What is port and address is the listener actually listening on? On the db server type lsnrctl status