Mike Ault's thoughts on various topics, Oracle related and not. Note: I reserve the right to delete comments that are not contributing to the overall theme of the BLOG or are insulting or demeaning to anyone. The posts on this blog are provided “as is” with no warranties and confer no rights. The opinions expressed on this site are mine and mine alone, and do not necessarily represent those of my employer.

Wednesday, October 18, 2006

Jobs and Degrees

Mike Ault, Copyright 2006

I read an article in the Atlanta paper recently by a young, recent (within the last 5-6 year) graduate who had been let go from their job as a magazine editor and hadn’t been able to find a position in six weeks of effort. This young person is now taking unemployment as they look for a position. It reminded me of another article in a women’s magazine a year or two ago about a young person who decided to take six months off after getting their soft degree in college and sail the Great Lakes rather then pursue a job, they complained that all the good ones where taken when they got back and how unfair it was.

I guess I am lucky in that the longest I have ever been out of work in 34 years was 2 days, over a weekend. Of course I also believe you make your own luck by hard work and planning. I have had over a dozen different jobs and each paid more than its predecessor. Up until 1991 I didn’t have a degree. Of course I had the benefit of military training from the US Navy in the Nuclear Field which some viewed as equivalent to a BS in Nuclear Technology. However, when I left the shelter of the Nuclear Industry in 1990 I realized I would need a degree to validate my skill set and got a BS in Computer Science.

So many young people today are getting essentially low-worth degrees, I call them feel-good degrees. Degrees in the Arts, English, Communication, Biology, many of the sciences and many other “soft” subjects have limited market appeal and unless you can find a job in publishing, teaching or a museum, especially at the Bachelor level they aren’t going to do you a lot of good unless you have some real experience to back them up. I’m afraid the days where there were jobs as tutors for the idle rich are mostly gone.

In order to make it in today’s world you need a marketable skill or degree, something with some meat on it. Degrees in Engineering, Computers, Management or advanced degrees in the Sciences (Doctorate level) are most marketable. However, you also have to be careful about overloading your degree.

An example of an overloaded degree is a PHD chemist applying for a lab position at a power plant chemistry lab. Most of the chemistry done in industry is cook-book chemistry where you follow a recipe and get a result. This is where many of the BS in Biology folks end up. When I worked in Nuclear Power Plant labs we passed over Doctorate level folks for interviews because we felt they would get bored and leave as soon as something better came along.

You also need to show a bit of good old fashioned gumption. You probably need to consider leaving the comfortable nest of places and people you know and go where the work is. I have moved over 20 times if you count cross-town type moves. I hear of well qualified people who “can’t” get a job, later to find out they couldn’t get one because they wouldn’t move to find it. In today’s mobile society I am afraid living, growing up and working all within 5 miles of your childhood home is a rarer and rarer thing.

You need to get a degree in something marketable and minor in something you enjoy. I pursue my interest in writing by writing part time and make a pretty good second income from it, without a degree in English. I make a majority of my income in computers, right where my degree sits. Of course, I enjoy working with computers and databases and problem solving, I also enjoy writing.

In the Navy (back in 1973-79) I made about $500/mo take home to start, after six years I was maybe up to $1000/mo. I guess that was my “trench” time. You have to put in your trench time, earn your dues, whatever you want to call it. You can’t expect to make 60K out of the gate, if you start at the top, there is only one way to go.

Many times it is not a case of not being able to find a job, it is not being able to find a job a person likes. Bills don’t care whether you like your job. Feeding your family (or just yourself) doesn’t mean you are in rapture at work. That’s why they call it work, if it was fun, they would call it play and charge you for it.

There was a show on TV called “Night Court”, in it a young lawyer got appointed to be the Judge for Night Court simply because he was the only one who was home to answer the call. Similar to that I got my first position as an Oracle DBA (at least I believe it to be so) simply because I was willing to show up, in Iuka, Mississippi, for the interview and was willing to relocate there (well, actually to Florence, Alabama and a 45 mile commute.) What I am trying to say is, sometimes just by showing up, dressed properly and ready for the interview, will carry you a long way towards a job. It isn’t selling-out, it’s showing your intelligence to take the time to figure out what the job requires and meeting those requirements.

Am I saying don’t get a degree in English or Biology or something you love? No, but be aware you may not be able to work in that field unless you have an advanced level degree, want to teach, or already have something lined up. College is to prepare you to take your place in society, not to make you better at your hobbies.

Monday, October 09, 2006

That's a Secret, Agent Man!

Mike Ault, Copyright 2006

And if I told you I would have to kill you…well…probably not so I will any way. After my fun with getting Grid Control for Oracle10gR2 re-installed and working I needed to get the new and improved more stable more reliable, able to fix your coffee and press your suit intelligent agents running on my RAC nodes so I could monitor them. With their usual aplomb Oracle has provided almost enough documentation to achieve this, almost.

