How can I allow an Oracle database to be accessed remotely?
Oracle is an enterprise database server so you shouldnt need any strange setup to get it working, just the correct configuration on the DB server or client will be enough.

When you get connection errors, i suggest first ensuring that the client machine can ping the database server where  is the name or ip address - try both as it's possible the name may not be configured in the hosts file of the client machine. (Note that ping may be disabled due to security but if you get a reply back, you know the connection is good.A non reply may not mean the network is missing but you can try to ssh or telnet to the dbhost from the client machine as an alternative)

 unix&gt; ping &lt;dbhost&gt;


Once you have confirmed the client machine can see the db server, you can check the configuration on the DB server.

On the DB server, if you connect with the following, you are connecting directly to the database without using TNS. 

 unix&gt; sqlplus user/pass 


If you connect instead with 

 unix&gt; sqlplus user/pass@ORACLE_SID


where ORACLE_SID is the identifier of the database, you will be using TNS, the same as your client machine.  If this doesnt work locally, then it's also not going to work on the remote machine.

Check the listener is running

 unix&gt; lsnrctl status


and if it's not, start it as the oracle user

 unix&gt; lsnrctl start


and try again to connect using user/pass@ORACLE_SID

If this connects OK, then check your JDBC configuration to ensure you have specified the connection string correctly.

see http://javaeesupportpatterns.blogspot.de/2011/08/network-adapter-could-not-establish.html for assistance with the correct jdbc connection string.