tl;dr Your OS X applications can connect to Oracle Database as if
it was running natively on OS X if you simply run Oracle Database in a
VirtualBox VM with port forwarding enabled (easy).
To work backwards through the installation process: in the Network
window of the VirtualBox GUI, I enable a NAT Network adapter.
Then, under Networking -> Advanced -> Port
Forwarding, I create a TCP rule with Host IP
127.0.0.1 and both the Host and Guest Port fields set to
the port number that the Oracle network listener in the VM is using:
the Oracle default is
1521. I leave the Guest IP field
I click OK twice, dismissing the "The current port forwarding rules
are not valid. None of the host or guest port values may be set to
Start the VM. If the DB is set to start during OS boot, you don't
even need to log in.
Update: If you have Oracle Database 12c you can use the new EM Express console for DB management and monitoring. Just enable port forwarding for port 5500 and then browse (from OS X) to https://localhost:5500/em. See this article by Gerald Venzl.
Update: If you want to access the database from a second, NAT-configured VM, simply configure the DB VM's port forwarding as described in this article. In your second VM, use an Oracle connect string like "10.0.2.2/orcl". The IP address to use is the VirtualBox gateway, see Configuring the address of a NAT network interface in the VIrtualBox documentation.
Connecting to the database from OS X tools and clients uses the
same forms of Oracle connect string as if the database was native on
OS X. For example, using the "Easy Connect"
hostname/service_name form, I can
simply use 'localhost' as if the database was on OS X:
cjones@mac:~$ sqlplus cj/welcome@localhost/orcl
SQL*Plus: Release 220.127.116.11.0 Production on Mon Jan 19 09:20:38 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Oracle Database 12c Enterprise Edition Release 18.104.22.168.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Here I was using SQL*Plus from the free, easy to install Instant
Client bundle. Download the Oracle Instant Client Basic, SDK and SQL*Plus ZIP files. Unzip
them, create the two symbolic links given in the install instructions, and set DYLD_LIBRARY_PATH to the Instant
The Instant Client can be used, among other things, for building
PHP, Python, Node.js and other language drivers. With each of these
you would use exactly the same connect string to connect to the
There are prebuilt VMs with Oracle Database already installed, such
as the Database App Development VM. Download and import it into
It's easy to install your own Oracle Database "XE" Express Edition database for development.
After the XE RPM is installed on Oracle Linux 5 and 6, run its simple
configuration script to set up the administration passwords, the
listener port (default is 1521), and whether to autostart during boot.
Install XE by following the ten steps in Chapter 4 of The Underground PHP and Oracle Manual or check the official instructions.
Alternately you could install the Enterprise Edition for free ("only for the purpose of developing,
testing, prototyping, and demonstrating" - read the click-through
license). There are various scripts on the web to autostart the DB at VM machine boot.
If you need an OS, Oracle Linux is free from our yum server.
Download the ISO, create a new VirtualBox VM and tell it where to find
the ISO. Boot and follow the install prompts.
VirtualBox is free from VirtualBox.org and runs on OS X, Windows, Linux and Solaris.
The only "trick" to using VirtualBox is to remember the magic
cursor-releasing key, e.g. the Left Command Key on OS X. This key is
useful if/when you haven't installed the VirtualBox "Guest Additions"
into the VM and clicking into the VM window captures the cursor. The
specific key combination is shown as a reminder on the bottom right of
the containing VirtualBox VM window. Pressing it returns cursor
control to the host OS. Luckily, once you install the "Guest
Additions" the cursor is automatically released when you mouse out of
the VM window.