I solved my issue, after roughly 6 or 7 hours wasted.
Thanks to this post:
Virtualbox "port forward" from Guest to Host
And specifically to the comment from @Nicholas which made me realize that I had deactivated my Mac's firewall, but not the firewall in the guest OS. Turning that off made everything work suddenly.
I suppose that the default configuration of the guest OS's firewall did allow for SSH on port 2222, as that worked fine even with the firewall in place, which served to mislead me into thinking that there was something wrong with my database driver or connection.
Hopefully this will benefit posterity.
EDIT:
As @HarpreetDawar mentions, the correct connection string to access the database is:
jdbc:oracle:thin:@localhost:1521/PDB1
The one that I was using, ending in :orcl
instead of /PDB1
, connects to the "container database". I don't fully understand Oracle 12c and the "pluggable database" implementation, but the rough idea is that you can have multiple databases within a single one, and you can turn them on and off by plugging/unplugging them. Hence, "PDB1", Pluggable Database 1.
If you connect to the Container, you will find that you are unable to create a new User/Schema without prefixing it with "C##", which is a tad awkward. That's because the Container is not meant to be used as a normal DB. You connect to the Container to plug/unplug the pluggable dbs (and other things, no doubt).
So if you want to connect to the Container, use a colon and the "SID" (orcl in the VM) in the connection string, and if you want to connect to a Pluggable, use a forward slash and the "Service Name" (PDB1 in the VM) in the connection string.
Anyway, this is additional data that I learned after solving my original problem.
One more thing! A note on port forwarding.
Let's say you now have your VM up and running, and you can connect to your Oracle DB properly, etc. But you have a friend who wants to use the DB with you? Well, that's easy. He should just use the same connection string, with your IP address instead of localhost, and the port forwarding that you set up in VirtualBox should send his connection (using port 1521) straight into your VM. Right?
Well, if you set up your Port Forwarding as From: 127.0.0.1
, it won't work, because your buddy's connection is going to your external IP address. So add an additional port forwarding setting, from your external IP address to your VM. Then it will work great!
-Matt
Best Answer
You need Progress SQL92 Client Access, Mac is unsupported, RedHat, SuSe and several flavours of Unix are.
See Progress Version 9 product availability matrix, look for ODBC and JDBC.
As far as I know there are only two companies in the world that produce ODBC/JDBB connectivity drivers for Progress DB: OpenLink and DataDirect (now acquired by Progress).
Another way is to connect using Progress AppServer, then you'd be able to run Progress 4GL (or ABL - Advanced Business Language) queries/logic on AppServer and output resulting datasets to Java.
The third way is to migrate the data (if this is an option).
Other options include exposing DB via WebSpeed (web application server) or using sockets, files, getting OpenEdge and exposing the data through 4GL web services etc. This will really depend on your data access needs. However all of these methods are non-trivial and require Progress platform and 4GL expertise.