Monday 24 October 2011

"-XXcallProfiling -XXaggressive:opt" performance and JRockit and E1

The white (red) paper tells you to do it, better performance, less CPU utilisation on the web server.

What they don’t tell you is that if you view an RD job after you’ve set this setting, the JVM will go crazy and die.  So, do not change this setting if you are using BIP for EnterpriseOne. 

One a side note, when I changed this setting on my installation – it would not let me regress it.  I kept getting errors in the weblogic console when I removed those options from the JVM start options.  I then when and found that the file these are written to is called “config.xml” and can be found in ../domains/html_domain/config dir.   I’m guessing that you can edit this file (I’m not going to just yet) and restart your JVM’s and the settings should go away.

I’ll repost if this does not work.  I will be taking a backup of the file before I attempt this – that is for sure!

XE to ERP9 upgrade–Table conversions estimates

How long do you think F0911 conversion will take from XE to ERP9 – out of the box…  No smarts no nothing for 41000000 records.  This is on an AS/400 with V7R1 and plenty of memory and 1.1 CPU allocation.  (Note that this particular conversion only ever took up about 30% of CPU).

5h 33m or 333 minutes, nice number!

You would agree with me that that is a long time, and perhaps too long for some people.  How could you improve that time?  Most of the time is taken generating the 25 indexes that are required for F0911.  Unfortunately the indexes are run synchronously and without any parallelism (or default parallelism which is important for those of you that have enterprise edition of Oracle).

What I tend to do for these large (and simple) conversions is manually run the SQL (which is generally a join between the T and the base table) and do it all with as much parallelism as my system can handle.  This can improve performance of 333 minutes down to less than 1 hour.

F03B11 with 6.5 million takes about 64 minutes

Wednesday 19 October 2011

OATS–Oracle Application Testing Suite–Performance testing JDE

OTS can be found here http://www.oracle.com/technetwork/oem/app-test/index.html

Full download here http://www.oracle.com/technetwork/oem/app-test/index-084446.html

This is the version 9.3 complete install.  Wow, only 1.4GB download!

The installer is pretty big, it’s going to install WebLogic 10.3.3 and also a XE database locally – so probably best to put it on a separate machine and it might have to be chunky (see specs below).  If you are using Oracle as your thick client local database, you might want to consider using a different machine also.

openscript is the first thing that you will run.  This gives you the ability to create scripts and test them.  I created a simple “load testing” HTML script:

image

This logged into JDE, did some address book queries and logged out again, nice and simple.

I was able to run this in the openscript console – all great. Note that this was using a weblogic 11G web server and tools release 8.98.4.5.

I tend to model core transactions for my clients, and try to create “a day in the life of X”.  I create different scenarios that stress different areas of the architecture.  Data manipulation, master BSFNs and UBEs for the back end.  Looking at lots of data and large grids, traversing menus for the web server and finally complex queries for the database.

I tend to stress the different tiers to get the low hanging fruit in the beginning.  Ensure that I have the correct JVM sizes and ensure that all logging is at a minimum.  It’s quite common that you’ll need to revise the concurrent connections in the jdbj.ini file for high usage.  I try and execute the “day in the life”

My favourite stress test / performance test for JDE is a “2 hours of power”.  Smash the machine with as many concurrent users (20% more than they anticipate) for 2 hours.  Ensure that the performance metrics are evan.  Check the JVM sizes and ensure they have not gone bad.  Ensure that ALL your transactions have hit the database (reconcile your load test).  Ensure that there is NO errors in the JAS logs and the enterprise server logs.  Too often a load test is “successful”, but has not completed properly at the back end.

Next thing you need to do is run some load testing, this is done within the web interface that runs within weblogic.

You need to start weblogic using startweblogic.cmd from within E:\oracleATS\oats dir – or where ever yours installed to:

The default URL is http://localhost:8088/olt/LoginSubmit.do

Oracle Application Automated Testing Suite default username is Administrator.  Why is this type of information very hard to find…

Login into the Test Manager or Admin console as Administrator with the password that you typed into the installation wizard.

image

Create a new scenario.  This is where you choose one or more of your “Tests”, as created within openscript. 

image

You choose concurrent VUs (virtual users), wait time options etc.  You can also choose where the script is going to run (system).  Then goto your “setup autopilot” tab:

image

By default the test will complete when you press STOP, you might want to change that… Run the test and watch the users in server manager.  You should see all of the screens changing when monitoring users.

This is the basics of OATS.  I know that it works with weblogic and 8.98.4.2 and 8.98.4.5.

I did some much more complicated load testing and OATS was a pleasure to use.  The remote agents were easy to configure too.  I used an underpowered test machine, I would recommend using a machine with a couple of processors, 8GB of memory and ensure that it’s GB LAN for the local load testing.

Thursday 6 October 2011

Data selection–List of values–speed entry!

Ever had a huge list of tables or programs or something that you wanted to automatically enter into a UBE’s data selection?  I know that I have many times.  Say I run the R9898711 and then want to run the R98403 to create all of the missing tables?  Well, I have a time saving suite for you.

step 1: Run the UBE to create CSV, so it’s easy to get a list of values that you want to enter into data selection.

