Tuesday 10 April 2012

BIOS settings for VirtualBox

If you use VirtualBox you might check out a few BIOS settings regarding virtualization. Running a 64 bit guest OS needs you to enable the VT-settings (on my HP ProBook 6550b it's called "Virtualization Technology setting"). On other notebooks it might be called otherwise. Make sure you reboot your OS. Another thing to consider is so called "trusted execution" or "Data Execution Prevention". Of course you want this enabled to be more secure against mal-ware. However it turns out that it is quite a performance-drain when using VirtualBox. A colleague who tipped me told that he copied a VM with SOASuite to his new laptop, where Weblogic need 15 minutes to start! After a change in the settings he managed to decrease this to 5 minutes. Which is pretty normal for a Weblogic startup. He couldn't remember the settings, it had something to do with "security". So I turned "Data Execution Prevention" (as it is called on my HP) off and it turns out that my complete VM "feels" faster. I did not time my VM yet, but it seems to cope with the performance improvement of my colleague (thanks).

Wednesday 4 April 2012

Unexpire passwords of Meta Data Service Repository

Today I ran into the unability to deploy my SOA/BPM project to my development SOASuite installation in my Virtual Machine. I haven't used it for a while, and it turns out that the passwords of my MDS users in the database are expired.

Since it is my personal dedicated development server I don't want passwords to expire at all. So I found out that I have to update the default profile to have the password expiration turn of:

ALTER PROFILE DEFAULT LIMIT
  FAILED_LOGIN_ATTEMPTS UNLIMITED
  PASSWORD_LIFE_TIME UNLIMITED; 
To check this you can use the following query:
select LIMIT from dba_profiles where RESOURCE_NAME ='FAILED_LOGIN_ATTEMPTS' 
     and PROFILE = (select profile from dba_users where username like 'DEV_%');
But still the passwords are expired... You can alter user every MDS user one by one. But you can also use the following piece of plsql (run as System):
declare 
  cursor c_ddl
    is select 'alter user '||username ||' identified by welcome1' ddl
    from all_users
    where username like  'DEV_%';
begin
  for r_ddl in c_ddl loop
     execute immediate r_ddl.ddl;
   end loop;
end;
You should change the 'DEV_%' in the where clause of the cursor to reflect the prefix of the MDS users in your system. And to possible show errors you might want to catch exceptions within a local block around the execute immediate.