You can’t buy a SAN (I feel a rant coming on)

Warning, rant follows…

I have a problem with referring to a storage array as a SAN as seems commonplace these days. SAN is Storage Area Network. Storage array <> SAN <> RAID <> LUN, but all are related. For clarification, storage arrays, which live in a SAN, typically provide access to LUNs that are often created using RAID technologies to provide data protection.

Everyone has (or at least most of you have) been using SAN and storage array interchangably for years now and that’s not right. I think that the storage vendors are really to blame. When the concept of SANs were introduced, many viewed them as complex, difficult to design/create, and difficult to install. I believe that the storage vendors started selling storage arrays as “SANs” to make them easier to buy and install. I admit that the tools for managing SAN environments have improved to allow a single interface to handle switch zoning, LUN allocation, visualization of the storage configuration and performance monitoring. Technically, putting a storage switch inside a cabinet that includes a storage array does not a SAN make, though many vendors are offering products in that easy-to-buy format these days. Continue reading “You can’t buy a SAN (I feel a rant coming on)”

Configuring Weblogic For Restart After Reboot on Windows

I have been working on a customer project involving new installations of Oracle Database (a two-node failover cluster using Oracle Clusterware–good stuff) and two load-balanced BEA Oracle Weblogic servers for the middle tier. The middle tier environment runs on Windows Server 2003 Enterprise x64 Edition and is managed by an outsourced hosting facility.

I had worked with Weblogic before this project, but not on Windows and I was a little surprised by the difficulty finding relatively simple information on BEA’s support site as well as in their documentation.

<rant>I have to say that I’m pleased that Oracle closed this deal so that (I never thought I’d say this) they can make BEA’s support as good as Oracle Support and Metalink. I know it will take quite a while–probably 6-12 months–but it absolutely needs to happen. It’s little reminders like these that make me glad I work with Oracle (or the companies they ultimately buy) and not other software. I’m as guilty as anyone of not knowing how good we Oracle professionals have it when it comes to good, well-organized documentation, a solid support site with a killer knowledge repository (with an awesome search), and a warm, active community of users (too many “thanks to” to mention at this point).</rant>

Back to the reason you’re reading: this post will summarize what turns out to be the relatively easy changes required to ensure that your Windows-based Weblogic managed servers will start up at boot time.

When creating a new Weblogic Domain on Windows, you’ll sometimes have the opportunity to choose the Sun JDK or BEA JRockit JDK to use for your domain’s Java engine. Be conscious of which one you choose (for WL 10.0, it’s on the screen where you choose a Development or Production configuration). I chose BEA JRockit for my environment’s servers because on 64-bit Windows, it’s the only one supported. For 32-bit Windows, you have the option to use Sun’s JDK, but then we’d have a mix and more potential for new bugs to pop up due to the JDK differences. There’s a small change in this process when using Sun’s JDK versus BEA JRockit and I’ll note that as well.

To ensure that your Windows-based BEA Weblogic Managed Server(s) start at boot time, follow these steps:

  1. After creating the new domain and the new Managed Server (Managed Server is a Weblogic term to identify the differences between an Admin Server and the application server where applications should be deployed), modify the Managed Server settings.
  2. Lock & Edit the configuration and proceed to Environment > Servers > (name of your Managed Server) > Configuration tab > Server Start subtab. Then scroll down to the Arguments box and enter -Xnohup in the box. If you’re using Sun’s JDK instead of BEA JRockit, enter -Xrs in that box instead. This is documented at http://edocs.bea.com/wls/docs100/server_start/nodemgr.html#wp1101004.
  3. Once that’s in place, you can Activate Changes.
  4. The admin server says that no restarts are needed, but I would restart it just to make sure. I’m not sure how the admin server can change a JDK flag without restarting the application server. Maybe I’m just not knowledgeable enough to know how it works, but I think it’s just not smart enough to know that you *do* have to restart.
  5. The last change was the one that I missed initially. Briefly, the reason I missed it was that it has to do with crash recovery and in my opinion, a server reboot shouldn’t cause an application server to crash, so I ignored this part of the documentation. One has to ask why you wouldn’t want crash recovery enabled by default anyway, but that’s probably for another rant some other day. Anyway, the final change is to modify a property for the node manager process. Edit BEA_HOME\wlserver_10.0\common\nodemanager\nodemanager.properties and set CrashRecoveryEnabled=true (it is in the file set to false by default). Save and exit the editor.
  6. This is Windows, so go to the Services control panel and restart the BEA Products NodeManager service to put the change into effect.
  7. Ensure that your managed server is up and running. Then, test the changes you’ve made by rebooting the node and see that your managed server restarts after the reboot is complete (and you’ve given time for node manager to start the managed server).

If you have problems, check the node manager logfile (BEA_HOME\wlserver_10.0\common\nodemanager\nodemanager.log) as it will be most useful in determining what happened. If you don’t see any hint that it even tried to restart the server after the reboot, then it’s probably because the crash recovery setting is not enabled–make sure you changed the right thing in the right file.

I didn’t test to see if this process will restart the admin server as well, but I think it probably will or at least should. With a production configuration, you have to enter the username/password for the admin server when starting it, so you may have to store that in the admin server configuration, but that should be a relatively easy fix. In my case, we didn’t want our admin server running all the time and only start it when needed, so having it start after a reboot wasn’t necessary or desired.

