I’m officially a ‘nutcase’

30 09 2008

I still don’t know if nutcase is the right word for the French ‘cinglé’ but it seems close to the Dutch ‘malloot’ which seems close to the French word. Anyway as I mentioned in my last post (ages ago) I was going to cycle and camp with my wife through the Netherlands, Belgium, Luxemburg and France. And along the way try to climb the Mont Ventoux 3 times on one day. Thus becoming eligible for membership of the Club de cinglé du Mont Ventoux with the climbs. And just last week I received the official notification that I now am a member of the club. It is an honour to be accepted although the experience itself was hard, tiring, cold (rain in the descent), warm even hot but very gratifiing.

And the goal for next year has already been set. Some of my collegues have entered our company in a tour up the Alpe d’Huez. Not once, but six times. At least that is the personal goal. Overall goal of the tour (Dutch web site here) is to get as much money as possible for Cancer research in the Netherlands. And that is what we will be doing in between training. Get Sponsors!





I did it

6 07 2008

Today I posted the letter containing my application for entrance into the (I like to think) very select Club des Cinglés du Mont Ventoux. Now it is only my application and I still have a long way (literally) to go before I make a real member. But it is a first step.

For anyone that does not read french very well, there is also a Dutch version and a blog in english of a group of dutch cyclists that completed the tour this spring.

So in the last week of august I will be trying to climb the Mont Ventoux on my bicycle three times in one day by three different routes. The distance of 136km is not the problem , I ride that kind of distance about once a week during training. The problem is there are no mountains here in Holland and I will have to climb 4443m. The nearest hill is about 200km away from my home and the highest is 395m, which is lower than the start of the climb of the Mont Ventoux. My wife came up with a nice solution for all this. She proposed to make our holiday this summer into a preparation for the Ventoux. So on the first of august (as my birthday present as I considerate it) we will leave home near Amsterdam on our bikes to arrive about 2 or 3 weeks later in the vicinity of the Mont Ventoux. A perfect preparation and we will pass a lot of mountains where I can practice my climbing skills. Although I must say we will not be climbing too much with all the camping gear on our bikes. We found a perfect route that skirts all the mountain ranges in France but hardly ever enters them. On the days we do not travel, I can climb some mountain nearby and my wife can train for the Marathon van Amsterdam she has planned in the fall.

I’m looking forward to it all and I know I am a little bit crazy to even try it, but that’s just me.





Workflow replacement

1 07 2008

I just saw an interesting post if you have trouble redeploying a process flow. The error you get is something like:

RPE-02062: Itemtype cannot be dropped as it has a running process.

And, yes, that is the link to the post where all the (gory) details can be found. It is documented for 11gR1 but I imagine it will work for 10 and 9 as well.

Links in rather nicely with one of my previous posts. One more thing to look into ….





Parallel processing as a silver bullet

28 05 2008

If you ever need to explain why parallel processing is not always the right solution, maybe you can use The Lawnmowers Law as an analogy for Amdahl’s Law. And I’ll throw in the silver bullet as well. Thanks must go to Doug and ultimately Jared Still for pointing to this article





Concert Ane Brun

26 05 2008

A few weeks ago my daughter invited me to go to a concert with her. I had never heard of Ane Brun, but I am glad my daughter is constantly looking for new music. And asking me to listen with her. Not to mention the chance to go to Paradiso again. During the concert I noticed they were taping the concert and today I saw that the complete concert is available. Including some code to include it on a blog. Unfortunately WordPress does not allow embedding resources from FabChannel. But, you can always go to Ane Brun’s site.





I have to find out if this works

29 03 2008

Resume a failed process flow:

How do I resume a failed process flow?

Looks promising





Useful OMBPlus commands

26 03 2008

More to follow, no time to make a real post, but I need to put this in a place I can easily reach.

A method to find out which properties are available instead of the more intuitive

OMBRETRIEVE MAPPING '<name>' TABLE_OPERATOR '<tbl>' GET ALL PROPERTIES

This is the ‘real’ syntax:

OMBDESRIBE CLASS_DEFINITION

eg.

OMBDESCRIBE CLASS_DEFINITION 'TABLE_OPERATOR' GET PROPERTY_DEFINITIONS

I found it here

Another one I need now and again:

The type of activities that can be present in a Process FLow

Finding out activity types that are supported I made a list (OWB 10.2.0.3):

OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET AND ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET ASSIGN ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET DATA_AUDITOR ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET EMAIL ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET END_ERROR ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET END_LOOP ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET END_SUCCESS ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET END_WARNING ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET FILE_EXISTS ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET FOR_LOOP ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET FORK ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET FTP ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET MANUAL ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET MAPPING ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET NOTIFICATION ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET OR ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET ROUTE ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET SET_STATUS ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET SQLPLUS ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET SUBPROCESS ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET TRANSFORMATION ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET USER_DEFINED ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET WAIT ACTIVITIES
OMBRETRIEVE PROCESS_FLOW 'EERSTE' GET WHILE_LOOP ACTIVITIES

The above being an extract from this

And if you are really interested in what properties can be used

set model OWB
set classes [OMBDESCRIBE MODEL '$model' GET CLASS_DEFINITIONS]
foreach class $classes {
puts "############### Class: $class ###############"
puts "--- Properties:"
set props [OMBDESCRIBE CLASS_DEFINITION '$class' GET PROPERTY_DEFINITIONS]
foreach prop $props {
puts "------ $prop"
}
}





OMB primer?

9 12 2007

I was reading up on my blogs today. A lot of news from the UKOUG conference and it seems I must try to get there some time (next year) as I read nothing but good reviews of the conference and the socialising (socializing in American English? Or is this just Dunglish?). Not to mention the frequent reviews of visits to bars, restaurants and hotels that pop up in the blog posts everywhere. One of the blogs I read by Mark Ritmann mentioned his presentation at UKOUG about best practices for a datawarehouse project, pdf here. I was impressed by the amount of automation using OMB scripting he deemed necessary for the success of a project. Since I am currently working on automation of OWB design/programming using OMB scripting I thought it might come in handy if I do some blogging about my progress. Nothing very fanciful to start with but hopefully useful to anyone who has an interest or a need to start scripting.

Maybe this could even become a series. But, don’t keep your hopes up too much, I tend to get distracted easily. Here goes.

There are several ways to start OMB scripting, each with its own advantages and drawbacks.

Design Center

The easiest one will probably be from the Design Center (in 10g). In standard lay-out that would be the lower right sub-screen:

ombplus1.jpg

In this subscreen you have the advantage that you are already connected to the repository and you can directly type in commands like:

OMB+> set OMBPROMPT ON
ON
OMB+> OMBCC '/MY PROJECT'
/MY PROJECT>

What I showed here is the simple command to change the context you are working in and I started with making sure the current context (OMBCC) is shown in the prompt. The context represents the project tree you can browse in the ‘Project Explorer’ on the upper left corner of the screen. Probably very familiar to you already.

You may also have noticed the commands contain mixed case characters. For anyone used to windows that will be an unnerving experience as windows is not case-sensitive and tcl, the language OMBPlus is based on, is very much so. OMBPlus is even kind of picky, not only to case, but also to other language elements like = or ==, () and { }. It will take a bit of getting used to.

As I said, the advantage of this method is that your are already connected. One of the drawbacks in this method is that you can paste parts of scripts in the window and then edit them. But once you have corrected any errors in your commands (that is bound to happen, believe me) you cannot copy the corrected command and paste it back into the editor you copied the commands from. It is one way; paste-into, but not copy-from. That’s enough for now, here comes the second way to start OMBPlus.

OMBPlus.bat (or OMBPlus.sh on unix)

Easily enough started by double clicking the bat-file, or clicking a shortcut to it in the provided menu’s, and then you are presented with the same command prompt from OMB+ only in a separate window:

OMBPlus.bat

The first thing you now have to do is to connect to the repository:

OMB+> OMBCONNECT <usrname>/<passwd>@<host>:<port>:<repository database>

Connected.

OMB+> set OMBPROMPT ON
ON
OMB+> OMBCC '/MY PROJECT'
/MY PROJECT>

I have done the same thing as before. Only with the connecting added. And I now have the possibility to copy from the corrected commands I have entered in this shell. This works the same as in any cmd-window in Windows as you have started a .bat file. I won’t go into details about this, I assume them known.

The third method to work with OMBPlus scripting is from inside the Expert Editor. But that is something I’ll hopefully get into in a later post.

Now for some stuff you can use right away.

All fine and neat that there are two (three) ways to connect to OMBPlus, but I have not shown anything you cannot find in the manuals. Be assured, you won’t find much here that is not in the manuals. I am only trying to present it in a way so that you can avoid the pitfalls I have seen. It is after all my blog :-)