I downloaded the agent install files for Linux and then unzipped them on both of my Linux nodes. I also downloaded the proper install files for my XP server where the Grid Control was installed. First, I attempted the “silent” install which involves using the:
“agentDownload.linux –b /home/oracle/linux –c “aultlinux3,aultlinux4” –n crs –m rem208742 –r 4889” command (-b is for the home for the agent, -c is the nodelist for the cluster, -n is cluster name, -m is the master node for the OMS and –r is the port to attach to on the OMS node). It started like gangbusters then stalled complaining that the “linux\oui\oui_linux.jar” file was missing. I checked on the XP box and sure enough it was missing, however, guess what, it was on the Linux platform where I started the command from! So, I copied the file and directory over to the XP box and reran the command, then it complained about the agent directory and its contents being missing, notice a pattern here? Yep, it was on the Linux platform. So, being of almost sound mind I decided that I needed to copy the entire directory structure that the instructions seemed to indicate belonged on the Linux side over to the XP side.

Once the directories where copied the command was quite happy to recopy and uncompress all of the files back to the Linux side and then attempt to start the universal installer in silent mode, which it did, however…it insisted it needed a new inventory location (why it couldn’t just add its entries to the existing inventory is beyond my ken. Anyway, no matter what I fed it, for example it has a –i option to provide a file containing a pointer to an alternate inventory, however, as usual, the instructions say “file containing pointer to inventory location” but no directions on formatting the entry. After several unsuccessful attempts I decided I had beat the dead horse enough and fired off the “runInstaller” command to install in real time. I am pleased to say other than requiring a different inventory location it worked fine and soon my “intelligent” agent was running happily along.

However, a word about the emctl program is in order, there will be at least two versions of the program on a machine running the agent and Oracle database software; one will be for the database control and will reside in the ORACLE_HOME/bin and the other will be for the Grid Control and will reside in the ORACLE_OMSHOME/bin location, they are not interchangeable. You must use the ORACLE_OMSHOME/bin version to control the agent for the Grid Control. Ok, back to the “intelligent agent”, a quick check of its status using the “emctl status agent” command on each node showed that while the agent was indeed up and running, it had no clue how to talk to the OMS host, couldn’t exchange heartbeats and couldn’t upload its various XML delicacies to the host.

It seems the OMS host (the XP box) had a full domain specification (it is a work machine and came configured that way) so when the agent installation asked for the host, it merrily supplied the host and full domain. Since my home office, while it is my domain, doesn’t have a domain of its own, the agent got a bogus address. In addition, while it started the agent, it didn’t start it as a secure agent. Another problem was that the XP host starts up the network connections with a firewall enabled that blocks all attempt so cuddle up to the machine from all comers.

So, first I turned off the firewalls on the network connections for the XP host, that at least let me communicate with the box (I could now ping it from both Linux boxes and get a reply). Next, I looked in the ORACLE_OMSHOME/sysman/config/emd.properties file and adjusted the various URLs there to eliminate the bogus domain specifier and finally I made sure all of the time zone specifications where set according to the specifications in the ORACLE_OMSHOME/sysman/admin/nsuppertedtzs.lst file. So now I had the proper host address in the REPOSITORY_URL and the proper timezone in the agentTZRegion entry, it was time to secure start the agent.

I issued the following commands:

emctl stop agent
Then you cleanout all files relating to upload:
rm -r /sysman/emd/state/* rm -r /sysman/emd/collection/* rm -r /sysman/emd/upload/* rm /sysman/emd/lastupld.xml rm /sysman/emd/agntstmp.txt rm /sysman/emd/blackouts.xml rm /sysman/emd/protocol.ini

emctl secure agent (this reloaded connection data into the emd.properties file)
emctl clearstate agent
emctl upload

Well, the upload failed, notice the note in section 2 about reloading connection data? Well, when the emctl secure agent command executes it goes out an gets the new connection data and password encryption and writes it into the file, so, since I figured that it was going to do this in the future I placed an entry in my /etc/hosts file to point to the proper IP address with the fully qualified host and domain. I figured I finally had it licked, but a emctl status command quickly disabused me of this fallacy.

A light went on over my head, this was a secure connection and I hadn’t exchanged certificates with the XP and Linux hosts. I pulled the URL from the REPOSITORY_URL setting and plugged it into a normal browser session, it pulled the proper certificate from the XP machine and placed it into my Linux boxes wallets. After that…viola! Finally, after several hours of looking things up on Metalink, Google and plumbing the depths of my own somewhat poorly organized mind, I had a working Grid Control with remote agents monitoring my RAC cluster.

Some notes you may find useful from Metalink:

Note: 362199.1 – Concerns setting the hostnames properly
Note: 330932.1 – Concerns setting the REPOSITORY_URL and Time zone properly

Have fun!

Thursday, October 05, 2006

Reinstalling Oracle10g Grid Control

I recently went on a very nice vacation to Curacao. Before I went on vacation the Oracle 10g Grid Control (10.2.0.2) I had installed on my Laptop for monitoring my home office systems was working. I took my laptop with me to allow offload of pictures from my cameras and to track email while I was away. When I returned home and hooked my laptop back up to my home network Grid Control wouldn’t start and of course even with the excellent (not!) troubleshooting capabilities Oracle has provided for when this happens I was unable to get it to restart leaving me up the creek as to Grid Control.

Ok, so Grid Control is down, simple, just deinstall using the Oracle Universal Installer and reinstall right? I ran OUI and selected the agent and OMS homes for deinstall, the OUI GUI puttered around a bit and then notified me it had successfully removed the selected product. Right, except for directories and registry entries. Ok, so I manually remove the remaining directories and the registry keys and reboot to eliminate the services that OUI didn’t deign to cleanup. Now finally, I can reinstall; no software, no registry entries, no directories and no services to cause me heartache.

So starting up OUI I begin the reinstall of the Grid Control. It gets all the way to the Configure the OMS Repository and then falls over dead with cryptic error screens pointing you to not one but two log files. Believe me the most important is located in: $ORACLE_OMSHOME$\oms10g\sysman\log and will be named something like:
“emca_repos_create.log”. Guess what? OUI also doesn’t remove the SYSMAN (the repository owner) user. Ok, no biggie, I just issue a “DROP USER SYSMAN CASCADE;” command and do a restart.

Oops…OUI now complains that there is a pesky ROLE it wants to recreate…MGMT_USER. Ok, I drop that and restart the repository build. Another 10-15 minutes later it complains about a public synonym that starts with MGMT…so I build a script to drop all public synonyms that begin with MGMT and then restart.

Oops…OUI now complains about another set of synonyms that begins with SMP, so I delete all of them. You guessed it, another restart, another 15 minutes and it complains about public synonym ECM_UTIL, so again I drop the synonyms (only 1 this time) beginning with ECM and restart…finally it completes and goes on to the end.

Here is the script I finally ended up with:

drop user sysman cascade;
drop public synonym MGMT_ADMIN;
drop public synonym MGMT_AS_ECM_UTIL;
drop public synonym MGMT_AVAILABILITY;
drop public synonym MGMT_COLLECTION_PROPERTIES;
drop public synonym MGMT_CREDENTIAL;
drop public synonym MGMT_CURRENT_AVAILABILITY;
drop public synonym MGMT_CURRENT_METRICS;
drop public synonym MGMT_CURRENT_METRIC_ERRORS;
drop public synonym MGMT_CURRENT_SEVERITY;
drop public synonym MGMT_DELTA;
drop public synonym MGMT_DELTA_ENTRY;
drop public synonym MGMT_DELTA_ENTRY_VALUES;
drop public synonym MGMT_DELTA_IDS;
drop public synonym MGMT_DELTA_ID_VALUES;
drop public synonym MGMT_DELTA_VALUE;
drop public synonym MGMT_DELTA_VALUES;
drop public synonym MGMT_GLOBAL;
drop public synonym MGMT_GUID_ARRAY;
drop public synonym MGMT_GUID_OBJ;
drop public synonym MGMT_IP_TGT_GUID_ARRAY;
drop public synonym MGMT_JOB;
drop public synonym MGMT_JOBS;
drop public synonym MGMT_JOB_EXECPLAN;
drop public synonym MGMT_JOB_EXECUTION;
drop public synonym MGMT_JOB_EXEC_SUMMARY;
drop public synonym MGMT_JOB_OUTPUT;
drop public synonym MGMT_JOB_PARAMETER;
drop public synonym MGMT_JOB_SCHEDULE;
drop public synonym MGMT_JOB_TARGET;
drop public synonym MGMT_LOG;
drop public synonym MGMT_LONG_TEXT;
drop public synonym MGMT_MESSAGES;
drop public synonym MGMT_METRICS;
drop public synonym MGMT_METRICS_1DAY;
drop public synonym MGMT_METRICS_1HOUR;
drop public synonym MGMT_METRICS_COMPOSITE_KEYS;
drop public synonym MGMT_METRICS_RAW;
drop public synonym MGMT_METRIC_COLLECTIONS;
drop public synonym MGMT_METRIC_ERRORS;
drop public synonym MGMT_METRIC_THRESHOLDS;
drop public synonym MGMT_NAME_VALUE;
drop public synonym MGMT_NAME_VALUES;
drop public synonym MGMT_PREFERENCES;
drop public synonym MGMT_SEVERITY;
drop public synonym MGMT_SEVERITY_ARRAY;
drop public synonym MGMT_SEVERITY_OBJ;
drop public synonym MGMT_STRING_METRIC_HISTORY;
drop public synonym MGMT_TARGET;
drop public synonym MGMT_TARGETS;
drop public synonym MGMT_TARGET_BLACKOUTS;
drop public synonym MGMT_TARGET_MEMBERSHIPS;
drop public synonym MGMT_TARGET_PROPERTIES;
drop public synonym MGMT_TYPE_PROPERTIES;
drop public synonym MGMT_USER;
drop public synonym MGMT_VIEW_UTIL;
drop public synonym MGMT$DELTA_ORACLE_HOME;
drop public synonym MGMT$DELTA_OS_COMPONENTS;
drop public synonym MGMT$DELTA_OS_COMP_DETAILS;
drop public synonym MGMT$DELTA_OS_KERNEL_PARAMS;
drop public synonym MGMT$DELTA_PATCHSETS;
drop public synonym MGMT$DELTA_PATCHSET_DETAILS;
drop public synonym MGMT$DELTA_TABLESPACES;
drop public synonym MGMT$DELTA_VENDOR_SW;
drop public synonym MGMT$DELTA_VIEW;
drop public synonym MGMT$DELTA_VIEW_DETAILS;
drop public synonym MGMT$ECM_CURRENT_SNAPSHOTS;
drop public synonym MGMT$ECM_VISIBLE_SNAPSHOTS;
drop public synonym MGMT$GROUP_DERIVED_MEMBERSHIPS;
drop public synonym MGMT$GROUP_FLAT_MEMBERSHIPS;
drop public synonym MGMT$GROUP_MEMBERS;
drop public synonym MGMT$HA_BACKUP;
drop public synonym MGMT$HA_FILES;
drop public synonym MGMT$HA_INFO;
drop public synonym MGMT$HA_INIT_PARAMS;
drop public synonym MGMT$HA_MTTR;
drop public synonym MGMT$HA_RMAN_CONFIG;
drop public synonym MGMT$HW_NIC;
drop public synonym MGMT$METRIC_COLLECTION;
drop public synonym MGMT$METRIC_CURRENT;
drop public synonym MGMT$METRIC_DAILY;
drop public synonym MGMT$METRIC_DETAILS;
drop public synonym MGMT$METRIC_HOURLY;
drop public synonym MGMT$MISSING_TARGETS;
drop public synonym MGMT$MISSING_TARGETS_IN_GROUPS;
drop public synonym MGMT$OS_COMPONENTS;
drop public synonym MGMT$OS_FS_MOUNT;
drop public synonym MGMT$OS_HW_SUMMARY;
drop public synonym MGMT$OS_KERNEL_PARAMS;
drop public synonym MGMT$OS_PATCHES;
drop public synonym MGMT$OS_SUMMARY;
drop public synonym MGMT$SOFTWARE_COMPONENTS;
drop public synonym MGMT$SOFTWARE_COMPONENT_ONEOFF;
drop public synonym MGMT$SOFTWARE_COMP_PATCHSET;
drop public synonym MGMT$SOFTWARE_DEPENDENCIES;
drop public synonym MGMT$SOFTWARE_HOMES;
drop public synonym MGMT$SOFTWARE_ONEOFF_PATCHES;
drop public synonym MGMT$SOFTWARE_OTHERS;
drop public synonym MGMT$SOFTWARE_PATCHES_IN_HOMES;
drop public synonym MGMT$SOFTWARE_PATCHSETS;
drop public synonym MGMT$TARGET;
drop public synonym MGMT$TARGET_COMPONENTS;
drop public synonym MGMT$TARGET_COMPOSITE;
drop public synonym MGMT$TARGET_PROPERTIES;
drop public synonym MGMT$TARGET_TYPE;
drop PUBLIC SYNONYM SMP_EMD_AVAIL_OBJ;
drop public synonym EMD_MNTR;
drop public synonym SMP_EMD_AVAIL_OBJ;
drop public synonym SMP_EMD_DELETE_REC_ARRAY;
drop public synonym SMP_EMD_INTEGER_ARRAY;
drop public synonym SMP_EMD_INTEGER_ARRAY_ARRAY;
drop public synonym SMP_EMD_NVPAIR;
drop public synonym SMP_EMD_NVPAIR_ARRAY;
drop public synonym SMP_EMD_STRING_ARRAY;
drop public synonym SMP_EMD_STRING_ARRAY_ARRAY;
drop public synonym SMP_EMD_TARGET_OBJ;
drop public synonym SMP_EMD_TARGET_OBJ_ARRAY;
drop public synonym ECM_UTIL;
drop role mgmt_user;

Now some of the drops may be not needed such as the MGMT$ synonym drops, but I left them in anyway.

So, hopefully if you run into the same issue I did with OEM this little script will help you to get it reinstalled.