Oracle XE 11g on Ubuntu 12.04 using Vagrant
This project was created based on the information in Installing Oracle 11g R2 Express Edition on Ubuntu 64-bit by Manish Raj, and the GitHub repository vagrant-oracle-xe by Stefan Glase. The former explains how to install Oracle XE 11g on Ubuntu 12.04, without explicitly providing a Vagrant or provisioner configuration. The latter has the same purpose as this project but uses Ubuntu 11.10.
Thanks to André Kelpe, Brandon Gresham, Charles Walker, Chris Thompson, Jeff Caddel, Joe FitzGerald, Justin Harringa, Mark Crossfield, Matthew Buckett, Richard Kolb, and Steven Hsu for various contributions.
- You need to have Vagrant installed.
- The host machine probably needs at least 4 GB of RAM (I have only tested 8 GB of RAM).
- As Oracle 11g XE is only available for 64-bit machines at the moment, the host machine needs to have a 64-bit architecture.
- You may need to enable virtualization manually.
Check out this project:
git clone https://github.com/hilverd/vagrant-ubuntu-oracle-xe.git
vagrant plugin install vagrant-vbguest
Download Oracle Database 11g Express Edition for Linux x64. Place the file
oracle-xe-11.2.0-1.0.x86_64.rpm.zipin the directory
modules/oracle/filesof this project. (Alternatively, you could keep the zip file in some other location and make a hard link to it from
Optional: To get Flyway integration, download
ojdbc6.jarfor JDK 1.6 from Oracle Database 11g Release 2 18.104.22.168 JDBC Drivers, and place it in the directory
oracle-jdbcof this project.
Migrations are in
data-with-flyway/README.mdfor more instructions. Many thanks to Nicholas Blair for contributing this feature.
vagrant upfrom the base directory of this project. The first time this will take a while – up to 30 minutes on my machine. Please note that building the VM involves downloading an Ubuntu 12.04 base box which is 323MB in size.
These steps are also shown in an asciicast made by Daekwon Kang:
You should now be able to
the new database at
system with password
manager. For example, if you
sqlplus installed on the host machine you can do
sqlplus system/[email protected]//localhost:1521/XE
To make sqlplus behave like other tools (history, arrow keys etc.) you can do this:
rlwrap sqlplus system/[email protected]//localhost:1521/XE
You might need to add an entry to your
tnsnames.ora file first:
XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
Errors when Unzipping
If you get an error containing
/usr/bin/unzip -o oracle-xe-11.2.0-1.0.x86_64.rpm.zip returned 2 during
vagrant up, then the zip file you have downloaded is probably corrupted. This can be fixed by re-downloading, replacing the corrupted file, and running
vagrant reload --provision.
It is important to assign enough memory to the virtual machine, otherwise you will get an error
ORA-00845: MEMORY_TARGET not supported on this system
during the configuration stage. In the
Vagrantfile 512 MB is assigned. Lower values may also work,
as long as (I believe) 2 GB of virtual memory is available for Oracle, swap is included in this
If you want to raise the limit of the number of concurrent connections, say to 200, then according to How many connections can Oracle Express Edition (XE) handle? you should run
ALTER SYSTEM SET processes=200 scope=spfile
and restart the database.
You may also want to consider a Docker-based solution such as docker-oracle-xe-11g.