Beverage Discrimination

Mountain Dew CanI don’t drink coffee. Never have. However, I do love and need caffeine–in large and frequent doses, but carbonated and refrigerated (refrigeration optional when desperate). That’s why I’m always a tiny bit upset when I arrive at a new customer site and as part of the usual tour I find office supplies, bathrooms, printer, and all the free coffee you can drink. Some of them have a water cooler too (which I try to substitute…my physician tells me this is better than my caffeine addiction).

Why doesn’t Equal Opportunity apply? I’m discriminated against because of my beverage choice. Shouldn’t I expect equal access to all the things I need in order to perform my job? I submit that if others I work with need coffee to perform their daily tasks (I presume that’s why it’s part of everyone’s salary/benefits package–including mine), I should be afforded the same. I shouldn’t have to pay part of the coffee tax if I don’t take part in consuming the coffee.

In the interest of full disclosure, I do have to say that my current employer provides a magically perpetually stocked fridge of carbonated delights that I frequent when I’m in the office (they also provide bottomless pots of coffee). Unfortunately, I haven’t been in the office for a month, so that doesn’t help me right now!

Gotta go get something caffeinated to drink before I fall asleep…

There’s a first time for everything

As even long-term parking at O’Hare is expensive, I elected to arrange a car from/to home for OpenWorld last week. I’ve used the same service several times and they’ve always been professional and on time–except this time.

The ride from home to the airport was boring enough–they were only 5 minutes late to my door, but that’s excusable. The ride home from O’Hare was the more interesting story. As usual at O’Hare, the cars have to wait about 20 minutes from the terminal in a lot. I got off the plane, called to let them know I’m ready and he told me 20 minutes–no surprise. I didn’t time them, but it was about 20 minutes, so that was okay. The negatives began when I sat behind the driver (who was shorter than I am) and got kneecapped as I sat down because his seat was so far back. Turns out, apparently his vehicle (which I presume is exclusively used for chauffeuring people around) has no trunk release, so in order to stow my bag, he had to turn the car off and remove the key from the ignition (how could he not have a spare key?) which in many luxury cars will cause the seat to move all the way back. Now, you’d think that a professional driver would be smart enough to disable this kneecapping feature so that the passenger behind the driver wouldn’t be inconvenienced–I know I would, but then again I guess I am a detail-oriented person.

We finally left the airport with me and one other passenger and headed into rush-hour traffic on Friday evening. It was evident that I was in for a rough ride as the driver had more of a “cab driver” style of flooring the car for every 5-foot advancement and then slamming on the brakes just before ramming into the car ahead. No collisions on this ride, though there were at least two times I had to brace myself on the back of the seat to keep from injuring myself.

The punchline of this joke is that about 3 miles after we left the airport, he pulls off at the O’Hare oasis and mumbled something about gasoline. He drives into the gas station and stops in front of a pump. Turns off the car (which kneecaps me again), hops out of the car and jogs inside the building. I commented to the passenger next to me that this is a first. Seems to me that a professional driver wouldn’t inconvenience his patrons with a stop for gas when he clearly could have done the stop before picking us up. Also, it was rush hour, so the ride was already longer than normal due to traffic. He finally emerges from the station with a cup of coffee in hand and *then* starts to pump the gas. I think the car (a Lincoln Continental) only took about 10 gallons which means it was still about 1/2 full and he just wanted coffee. The rest of the ride home was a jostling ride in traffic where we went 50 mph for 100 feet and then slammed on the brakes again.

I just looked at my receipt and see that I had a little trouble writing my first number, so I will have to confirm that they didn’t interpret that as an 8 instead of a 5 (I intended to give $0 tip). I’m not interested in publicly blackballing this company, but I surely won’t use them again as there are plenty of others ready to take my $$ and I’m not sure it is possible to provide worse service.

Passwords, or just semi-secret passphrase?

As my friend Matt Topper posted (only because he begged me to let him post first–I can’t stand seeing grown men cry), we’ve both experienced a number of cases lately where we’ve been disappointed by security practices we’ve observed. My personal pet peeve is when I call my cell phone provider and they attempt to verify my identity by asking for the password on the account. Now, I know what they’re asking for and I do have an online password that I use when visiting the website, but I instead tell them that I don’t know the password. They are just as happy to verify me by the last four numbers in my SSN (which is another rant for another day). Anyway, I comply and as soon as I’ve been “verified” by this method, they read me the password on the account.

My primary gripe is not so much that they read me the password (which is stupid and wrong), but that they *could* read me the password. Why oh why is the password stored in any way that is retrievable? As Matt pointed out, there are almost countless, very well-documented ways to store passwords such that they are safe and non-retrievable (by the customer service reps or anyone else). I am not completely insensitive to the company’s issue when someone like my mother calls up because she forgot her password and just wants them to reminder her what it is. However, I think it is silly that she had to call them–the “forgot password” link should verify identity and allow her to reset the password on the spot or email a validation link to her unique email address.

So, my point is that there are many, many ways to protect me and my information, but it’s extremely frustrating to have to deal with vendors that just haven’t caught up with the last 30+ years of low-hanging fruit. If anyone from Sprint PCS IT is listening, please, oh my God please, fix this.