step 2: use this formulae to create the appropriate “sendkeys” functions:  =+CONCATENATE("objshell.sendkeys """,A3, "~","""")

step 3.  populate column 1 of a spreadsheet with the list of items, and column 2 with the formula above

image

step 4. create a file called “Dataselection.vbs” on your computer and edit that file

step 5. paste in the following header

for B9

set objShell = wscript.createobject("WScript.Shell")

Do until success = True
  Success = objshell.AppActivate("List Of Values")
  'Success = objshell.AppActivate("something.txt - notepad")
  wscript.sleep 1000
Loop

wscript.sleep 100
wscript.echo "Start data pump"
wscript.sleep 100
Success = objshell.AppActivate("List Of Values")
objshell.sendkeys "+{tab}+{tab}"

For XE

set objShell = wscript.createobject("WScript.Shell")

Do until success = True
  Success = objshell.AppActivate("List Of Values")
  wscript.sleep 1000
Loop
wscript.sleep 100

step 6. paste column B from above underneath this header

objshell.sendkeys "F00021~"

objshell.sendkeys "F0010T~"

objshell.sendkeys "F0095~"

objshell.sendkeys "F01161DW~"

step 7.  save the file and get a command window

step 8. run “wscript.exe //e:vbscript Dataselection.vbs”

step 9.  Activeate the data selection, list of values screen that you want to add your values to

step 10.  The script will fire when the window is active and will populate the list!

 

Enjoy!

Data selection–List of values–speed entry!

Ever had a huge list of tables or programs or something that you wanted to automatically enter into a UBE’s data selection?  I know that I have many times.  Say I run the R9898711 and then want to run the R98403 to create all of the missing tables?  Well, I have a time saving suite for you.

step 1: Run the UBE to create CSV, so it’s easy to get a list of values that you want to enter into data selection.

step 2: use this formulae to create the appropriate “sendkeys” functions:  =+CONCATENATE("objshell.sendkeys """,A3, "~","""")

step 3.  populate column 1 of a spreadsheet with the list of items, and column 2 with the formula above

image

step 4. create a file called “Dataselection.vbs” on your computer and edit that file

step 5. paste in the following header (for B9)

set objShell = wscript.createobject("WScript.Shell")

Do until success = True
  Success = objshell.AppActivate("List Of Values")
  'Success = objshell.AppActivate("something.txt - notepad")
  wscript.sleep 1000
Loop

wscript.sleep 100
wscript.echo "Start data pump"
wscript.sleep 100
Success = objshell.AppActivate("List Of Values")
objshell.sendkeys "+{tab}+{tab}"

For XE

set objShell = wscript.createobject("WScript.Shell")

Do until success = True
  Success = objshell.AppActivate("List Of Values")
  wscript.sleep 1000
Loop
wscript.sleep 100

step 6. paste column B from above underneath this header

objshell.sendkeys "F00021~"

objshell.sendkeys "F0010T~"

objshell.sendkeys "F0095~"

objshell.sendkeys "F01161DW~"

step 7.  save the file and get a command window

step 8. run “wscript.exe //e:vbscript Dataselection.vbs”

step 9.  Activeate the data selection, list of values screen that you want to add your values to

step 10.  The script will fire when the window is active and will populate the list!

 

Enjoy!

Wednesday 5 October 2011

JDEdwards on an iPad / iPhone

We’ve been able to get 8.98.4.5 running on our demo system and it’s pretty sweet on the iPad.  Instead of the “processing” wheel turning and turning, we actually have some applications loading and working.

If you’d like to experience the interface on your device, drop me an email and I’ll sort you out an account and a URL.

shannon dot moir at myriad-it dot com.  Sorry, but I don’t want bots picking up my email address.

It’s all demo data and you’ll get an account that will expire in a week and will be locked down – but you’ll be able to see JDE on your iDevice.

NTP on linux–must do!

I just had an interesting problem, I created a new user (actually copied it from JDE).  Copied all security roles etc – CNC101 stuff.

Logged in as the new user, no problems!  Security server working, web server validating roles and environments, CNC101!

Then each time I had to launch an application, I got the following:

29997/-263791728 WRK:Init Remote Env Token              Tue Oct  4 20:34:06.870621      jdb_ctl.c4310
        JDB1100029 - Failed to validate role: SYSADMIN for user: (null)

29997/-263791728 WRK:Init Remote Env Token              Tue Oct  4 20:34:06.878945      cnvtchra.c360
        PRT0000008 - Invalid Env handle

29997/-263791728 WRK:Init Remote Env Token              Tue Oct  4 20:34:06.879054      cnvtchra.c292
        PRT0000004 - Invalid Env handle

29997/-263791728 WRK:Init Remote Env Token              Tue Oct  4 20:34:06.879127      jdekinit.c1396
        JDB_ERR: FAILED TO VALIDATE ROLEALL FAILED TO SIGNON

I’ve been doing this for years, I can create a user…  After thinking for a while, and looking at the only difference is the start date for the role.  It was set to today (based on the web server time), but of course the enterprise server thinks it’s in new york!

So the kernels are doing a select on the F95921 using the current date and time and not getting any valid roles for my new user, as the current date on the server is 4th of Oct and when I created the user, the start date for the role I chose was defaulted to the 5th of October.

So, I quickly changed the timezone for the enterprise server, restarted JDE and logged in again – all is good.

Lesson here, even if it’s a demo server (which mine is – a templated demo server at that!).  Make sure that you set up all of the NTP properly and the timezones properly so that the JDE security tokens and role expirations are going to work properly.