Below is a script I have used on 2 different occasions, pleasing two different people, not counting myself.
OMBCC '/<project>/<oracle module>'
set tblList [OMBLIST EXTERNAL_TABLES]
foreach tbl $tblList {
puts $tbl
OMBALTER EXTERNAL_TABLE '$tbl' SET PROPERTIES \
(LOAD_NULLS_WHEN_MISSING_VALUES) VALUES ('true')
OMBRETRIEVE EXTERNAL_TABLE '$tbl' GET PROPERTIES \
(LOAD_NULLS_WHEN_MISSING_VALUES)
}

I left out the connecting. Then I changed the context to an oracle module. Watch for the case again and don’t forget the surrounding quotes. Next I set a variable called tblList to the output of an OMB command “OMBLIST”. In this case I want to list all external tables in the oracle module as I want to change a property of them. For all the other object types like TABLES, FUNCTIONS, SEQUENCES and PROCEDURES you can do the same OMBLIST. Notice that all the object types are in plural. Something to remember.

I now have a variable that holds all external tables in my oracle module. Next I use a tcl command to loop over the contents of this variable. Within the loop I ‘print’ the name of the external table on the screen with the puts command, just to show some progress. And then finally the real work of changing the property. How you find out which properties you can change and how they are changed is something for later (note to self!).

The OMBALTER command has an object type associated with it, but unlike the OMBLIST command it is now in singular (without the ’s’). Next you provide the name of the object. Within quotes! And here we use the ‘running’ variable from the surrounding loop. Then I provide what kind of operation I want to alter, in this case to set a property. After that comes the ‘\’ character to signal that the command continues on the next line. There I provide that name (or names, separated by commas) and values for this property. When more than one property is set, the values are taken in the same order as the properties are provided.

The last command before the end of the loop is a check whether the changing of the property was successful. I retrieve the value of the property and by doing so the value is displayed. Before showing the output of the script there is one thing I must mention again, being the picky-ness of the tcl language. The { character should always be on the same line as the foreach command and there should be a space before the { character. Otherwise it just won’t work and very strange errors may ensue. Below is a sample output of the script.
/<project>/<oracle module>> set tblList [OMBLIST EXTERNAL_TABLES]
EXT_HLP_COMMUNICATION_TYP EXT_HLP_CONTACT_TYPE_EMAIL EXT_HLP_GEWONNEN_SPEELKANS
EXT_HLP_KANALEN EXT_HLP_MEDIUM EXT_HLP_OCT_STATUS EXT_HLP_PRIJSKLASSE EXT_HLP_PR
OVINCIE EXT_HLP_RETOURCODE EXT_HLP_STREETLIFE_OMS EXT_HLP_TERUGBOEKREDEN EXT_HLP
_TOPIC_EMAIL
/
<project>/<oracle module>> foreach tbl $tblList {
> puts $tbl
> OMBALTER EXTERNAL_TABLE '$tbl' SET PROPERTIES \
> (LOAD_NULLS_WHEN_MISSING_VALUES) VALUES ('true')
> OMBRETRIEVE EXTERNAL_TABLE '$tbl'GET PROPERTIES \
> (LOAD_NULLS_WHEN_MISSING_VALUES)
> }
EXT_HLP_COMMUNICATION_TYP
EXT_HLP_CONTACT_TYPE_EMAIL
EXT_HLP_GEWONNEN_SPEELKANS
EXT_HLP_KANALEN
EXT_HLP_MEDIUM
EXT_HLP_OCT_STATUS
EXT_HLP_PRIJSKLASSE
EXT_HLP_PROVINCIE
EXT_HLP_RETOURCODE
EXT_HLP_STREETLIFE_OMS
EXT_HLP_TERUGBOEKREDEN
EXT_HLP_TOPIC_EMAIL
/
<project>/<oracle module>>

I think that’s about it for today. Happy scripting.





Windows Live Writer

14 11 2007

I was reading about Live Writer today and the thing that caught my attention is that it was possible to create posts off-line and publish them later. Now it does not often happen that I am off-line, but there are times I do other things. And it would then be convenient to write and publish later. Hence the try-out. One cool feature that I don’t know from WordPress is adding a map. So

is where I live. Too bad I can’t change the text of this hyperlink.

The blog theme I have chosen apparently is not supported, but I’ll look into that later.





Oracle VM

13 11 2007

Interesting and confusing, Oracle now has its own virtualisation software, Oracle VM. Completely free for download it says as of November 14. And free downloads of virtual machines. Oracle VM does not need a host operating system according to the FAQ. But windows runs considerably slower on OracleVM than native on the hardware, of course they are ‘working on it’. More questions than answers here. Let’s see where this is going.