Friday, 30 April 2010

Computer Based Training

There is no substitute for face to face training however if you are doing an upgrade or new installation of an application for thousands of employees this might not be feasible.

You could take the approach of using "Lead Users" within departments to disseminate good practice and training or you might be in the fortunate position to be able to send out a team of trainers in to you workplace to deliver training sessions.

One other solution that you could use to compliment your other training is Computer Based Training (CBT), this could take many forms, you could use screen recording software, pod casts, online quizzes, vod casts etc. One solution that I have Quarbon Viewlet Builder, this has the advantage of being similar to screen recording software but being able to modify mouse interactions, add in quizzes and getting users to interact with the CBT as they would with the software when they come to use it.

Definitely worth a look, version 6 was a big improvement over version 4 with lots more added functionality. I had some issues opening version 4 files in version 6 but the support guys at Quarbon quickly sorted them out and patched the software up with the new changes.

Take a look at what they have to offer here:

Carriage Return & Line Feed

Why use chr(10)||chr(13) when you could user utl_tcp.crlf?

Tuesday, 27 April 2010

the problem with jobs

Often a job only breaks because it wasn't able to access another server temporarily for example, in the meantime the server comes back online but the job is still broken.

Unless a user tells you you might never know that then job has broken, but there is something you can do about it. You can create a "fixer job", this is a job that looks at all the other jobs at a set interval and if it finds one that is broke then it fixes it, you could even get it to log the fix or email you when one of the jobs break.

This is the procedure I use in PL/SQL to fix it:

CREATE OR REPLACE PROCEDURE job_fixer
AS

CURSOR broken_jobs_cur
IS
SELECT job
FROM user_jobs
WHERE broken = 'Y';

BEGIN
FOR job_rec IN broken_jobs_cur
LOOP
DBMS_JOB.BROKEN(job_rec.job,FALSE);
END LOOP;
END job_fixer;

My view on views

I love materialised views, if you're pulling information in from another database over a slow network they can be very use full, they avoid having to do a live query on the remote data every time and speed things up for the user.

The problem comes when you have to re sync the data, now you could do this intelligently and only pull in the stuff that has been updated but quite often I do a complete refresh of the view. When doing a refresh sometimes queries can take a long time (5-15 mins) and while this is going on your users can't access the data.

To get over this problem you can refresh your data in a temporary materialised view which is held locally to where you need to use it, this is the bit that takes a long time. Then you can refresh your "live" materialised view with the data in the temporary view meaning that the user experiences almost no downtime.

Wednesday, 14 April 2010

Multiple row update from select

Whenever I have to do a multi row update from a select statement in Oracle I always come back to this bit of code from the good people at psoug.org who show you how it should always be done, it's not as simple as it might seem on the surface. If you don't do it correctly you end up updating all of the records in the table, some potentially with null data.
UPDATE test t
SET (tablespace_name, extent_management) = (
SELECT DISTINCT (u.tablespace_name, u.extent_management)
FROM user_tables a, user_tablespaces u
WHERE t.table_name = a.table_name
AND a.tablespace_name = u.tablespace_name)
WHERE t.table_name LIKE '%A%';
You can see their full low down on updates here: http://psoug.org/reference/update.html

Friday, 9 April 2010

BBC iPlayer Freezing

If you are having any issues with BBC iPlayer freezing and pausing intermittently it probably isn't a problem with your bandwidth but a problem with Adobe Flash.
When you install Adobe Flash on your PC or laptop it uses hardware acceleration by default. So when you are viewing a BBC iPlayer movie left click on the movie and go to Settings.


Then untick the Enable hardware acceleration setting and click Close


This should hopefully get you working.

Thursday, 8 April 2010

If you are ever trying to combine two Oracle PL/SQL collections using MULTISET UNION and get an error that looks something like this:
PLS-00801: internal error [*** ASSERT at file pdw4.c, line 2045; Type 0x0A3B7470 has no MAP method.; NEWS_FEEDS__UP__F__103002[7, 5]]
You probably need to run this command on the object type of that data you are merging:
alter type [Item Type Name] add map member function m return number invalidate/