Sunday, August 31, 2008

Upgrading + Blog Day

This time I won't be telling about a database upgrade.
Just wanted to tell that from tomorrow on I'm upgrading myself. From tomorrow on I'm no longer an Apps DBA, my replacement has completed his training and is ready to take over the job. Effectively, he's kinda been doing 99% of the tasks for at least two weeks now.
So now I'm a team leader of a team of sysadmins - the team I was previously a part of - except from an EBS sysadmin the team also includes other sysadmins (MOSS, DBA, etc.). As a consequence the emphasis in my posts will shift a bit from EBS to more general stuff, but there'll probably still be some amount of posts about Oracle products.

And to the second part of this post.
Didn't know about Blog Day until today, but since I'm a happy victim of it's customs, I feel obliged to "celebrate" it as well, so here's my list:
  • techno-mosh. Mosh is a very versatile guy and has many areas of interest so it's always fascinating to read his blog. Besides, he frequently writes about all kind of great tips (that get him fans from all around the internet :)), so it's definitely a most recommended blog.
  • Coding Horror. Definitely a great programming blog, always gives me insights and even if not it's still fun to read.
  • Steven Chan's Blog. Although, as mentioned, I'm no longer an Apps DBA this is still a great blog, that many times gave me new ideas and new features to research.
  • xkcd.com. Great (if somewhat twisted) humor.
  • Yevgeny. Gotta agree with Mosh on this one, Yevegeny does a great job sorting out the less interesting posts and sharing only what I want to read.
Happy Blog Day everyone!

Saturday, August 16, 2008

Bad Design

Yesterday I was shopping for clothes.
Usually (at least in Israel) dressing booths consist of a small booth that has some hooks for hanging clothes and that's all, not fancy but good enough. One of the stores had a somewhat different design, it's booths didn't have hooks and had a kind of a bench instead and it had mirrors on each booth wall as well - not full size mirrors but a pretty big round mirror on the wall opposing the door and stripe like mirrors on the other walls. It's probably not the only place they have those mirrors but I find this idea pretty bad. What are the mirrors for? Usually the mirrors are just outside the booths so the shop assistants can do their job - tell you how great you look in this shirt and that they have just the perfect pair of pants to go along. If I just try on everything inside the booth isn't it a missed opportunity?

