On Thu, 8 Mar 2001, George Kahler wrote:
[snip]
The problem I have with is the Unix Oracle home directory that I also created in /softwr/oracle/home, ie. oracle:x:600:211:Oracle user:/softwr/oracle/home:/bin/ksh but the DBAs are telling me that the oracle home directory needs to be unique for each Unix server and Database running on that server because the home directory is the place where they keep their environment.
Not to pick on Oracle DBAs, but this is a crock. Oracle violates *both* of my top pet peeves [1] with Unix software vendors: they abuse environment variables most heinously, and they mix writable stuff in with shareable read-only stuff. ARGH!
Given that Oracle says "Obey the OFA! Always do it this way!" that's how most DBAs insist on doing it. And most Unix admins (including yours truly) eventually give up and say "Okay, whatever, not the hill I want to die on. Get me another beer." Geez. It's only Thursday.
How do other people deal with this? Do you create specific Unix accounts for each Oracle database running on a server?
I share home directories on our internal filer to everyone _except_ the "oracle" user. Since we mount a common /home, this means that /home/skeezics points to my shared home directory on all our servers, while /home/oracle points to /var/local/oracle, which in turn points to the local Oracle installation on each machine that runs it. Whee! Follow the bouncing symlink! :-)
But through the indirection, at least every script we write can use the same paths. And I will grant that the installer for 8.x is less evil than past versions; hell, we only had to run it three times to get our first install to work right, and people tell me that's something just shy of a miracle. :-| (In the bad old days, Oracle's installer use to do all kinds of evil all over your /etc files, which just pisses me off to no end...)
As far as running multiple instances on your filer, it's certainly doable, with a bit of planning. Some others have posted some reasonable alternatives, but in general, they all amount to about the same thing. You'll need to do some redirection through symlinks to make each installation _appear_ to be separate so that Oracle doesn't step on itself and your DBAs don't freak out[4]. But when I can update my .tcshrc _once_ and they have to edit their .profile on a dozen separate home directories or rsync it everywhere, they start to get the picture. :-)
-- Chris
[1] Skeezics' Rules for Unix Software Deployment, the First: If your product requires that you set more than one environment variable, you're doing it wrong. (Oracle uses a raft of environment variables, and it seems most DBA's would rather customize their .profile [2] for the host they're on, rather than write a few if..fi's and share a common one.)
Rule, the Second: Never make me install your package according to some fixed path, and never assume that path is writable. (Oracle assumes it can scribble anywhere it likes, and this makes having one shared tree for binaries less appetizing as just duplicating the whole damned thing on every host.[3])
[2] And not to start a religious war, but I've got to know: why on Earth do Oracle DBAs always use ksh!? Bleah!! :-P
[3] I know. Disks are cheap. Whatever. I've been sharing out /usr or /usr/local since SunOS4, when disks were NOT cheap and Ethernet was usually faster anyway. It sure makes upgrades easier, and for packages that follow Rule #2, the clean separation of /usr/local and /var/local keeps everyone happy. Ah, well. Given that better tools than rdist exist now, I suppose I'll eventually have to get with the program, and just fill up those 18gig boot disks with more than root, swap and /var. :-)
[4] And don't get me wrong, I love my DBA. He does all that nasty Oracle stuff so that I don't have to. :-)
-- Chris Lamb, Unix Guy MeasureCast, Inc. 503-241-1469 x247 skeezics@measurecast.com