Yey! Another year of UKOUG

>> Friday, 10 April 2015

 I had to 'use up' my SIG day that I get with my Bronze UKOUG membership and I'd missed all the good ones (just kidding!) so I went to the RAC Cloud Infrastructure and Availability SIG (they have to get a decent acronym for that!)

One of the main reasons for choosing it was actually because it was a late starter/finisher: 2:30pm to 8pm

It meant I could get a later train to London, without battling the crowds of commuters and yet still be able to get a train home at a reasonable time.

In fact I had a few hours to myself first which I made the most of here and here

I love the comradery of the SIGs.  It is so motivating to talk to people doing similar jobs, with similar issues in similar companies.  It is quite therapeutic to hear of other big companies having virtualisation battles, big and small companies having design problems, communication issues etc.

It's great to talk to people in companies that have actually bought the big Exadatas and are using them.  If nothing else it starts you wondering whether a company switch might be worth considering for the star studded infrastructure or not, when you realise a lot of the things that make a work day have a sigh happen at many other places in the same way.

These few hours always provide amazing training.  This time for me, the winners were the changes to ASM in 12c, particularly flex ASM.  Trace File Analyser - which is more than it says on the tin! And using Linux control groups to manage virtualised resources.

(That and getting a chance to spend some time with @ChanderDBA and @MDWidlake - thank you both.  There was food and beer - I know, what's not to love!)

Before I arrived I had resigned myself to it being my last ever, thinking it was just too much money to renew membership.  Within 30 minutes of being there I knew I was going to renew again.  It seriously makes that much difference to my motivation to be a great DBA.

I went back to the office the next day stuffed to the gills with renewed drive and decided to ask, yet again, if my company would pay the membership.  And yes, yes they have. It's at least 6 weeks since the bossman said yes and I'm still hopping happy and actually doing more (if that is possible) and volunteering for extras.

It's a win-win for me and the company.

My company gain from my renewed motivation, the extra knowledge I've picked up and that I am keener at work because them renewing my membership makes me feel valued.

I gain from my renewed motivation, I am happier, I feel like I am part of a community still and it makes me want to share more with the DBA community.

The UKOUG is a positive thing.  There are no losers.


He who asks is a fool for five minutes

>> Sunday, 15 March 2015

He who asks is a fool for five minutes, but he who does not ask remains a fool forever.

The older I get, the more I much I don't know.  This stands true for me at work, home, and life in general.

Sometimes I feel so confused with life and its happenings that I'm sure everybody else already must know everything I do and then they have their intelligence on top of that.  I find I think like this quite a lot at work.  But the same seems to apply to baking, gardening, decorating, suduko, crosswords, laundry without total destruction etc.

The nature of work in technology means spending a lot of time searching for information on how to do a lot of technical stuff.  This searching naturally leads to many technical forums. Often I see, what on the face of it seem to be, fairly simple questions.  These questions are usually responded to by someone who considers themselves to be an expert with a RTFM.

I'll accept that as ok, especially if they leave a link to go and have a read.  But what if they still don't understand, what if they need extra guidance, what if the question they asked to begin with wasn't worded well?  Do they deserve to be called a lazy idiot? Should they be told to go away and read it again?

Whilst this is aimed at the technical, it's true anywhere in life.  None of us were born knowing how to do things, we all had to learn but why do some people believe that because they learnt the hard way so must everyone else?

If I say to my friend "my cakes don't rise as well as yours what am I doing wrong?" I know she will say "What recipe are you using? Is the method the same as mine?  I do this".  Why do so many online user groups and forums do the complete opposite?

I believe in freely sharing information and that it is ok to ask others to do the same.  I also know that whilst I like to consider myself a special individual, I am not.  I know if I have a burning question, someone else probably has it too.

Times I have asked questions in halls full of parents like "do they need the packup in a carrier to throw away after lunch or in a backpack" and felt an idiot for asking as 100 burning eyes give me the 'isn't it obvious' look. But on the way out someone always says "I'm sooooo glad you asked that, I had no idea either"

I don't care if I ask a dumb question, I think this is less dumb than never knowing the answer.  And I am happy to be polite and understanding to anyone who asks a question that I know the answer to.

In a forum I think I have 2 choices: be helpful and polite or don't get involved.

The perceived anonymity of the on-line world has turned many people into rude, uncaring individuals.  Trolling, whilst not liked, is seen as part of life.  It doesn't have to be this way.

So just for the record,  I am planning to continue to ask as many questions as I can for the rest of my life.  I may ask how I can find out, I may just ask for a direct answer and I don't mind whether you give me one or tell me how I can find out.

In return I commit to answering as many questions as I can in a polite way and this sometimes might involve a diversionary route to a source of information, yes occasionally that might include a polite 'I don't know but something might popup on Google (other search engines are available) just might'.

For those of you against me in this quest to accept that some people aren't superhuman all knowing beings : 


DBSNMP.BSLN_INTERNAL invalid ORA-12012 ORA-04063

>> Wednesday, 14 January 2015

ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"
ORA-04063: package body "DBSNMP.BSLN_INTERNAL" has errors
ORA-06508: PL/SQL: could not find program unit being called: "DBSNMP.BSLN_INTERNAL"
ORA-06512: at line 1

Tested fix on Oracle version

I've been getting the error in the alert log since the database was built using an rman clone.

I could force the error by running:

As sys:
     exec dbms_scheduler.run_job('BSLN_MAINTAIN_STATS_JOB',false);

     select log_date,status from dba_scheduler_job_run_details
     where job_name='BSLN_MAINTAIN_STATS_JOB' order by log_date;

I tried the recommended work around from Oracle to recreate the dbsnmp user:


This did not fix it.

Oracle recommended I apply a patch for bug 13637859

This did not fix it.

I rolled back the patch, restored dbsnmp as it was and started a rethink.  There were 2 distinct problems happening:

The first one is that the package DBSNMP.BSLN_INTERNAL is invalid:

select substr(owner,1,12) owner, substr(object_name,1,30) object, substr(object_type,1,30) type,
 status from dba_objects where object='BSLN_INTERNAL';

alter package DBSNMP.BSLN_INTERNAL compile;

Warning: Package altered with compilation errors.

select * from dba_errors where OWNER='DBSNMP';

DBSNMP   BSLN_INTERNAL    PACKAGE BODY   1       1910          7
PLS-00201: identifier 'DBMS_JOB' must be declared
ERROR                201

DBSNMP  BSLN_INTERNAL PACKAGE BODY   2       1910          7
PL/SQL: Statement ignored
ERROR                  0

So DBMS_JOB has a problem, well execute was revoked from public on DBMS_JOB on this database.

grant execute on sys.dbms_job to dbsnmp;
alter package DBSNMP.BSLN_INTERNAL compile;
revoke execute on sys.dbms_job from dbsnmp;

select substr(owner,1,12) owner, substr(object_name,1,30) object, substr(object_type,1,30) type,
 status from dba_objects where object='BSLN_INTERNAL';


     exec dbms_scheduler.run_job('BSLN_MAINTAIN_STATS_JOB',false);

     select log_date,status from dba_scheduler_job_run_details
     where job_name='BSLN_MAINTAIN_STATS_JOB' order by log_date;

Job Failed

So I have a valid package now but my job is still failing.  If your database was not cloned you might find this grant and recompile will fix your problem. (The revoke of the privilege again afterwards was fine, it seemed to only need it to recompile, not to actually run)

My second issue was caused when cloning a new db using rman.

nnnnnnnn OLDSOURCEDBNAME  0 xxxxxxxxxxxxxxxxxxxx Y ACTIVE dd/mm/yyyy

There was only one row in my table and that had the name of the old database in it, I removed it:


exec dbms_scheduler.run_job('BSLN_MAINTAIN_STATS_JOB',false);
select log_date,status from dba_scheduler_job_run_details
     where job_name='BSLN_MAINTAIN_STATS_JOB' order by log_date;

This removal of one line is going to be how the Oracle recommended work around for this problem fixes it, you should probably use the Oracle way not my hack.  But for me Oracle Enterprise Grid/Cloud/OEM/yet another name change for OEM used DBSNMP and I didn't want to upset it on my production system, which is why I deleted the row rather than doing:


I found at least 3 blogs with pieces of all this information in but none with it together that solved my issue.

Remember here we have considered:

  • An invalid package caused by revoking execute on DBMS_JOB fixed by granting execute directly to DBSNMP.
  • An entry in DBSNMP.BSLN_BASELINES table carried over from an old source database on clone build.
  • The Oracle Workaround covered in Oracle Support Doc ID 1413756.1 ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"
  • An Oracle Patch for Bug 13637859

Please speak to Oracle Support if you are in anyway unsure that you have the same issue and always make sure you have a good backup before you change anything.


  © Blogger template Simple n' Sweet by 2009

Back to TOP