If you want to get your hands dirty with Oracle database, the first thing you have to do is build a system that actually runs Oracle database. Unless you have done that several times before, chances are that this will take considerable time spent on trial-and-error, several reinstalls, fixing install problems and dependencies and so on. The time it takes for someone who is reasonably experienced on Linux, but has no prior Oracle knowledge, would probably range from a full working day (8 hours, best case) to many days. I also have witnessed people actually giving up.
Even for experienced users, doing the whole process manually over and over again is very time consuming, and deploying five or more systems by hand is a guarantee that each one of them is slightly different – and thus a candidate for subtle problems that happen on one but not the others. Virtualization and consolidation is all about consistency and making many components as if they were only one.
There are literally dozens of web pages (such as blog posts) that contain detailed instructions on how to set up Oracle on a certain platform. Some examples:
The Gruff DBA – Oracle 12cR1 22.214.171.124 2-node RAC on CentOS 6.4 on VMware Workstation 9 – Introduction
Pythian – How to Install Oracle 12c RAC: A Step-by-Step Guide
Martin Bach – Installing Oracle 126.96.36.199 RAC on Oracle Linux 7-part 1
Even if you follow the guidelines in such articles, you are likely to run into problems due to running a different OS, different Oracle version, network problems, and so on. Not to mention that in many cases the “best practices” provided by various vendors are often not honoured because they tend to be overlooked due to information overload…
Some people have hinted to use automated deployment tools such as Ansible (i.e. Frits Hoogland – Using Ansible for executing Oracle DBA tasks) but there are (as far as I know) no complete out-of-the-box solutions.
EMC has published several white papers and reference architectures with instructions on how to set up Oracle to run best on EMC. Still, some of the papers are not a step-by-step manual so you have to extract configuration details manually from various (sometimes conflicting) sources and convert them in configuration file entries, commands, etc.
So I decided a while ago to go for a different approach, and build a virtual appliance that does all of these things for you while still offering (limited) flexibility in different platform and versions, and preferences for configuration.
You may wonder why I would not just build a pre-installed VM image, OVF template or something similar. There are several limitations with that approach:
- Supports a limited number of hypervisors only (forget even about deploying physical)
- The image tends to grow fairly large (30GiB easily) so it’s not well suited for internet distribution
- A pre-configured image does not allow you to change certain things easily (such as the OS distro or the storage layout)
- Updates would become a nightmare
- The image needs to have Oracle pre-installed which leads to severe copyright issues. Also you can only have one version with one set of deployment options
So why CentOS?
- Only “Enterprise Linux” distro with a “minimal” install ISO (roughly 500MiB, Outrun is slightly larger, ~ 550 MiB)
- 100% free including updates, no registration required
- 100% compatible with Red Hat or Oracle Enterprise Linux
On top of CentOS I use a pre-configured “kickstart” configuration file, plus “squashfs” images that have all the required packages embedded. During the kickstart install I preload a “bootstrap” RPM which kicks off the postinstallation phase after first boot. The rest is handled by a collection of Linux scripts, Dialog menus (sorry for being ugly but it works and is fairly simple) and pre-set configuration files – all provided via RPM/YUM repositories (local and web-based for updates).
The initial version (0.1) was nothing more than a CentOS ISO image with a “magicinstall” script that would do all configuration steps completely automatic. Of course this approach is pretty limited and I started adding menus, profiles, support packages and more. Later I added a few well-known performance testing tools, most notably SLOB and Swingbench, as well as IORate (a raw IO generator tool) and support for PXE booting.
I now reached a public beta version (0.9) which is still under construction but feel free to give it a shot and let me know what you think. I named it “Outrun for Oracle” or simply “Outrun” – inspired by the eighties racing game Out Run and the primary use case (performance testing).
out·run verb \ˌau̇t-ˈrən\
: to run or move faster than (someone or something)
: to be or become more or greater than (something)
Happy racing !
- Training tool for people learning Oracle
- Performance testing tool (using pre-configured test kits i.e. SLOB and Swingbench)
- Deployment tool for staging VMware environments (Database-as-a-Service) – ultimately for production systems (future)
More on the requirements can be found on the wiki – but one thing is especially important. Oracle Database is not Open Source or Freeware (far from, actually) so it is NOT included with this software. You need to download Oracle installer ZIP files yourself and use the Outrun system to prepare an installer ISO image. Instructions on the Wiki but note that downloading requires a valid userid on Oracle Support.
Apart from that – Outrun runs on anything from a VMware workstation (1 CPU, 4GB memory, 20GB bootdisk) to a heavy system (any # of CPU, any memory size) as long as it’s x86-64 and fairly common (emulated) hardware such as usual SCSI disks (no pvscsi), an Ethernet card that shows as eth0, etc. Physical installs should work via PXE installs (mileage may vary).
Required skill level – You need to be a bit familiar with VMware and Linux. For Outrun to be useful, Oracle knowledge is also required, however, Outrun itself can be used as an Oracle Database training tool. You definitely don’t need any Oracle skills to get a database installed.
- Distributed as CentOS but capable of staging Oracle Enterprise Linux or Red Hat Enterprise Linux as well (versions 6.3 – 6.6)
- 100% Open Source (source packages are available) with the exception of some non-OSS freeware
- No dependency on 3rd party tools (such as Ansible or Puppet) to configure – everything is Linux based and included.
- Based on Oracle ASM but without ASMLib (it uses asmdisks for storage management)
- Supports Oracle 11g and 12c (including limited Pluggable Database support) – Enterprise Edition only (for now)
- Supports “strange” networks (i.e. without proper DNS services, frequently changing DHCP IP addresses and/or hostnames, behind NAT, or completely without internet connectivity – as seen on VMware Workstation, corporate test/demo networks, during POCs etc)
- Sets up Enterprise manager DBconsole (11g only as Oracle no longer includes this with 12c)
- Single Instance only for now (RAC is on my to-do list)
- Database creation templates with pre-configured settings such as memory sizing and tuning parameters for certain platforms (i.e. EMC XtremIO)
- 100% based on RPM packages and YUM repositories – so updates and additional packages are installed via one YUM command
- Includes configuration packages for DNS services, TFTP, DHCP etc so Outrun can be used as a PXE install server for deploying many database hosts (Database-as-a-Service)
- Dynamic memory tuning (no manual messing with sysctl.conf and /etc/security/limits/…)
- SLOB pre-built and configured (as RPM packages)
- Swingbench pre-configured (as RPM packages)
- IOrate pre-configured (as RPM packages)
- SQLPlus script base for common tasks such as creating tablespaces, setting up hugepages, etc
- Embedded FTP server for uploading/downloading stuff like Oracle binaries, manuals, templates etc.
- The manual is written as Wiki and available on the web – allowing for future community members to help documenting and developing
- Etc. etc.
More on the background of Outrun: Outrun Wiki – Outrun Background
Outrun home page
Outrun is hosted on a separate website (Outrun Home) where you can find the Wikified documentation as well as the YUM repositories and installation images.
For now, I’m the only author but it is my intention to build an active Open Source development community. If you’re interested in helping to further evolve Outrun, or you want to have your scripts or tools included, let me know!