Well, actually in this specific shop even when I used the mirrors outside the booth (the ones inside the booth just weren't comfortable) the shop assistants didn't do too good a job. Instead of a casual "Can I help you?" or "What are you looking for?" I got an awkward "Would you like to get service?" (from all of them so it's oughta be some kind of weird policy) or even worse - for Hebrew speakers - "אתה רוצה לקבל שירות ממי?". In addition to that, I could barely understand what one of the shop assistants was saying(mumbling actually), don't they check for such things when hiring people for this shop?
I wonder why the bad service, I mean, other shops in the same mall have normal shopping assistants. Do they pay less? Are they less thorough in choosing their staff? They're lucky I love their clothes...

Thursday, August 14, 2008

adpatch VS. OPatch

So, in my previous post I've introduced some issues with both patching tools, but the truth is that adpatch is usually pretty good. Usage is pretty trivial, you have some useful flags (I often use -nocompiledb and -prereq), logs are pretty coherent and you have a good control over the workers with adctrl - although I don't really understand why the so useful "Skip" is hidden under the 8th non-visible option.

OPatch, on the other hand, I really don't like.
How come the architects behind adpatch thought about storing all the version information in the database and the architects of the database itslef didn't come up with this same idea? Why do I need to maintain the inventory folders? It's another thing to take care of when cloning environments, actually, in my case I just ignore it - I don't even know how to clone it properly (although I'm pretty sure there's some documented procedure for this).
Why when I wanted to upgrade my 10.2.0.3 patchset X database to 10.2.0.4 I had first to remove the patchset? And why when I tried to do this I got wierd OPatch errors? Isn't the whole idea of a patching mechanism is to save me those kind of trouble?
It seems that OPatch is nice for checking what you have installed on your database, but as soon as it comes to installing any patch beyond the first one it's nothing but trouble.

So ok, when two patched make different modifications to oracle.exe it's a problem to resolve the conflict, but I refuse to bilieve it can't be done.

Thursday, August 7, 2008

Flexibility

Patching mechanisms such as Oracle's opatch and it's more successful brother adpatch (this issue deserves a post of it's own) are great stuff - you can introduce specific bug fixes into the system, install a whole new functionality or make your application compatible with a new database version and all without having to upgrade a whole application version. The other side of this coin is the fact that you can ignore bugs you don't care about and you don't have to maintain and debug functionallity you don't use. Well, sounds great, everyone gets a suit sewn to perfectly (or at least nearly perfectly) match his needs.

But those mechanisms frequently require strict dependency and versioning management, and sometimes, I think, Oracle just exaggerates.

Let me show you what I'm talking about. During installation of SCM_PF.J on 11.5.9 I got many failed workers, two of them relate to my point:

1. A worker failed and searching Metalink I've discovered that this bug can be fixed by applying a database patch. The README file for the patch says that I should apply the patch and run drkorean.sql, it also specifies very strictly that I should make sure my database is down during the process. Off I go and try to install the patch, but opatch complains about bad inventory which might actually be true since this is a replecated development environment and it might have a problematic inventory. But I'm not the one to give up easily, so I take a look at the actions.xml file of the patch, and... big surprise (not really)! All the patch does is to copy drkorean.sql to a designated folder. A more naive sysadmin could've started panicing, trying to fix his inventory or even open an SR to cure the poor thing.
Wouldn't a simple "copy-run" instruction be a better option? It's not like there're problematic versioning issues here - it's a single sql script that fixes a specific bug - if you insist on having some supervision here, let me take care of this single script's version, believe me I'm up to it. And what's that about taking my database down? Guys, I was in the middle of applying a patch!

2. Another worker failed and Metalink pointed me to a "PROBLEM" document that said that I should apply a patch - unluckily the patch is for 11.5.10, no good for me. Like in the previous case a brief glance inside the .drv file proved my suspicions that all the script really does is to replace the sql script that the worker failed on with a newer version. I'm 100% sure that there's no problem running it on 11.5.9 - and that's actually what I did.
OK, I get it, the bug was originally discovered on 11.5.10 and that's probably the only setup it was ever tested on. But, wouldn't arriving at the conclusion that it matches 11.5.9 as well save us all some time and blog lines? Woudln't it be ashame if I had to open an SR and wait for a reply to handle this trivial case?

Saturday, August 2, 2008

Thank God for Internet

I sometimes think that the Internet - with emphasis on the ability to search it - to technology is something like zero ('0') to mathematics, it's a relatively late development and without it some things are just impossible to accomplish.

I've recently been working on some small C# project. I don't really know C#, yeah I did a one-week course and I do know Java and C++, but that doesn't really mean I know all the techniques and tricks. So, naturally each time I hit a bump, I google it, and voila! The first or second result is usually what I'm looking for.
Now, what would I do in a world without Internet? Call a friend? Look up the subject in a C# book? This will probably force me to keep a small library of programming books, which is nice to brag about but space and money consuming and still much less efficient. And neither solution allows me to instantly paste code snippets into my code. You get the idea, not having Internet, my task would have been much more frustrating and challenging.
But who cares about me, what about serious software development? Think how much time would've been wasted if every time a programmer had a problem he would've had to start searching books. Of course he has his colleagues as well but they don't usually provide a written code example, more wasted time. And time is money.
I'm not really a (programming-)linguist but I think that modern programming languages like Java, C#, Perl, etc. couldn't be what they are today without the Internet, they depend on too much different interfaces and classes (hey, where would I get my Perl packages from) and one can't expect to master them all, there's also a limit on how much information and examples you can put on an MSDN disk you even if you release a new version once in a while. Besides, you'll never have what professional forums supply.

Since I work mostly with Oracle products, the trivial analogy is Metalink. Yes, I know Oracle precedes the Internet but I really don't know how support worked those days. Did they publish some kind of soft copy repository containg notes? Did you manage all your TARs on the phone? And what about uploading log files, did you have to send a diskette with the files to Mohender in India?
One thing I'm (pretty) sure of is that having an online support system, like Metalink - however not efficient it may be at times - enables Oracle (and every other software company as well) to develop more complicated products and more sophisticated features. It's one thing to search the Metalink or google once in a while and a totally different thing to search through documents and manage your TARs by phone.

Hail the Internet!