Build your own RAC (10gR2/iSCSI/Linux)

Posted at Monday, September 24, 2007
I have had a lot of homemade Oracle RAC installations over the years. In my latest build, I decided to try the iSCSI route suggested in Jeffrey Hunter's latest Build Your Own RAC (iSCSI) article.

In the past, I had used the ever popular dual-login firewire drive. I was hoping that this time, the use of a NAS-like appliance and a newer version of Oracle's Clustered File System would result in a more stable configuration. This configuration has turned out, in fact, to be remarkably stable - orders of magnitude more so than any prior combination I have employed.

In terms of cost, I was able to keep the price tab under 2K. In terms of hardware, I used exclusively refurbished Dell Optiplex gear (a great value): 2-GX520(P4-3000) desktops w/ 2GB RAM (for the RAC nodes) and 1-GX745(Core Duo 1860) desktop w/ 2GB RAM for the Openfiler appliance. I used exclusively Intel Gigabit, low-profile NICs as well as 2-Netgear Gigabit 5-port switches.

Here are front and rear pictures of my RAC:




In terms of software, I used Oracle's Enterprise Linux distribution Release 4 Update 5, which required no additional packages and/or updates, besides the OCFS packages described in Hunter's article.

I deviated from the aforementioned article in the following ways:

  • I don't particularly enjoy ASM and or using the ASMLib to handle the storage. For a home RAC, I think using a clustered file system - in this case OCFS2 - is more appropriate, so the entire database is on filesystems mounted under the ocfs2 type.

  • On the Openfiler server, I installed a large drive and simply carved it up, using it for the Volume/Volume Groups mounted by the RAC nodes.

In my opinion, this is a must-have for any career Oracle DBA.

Here are the final configuration files from each node:

rac1.tar | rac2.tar

For example:

# tar -tf rac2.tar
etc/resolv.conf
etc/sysctl.conf
home/oracle/.bash_profile
etc/oratab
etc/iscsi-map.sh
etc/fstab
etc/profile
etc/csh.login
etc/rc.d/rc.local
etc/oraInst.loc
etc/hosts.equiv
u02/oracle/ora1/em/spfileem.ora
u02/oracle/ora1/em/orapwem
u02/oracle/ora1/em/tnsnames.ora
u02/oracle/ora1/em/listener.ora.rac1
u02/oracle/ora1/em/listener.ora.rac2
etc/iscsi.conf
u02/oracle/logs/em/scripts/cloneDBCreation.sql
u02/oracle/logs/em/scripts/CloneRmanRestore.sql
u02/oracle/logs/em/scripts/CreateClustDBViews.sql
u02/oracle/logs/em/scripts/em1.sql
u02/oracle/logs/em/scripts/postDBCreation.sql
u02/oracle/logs/em/scripts/postScripts.sql
u02/oracle/logs/em/scripts/rmanRestoreDatafiles.sql
u02/oracle/logs/em/scripts/initemTemp.ora
u02/oracle/logs/em/scripts/init.ora
u02/oracle/logs/em/scripts/em1.sh


Labels: