Tag Archives: linux

On Oracles commitment to Linux

Oracle prides itself on its strong support and commitment to Linux. On a webpage at Oracle’s site entitled Oracle’s Technical Contributions to Linux”

Oracle waxes eloquently on Oracle’s support, commitment and leadership for Linux. The paragraphs describe Oracle’s “long history of strong support and commitment to Linux, as evidenced by numerous, on-going technical contributions to the Linux community.”

The page then states that “Oracle continues to strengthen its involvement in the Linux community by providing enhancements that facilitate the development and deployment of enterprise Linux solutions. By developing enhanced capabilities and contributing code, Oracle’s Linux engineering teams continue to make the Linux experience better for all.”

Finally, the page lists a variety of projects and contributions where Oracle is involved. Very impressive stuff and I applaud Oracle for their contributions.

Ksplice is an extension of the Linux kernel which allows you to apply security patches to a running kernel without having to reboot the operating system. What’s the point in having a highly redundant clustered database that never needs to go down if it’s running on an operating system with a security hole that requires a reboot to patch? I highly recommend you read the wikipedia article I linked to above to read up how Ksplice works – it’s very cool.

From its founding in 2008 thru July 20th, 2011, Ksplice, Inc. the company that developed the Ksplice technology, provided prebuilt and tested updates for RedHat, CentOS, SuSE Enterprise Linux and other linux distributions – though not Oracle Linux.

On July 21st, 2011, support for RedHat Enterprise Linux and SuSE Enterprise Linux was dropped. It was announced that going forward this would be a feature only on Oracle Linux to customers who pay for premier support and only then when running Oracle Unbreakable Enterprise Kernel (UEK).

What happened on July 21st to cause Ksplice to drop the most popular enterprise linux distributions?

On July 21st, 2011, Oracle completed its acquisition of Ksplice, Inc.

[update] I also saw this tweet by ORCL_Linux, Oracle’s official twitter account for it’s Linux group:
“#Oracle Buys Ksplice…makes Oracle #Linux the ONLY OS with zero downtime patching bit.ly/qCZTBq ”

Choosing the right input output scheduler for Oracle on Linux

As I’ve wrote about before, having an understanding of the stack of software and hardware you are running workloads on is critical to getting the best performance out of your environment.

In all Linuxes (SuSE, RHEL, OL) for which Oracle supports running Oracle database, the kernel is responsible for scheduling the I/O in the system. There are multiple schedulers built into the kernel to allow you to choose the best scheduler for your disk I/O profile. For example, a database server is going to have a much different disk I/O profile than a webserver.

As you can read in this 2005 article from RedHat on RHEL 4 or this last revised 2008 pdf, there are significant benefits to be gained for your OLTP database server by changing your I/O scheduler from the default cfq (Completely Fair Queuing) to “deadline”. Deadline scheduler attempts to reduce latency of any given single I/O by waiting as long as possible before writing buffers to disk.

It’s interesting to note that, according to the Oracle Linux 6 release notes, Oracle’s Unbreakable Linux (UEK) kernel uses the deadline scheduler. Compare this with RedHat’s kernel which uses cfq by default. I wonder how much of Oracle’s performance improvements supposedly from UEK are actually from using a more appropriate scheduler for typical database workloads? I also wonder if deadline would be the right choice for Exadata, which uses UEK, since it has SAN type storage built in.

So the answer here is always use deadline scheduler, right?

Not so fast. What if I’ve virtualized my database and I’m running it under VMware or on a Storage Area Network (SAN)? VMware has designed vSphere as an Operating System (OS) optimized to run other OSes. You can find a fascinating thread on quora about vSphere and how it compares to other OSes.

Is deadline still most likely the best choice?

No. Even as of May 2010 in this paper from VMware on Oracle Databases on vSphere 4, there is NO mention of what scheduler to use.

So, as always, you should be diligent and work with your system administrators to test out what works best in your environment. Having said that, based on my experience and that of others, I typically set the scheduler to noop (No Operations) on all my linux VMs, regardless of if they are running Oracle or not.

Webinars of interest to Oracle Apps DBAs on RedHat Linux with VMware

So recently I’ve been getting notifications about a number of various interesting Webinars. Since they’re coming from all sorts of random sources, I’m sharing the links as a service to my readers.

I’m receiving no consideration or such from the companies mentioned, these are things I thought would be of interest to me, and perhaps my readers

Upcoming (all dates / times are based on Central US time zone)

Get The Facts: Oracle’s Unbreakable Enterprise Kernel for Linux Oct 26th 11am, put on by Oracle

EBS Workflow Purging – Best Practices Nov 10th 11am, put on by Oracle

How to use My Oracle Support for ATG issues Oct 27th 11am, put on by Oracle

E-Business Suite using a DB-Tier with RAC Oct 28th 11am, put on by Oracle

Top 10 Virtual Storage Mistakes Oct 28th 1pm, put on by Quest Software

On-Demand (already happened)

Oracle Virtualization Webcast put on by Embarcadero and VMware

RHCE Virtual Loopback: Unlocking the value of the Cloud put on by RedHat (pdf)

RHCE Virtual Loopback: Performance and Scalability RHEL5 -> RHEL6 put on by RedHat (pdf)

Managing Red Hat Enterprise Linux in an Increasingly Virtual World put on by RedHat

State of “Btrfs” File System for Linux put on by Oracle

Lower Your Storage Costs with Oracle Database 11g and Compression put on by Oracle

Linux Configuration and Diagnostic Tips & Tricks put on by Oracle

Feel free to share any other Seminars you think may be of use in the comments!

Kicking the tires on the CloudShare cloud

I’m extremely lucky as an Oracle Apps DBA – I’ve got literally tons of hardware for me to experiment and play on to learn.   

But not everyone has hardware and software lying around and the time and ability to set it up. I may know my way around Oracle and RedHat Linux, but setup Windows with SQL Server? Active Directory? Sharepoint? Not a chance. That’s what my (very nice and understanding) Windows Administrator coworkers are the experts in. But I came across a way to create a prebuilt environment with all this and more, for free.

Recently I stumbled across CloudShare and their free Pro offering. This isn’t a sales pitch, I promise.

Right now they are in public beta and while it is in public beta, it’s free to use. All you need to sign up is to provide your name and an email address.

With the free account you can create an environment of up to 6 VMs (Linux or Windows) at a time based on the available templates:

Xubuntu 8.04 Desktop

Windows XP With Office 2007

Windows XP Professional

Windows XP Pro with Office 2010

Windows Server 2008 Enterprise Edition x64

Windows Server 2008 Enterprise

Windows Server 2003 R2 Enterprise Edition

Windows 7 Pro

Windows 2008 with SQL Server 2008

Windows 2008 with Microsoft CRM Dynamics

Windows 2008 with Active Directory

Windows 2003 with Sharepoint 2007

Windows 2003 R2 with Oracle 11g

Ubuntu 8.04 Desktop

CentOS 5 With RubyOnRails

CentOS 5 with MySQL

CentOS 5 with KDE

CentOS 5

Sure the machines aren’t the most powerful things out there, but that’s not the point. You want to go through an Oracle install? Go for it. Want to kick the tires on Windows 7 without buying it? 5 minutes and you’re up and running. Want to mess with Sharepoint or Active Directory but avoid all those downloads, installs and configuration? Poof – done. Want to setup a 6 VM environment and share it with friends over the internet? Done.

It’s actually pretty cool.

There’s one feature they have that I especially like: FastUpload functionality. With this you download one of their existing templates (which are good for 90 days), fire it up with VMware Workstation, and make whatever changes you want and then you can upload your VM back to their servers. The magic of this is it doesn’t re-upload the whole VM (Gigabytes and gigabytes of data), but just the changed blocks.

How cool is that? Short of having friends in the know, this is the only legal way I know of to download a prebuilt Windows VM (please note you should have your own Microsoft licenses) and be able to check it in after configuring it just so.

So now you’ve made this super cool environment and want to share it with your friends – you can send them an invitation to use your environment. You can send 10 invitations each month. When your friend opens their invitation, they see the last snapshot of your environment and can make whatever changes they want, without it effecting your original. Your friend can decide to take ownership of the environment and then they become authors of the copy for as long as they want. Think linked clones in VMware speak.

So while your VM is in CloudShare’s cloud, how do you access it? It’s got a External address ( XXXXXXXX.env.cloudshare.com ) so you can access it from anywhere on the Internet and also an Internal IP so it can see the other VMs in your environment. Want to RDP to your private Windows XP Pro with Office 2010 box from your iPhone to open a document in your email? Go for it. Their platform supports http/https, ssh, RDP and any fat client that uses public IPs.

I spent a couple hours messing around in my environment this past weekend and setup an Oracle 11gR1 database on a windows box, downloaded some evaluation software from Oracle and setup a little client server environment involving 3 boxes. I was able to upgrade the Centos box (it was Centos 5.4 – latest is 5.5), and get it configured to talk to my Oracle server.

CloudShare has some big Partners , notably to most of my readers, VMware. There’s even a quote from Paul Maritz (President and CEO of VMware) on the Partners page: “We see the CloudShare platform as an attractive technology that strengthens, supports and extends our ecosystem.”

VMware Knowledge base entries of interest for Oracle DBAs

One of the things I love about VMware’s support site is their knowledge base. It’s not horrific flash like My Oracle Support (aka Metalink), and it’s freely searchable without a support contract. Also very cool is there is an RSS feed of new or updated knowledge base articles. It’s good to scan in an idle moment or two each day to have an idea of what issues other people are seeing.

Because of that RSS feed, I came across three knowledge base articles I’d like to highlight here:

KB Article 1023696: Oracle 11G R2 32 bit client fails with a segmentation fault when run in a RHEL 5.4 64 bit virtual machine

In this case, sqlplus would seg fault when you try running it. The issue it turns out isn’t a VMware issue – it’s an Oracle bug when running 32-bit 11gR2 client on a 64-bit RH OS with an AMD processor. The fix is Oracle patch 8670579.

KB Article: 1023898
RedHat and CentOS virtual machine show warning messages when starting the udev daemon

This issue actually cropped up in my VMware environments awhile ago. Basically you see messages like this when your VM starts:

udevd[572]: add_to_rules: unknown key ‘SUBSYSTEMS’
udevd[572]: add_to_rules: unknown key ‘ATTRS{vendor}’
udevd[572]: add_to_rules: unknown key ‘ATTRS{model}’
udevd[572]: add_to_rules: unknown key ‘SUBSYSTEMS’
udevd[572]: add_to_rules: unknown key ‘ATTRS{vendor}’
udevd[572]: add_to_rules: unknown key ‘ATTRS{model}’

On RHEL, the fix is to do the following

vi /etc/udev/rules.d/99-vmware-scsi-udev.rule

change

ACTION==”add”, BUS==”scsi”, SYSFS{vendor}==”VMware, ” , SYSFS{model}==”VMware Virtual S”, RUN+=”/bin/sh -c ‘echo 180 >/sys$DEVPATH/device/timeout'”

To:

ACTION==”add”, BUS==”scsi”, SYSFS{vendor}==”VMware ” , SYSFS{model}==”Virtual disk “, RUN+=”/bin/sh -c ‘echo 180 >/sys$DEVPATH/device/timeout'”

and then reboot the VM.

The final article I want to mention is
KB Article: 1023185 VMware Tools installation fails to start the guest operating system daemon on Red Hat Enterprise Linux 4 64-bit guests with the 32-bit glibc-common package installed

This issue relates to Oracle because 32-bit glibc-common is frequently required for Oracle DB installs. The issue occurs because VMware tools configuration is looking for the 64-bit tools (64-bit OS, generally you’d want to install the 64-bit RPMs…). The solution is to install VMware tools as normal, but before running the configuration script, to issue
ln –s /usr/lib/vmware-tools/lib64/libdnet.so.1/libdnet.so.1 /lib64/libdnet.so.1
ln –s /usr/lib/vmware-tools/lib64/libproc-3.2.7.so/libproc-3.2.7.so /lib64/libproc-3.2.7.so
and then run the configuration program for vmware tools
/usr/bin/vmware-config-tools.pl

Hopefully this is helpful to other Oracle on RHEL under VMware people out there.

The easy (ok, easier) way to installing Oracle

From searching the web, it’s apparent that even installing Oracle on Linux can be a challenge for many people.  Sure, there’s OFA (Oracle Flexible Architecture), best practices, mount points, file system types and all the lot.  You can always find a way to make things a little bit better or more complex.

I want to start off with something a little more basic.  I want to talk about the basic Oracle install.

The general steps are to create a software owner (such as the user oracle) and a owner group (dba is pretty common) and, in the case of 11g, possibly things like ASM owner groups.  Then you’ve got the actual runInstaller where you choose the disk locations, software components, etc.  Part of what the Oracle installer does is to verify your system requirements:

  • are you on a supported OS?
  • do you have the required software packages (rpms)?
  • do you have enough swap?
  • do you have shared memory correctly configured?

Oracle has made things easier with configuring all this stuff over the years, but there’s always room for improvement.

To help verify you have all the requisite software packages, Oracle publishes a special rpm called oracle-validated .  This RPM will verify you have all the pre-requisite RPMs you need to install Oracle and will set the shared memory configured correctly.  You can find the latest versions of this rpm at

  • Redhat (RHEL), Centos, Oracle (OEL) Linux 4 at http://oss.oracle.com/el4/oracle-validated/
  • Redhat (RHEL), Centos, Oracle (OEL) Linux 5 at http://oss.oracle.com/el5/oracle-validated/

(Note that in the case of RHEL 4, you need to use rpm -ivh filename.rpm  instead of yum install filename.rpm like shown below)

Just choose the version you need and you can download and install it from the command line.

wget http://oss.oracle.com/el5/oracle-validated/oracle-validated-1.0.0-18.el5.x86_64.rpm

yum install oracle-validated-1.0.0-18.el5.x86_64.rpm

These days pretty much all new installs of Oracle for enterprise use are being done with Oracle 11gR2 (11.2.0.1) on RHEL 5 (5.4) 64-bit.  Which would be the RPM I’ve listed above.  The thing is, if you check, that RPM came out in March of 2009.  It’s now been a year.  The RPM works great for 11gR1 (11.1.0.6 / 11.1.0.7) installations but misses some things needed for 11gR2.  11gR2 was released in October of 2009.  I’ve asked in the support forums and have been told Oracle is still working on an updated version for 11gR2, Oracle’s flagship product.   To me it seems you’d get the helper rpm released around the same time as the database to help speed adoption and reduce support calls, but whatever.  Heck, why not even provide the rpm with the Oracle database software itself? Maybe it has to do with the GPL and distributing software.  Who knows.

Now, in the dark days before OEL or RHEL 5, any rpms that were missing needed to be installed by hand.  With OEL/RHEL5, you now have yum which will automatically analyze and offer to install any necessary dependencies.  If you utilize a subscription such as Oracle’s ULN (Unbreakable Linux Network) or RHN (Redhat Network) you can grab all these RPMs as needed right from the source and get the latest version.  If you don’t have a subscription, or due to security you can’t allow the database server to get to the internet, you can create your own local repository.  I’ll cover setting up a local repository in another post.

So at this point you’ve gotten oracle-validated rpm installed and hence all your RPM pre-reqs installed.  What about your shared memory (shmmax, etc) parameters configured?  Oracle makes this easy too.  Once you have the rpm installed, issue the following as root:

cd /etc/sysconfig/oracle-validated
./oracle-validated-verify

This goes out and makes many of the changes necessary for Oracle to run.   You can review what was run and changed by issuing:

more /var/log/oracle-validated/results/orakernel.log

Unfortunately, there are a few more parameters you’ll need to add that the rpm misses or gets wrong due to changing best practices from Oracle.

vi /etc/sysctl.conf
change net.core.rmem_default = 262144 to
net.core.rmem_default = 4194304
sysctl -p
vi /etc/pam.d/login
add if missing
session  required   /lib/security/pam_limits.so
session  required   pam_limits.so

At this point you’re ready to start the Oracle software installer and you should be good to go.

To summarize, for a vanilla RHEL 5 box to install 11gR1, here’s the steps you need to perform after installing the OS:

useradd oracle
groupadd dba
usermod -G dba oracle

cd /tmp
wget http://oss.oracle.com/el5/oracle-validated/oracle-validated-1.0.0-18.el5.x86_64.rpm
yum install oracle-validated-1.0.0-18.el5.x86_64.rpm –nogpgcheck

cd /etc/sysconfig/oracle-validated
./oracle-validated-verify
more /var/log/oracle-validated/results/orakernel.log
more orakernel.log

vi /etc/sysctl.conf
change net.core.rmem_default = 262144 to
net.core.rmem_default = 4194304
sysctl -p
vi /etc/pam.d/login
add if missing
session  required   /lib/security/pam_limits.so
session  required   pam_limits.so

Have fun!