Month: January 2011

Tip: Comparing Trace Files

Trace files can give a lot of nice troubleshooting information, sometimes too much.  Sometimes, you may have a situation where a problem occurs in one system but not in another.  You could run a trace in both systems, but comparing those trace files is difficult.  Each line has a timestamp, which will be different in each file.

Here is a trick for getting rid of those timestamps.  Here is the source:

sed : Remove first 4 letters in each line

Of course, you need Linux, Unix, or Cygwin for this — something with the sed program.  Here is the command:

[sourcecode]
sed ‘s/^.\{51\}//g’ "mytrace.tracesql" > modtrace.tracesql
[/sourcecode]

For example, here are the first few lines of a trace file:

[sourcecode]
PSAPPSRV.248 (181) 1-1      10.24.26             Cur#1.248.FSDEV90 RC=0 Dur=0.001000 COM Stmt=SELECT VERSION FROM PSVERSION WHERE OBJECTTYPENAME = ‘SYS’
PSAPPSRV.248 (181) 1-2      10.24.26    0.003000 Cur#1.248.FSDEV90 RC=0 Dur=0.001000 COM Stmt=SELECT PORTAL_NAME, PORTAL_REFTYPE, PORTAL_OBJNAME FROM PSPRSMDEFN WHERE VERSION > :1 UNION SELECT PORTAL_NAME, PORTAL_REFTYPE, PORTAL_OBJNAME FROM PSPRSMDEL WHERE VERSION > :2
PSAPPSRV.248 (181) 1-3      10.24.26    0.000000 Cur#1.248.FSDEV90 RC=0 Dur=0.000000 Bind-1 type=8 length=4 value=214748355
[/sourcecode]

After running the command, here is what it looks like:

[sourcecode]
Cur#1.248.FSDEV90 RC=0 Dur=0.001000 COM Stmt=SELECT VERSION FROM PSVERSION WHERE OBJECTTYPENAME = ‘SYS’
Cur#1.248.FSDEV90 RC=0 Dur=0.001000 COM Stmt=SELECT PORTAL_NAME, PORTAL_REFTYPE, PORTAL_OBJNAME FROM PSPRSMDEFN WHERE VERSION > :1 UNION SELECT PORTAL_NAME, PORTAL_REFTYPE, PORTAL_OBJNAME FROM PSPRSMDEL WHERE VERSION > :2
Cur#1.248.FSDEV90 RC=0 Dur=0.000000 Bind-1 type=8 length=4 value=214748355
[/sourcecode]

Now, you can use a tool like Beyond Compare or Meld to compare the trace files without the timestamp.  If you don’t have a compare tool, look here.

skp@pecan: ~-Downloads_857

Explorations in Component Interface: Handling Component Interface Errors

This is a continuation of the following posts:

The plan this time is to try to see how well we can handle errors.  I have been having trouble with some of my production programs crashing when I have taken all the necessary steps to trap and handle the error.  So, we’ll see how this goes …

Read More

Component Interfaces Explorations: Security

This is part two of the explorations in component interfaces.  Before we can do anything with the Component Interface that we created in part one, we have to make sure that we have security to it.  Maybe at some point we can explore what happens when we don’t have security, but for now let’s fix it before it breaks.

So, if you haven’t already created the component interface, head over to part one first, and build the CI.  Then, you can setup the security.

The first thing you must know is which permission list you need to attach to.  Normally, your security would decide this.  You could create one permission list for all of the component interfaces in the system and grant that to everyone — I mean, the user can’t use the component interface unless they have access to the process or page that uses it.  Or, you could attach the component interface to the same permission list that gives the user access to the corresponding page or process.

In this case, we are just going to pick any one of the permission lists we have access to.  This is an experiment anyway, not a production thing.

First, open the User Profile for the Operator ID you use to connect — PeopleTools > Security > User Profiles > User Profiles.  Go to the Roles tab, and pick any one of the Roles.  I am picking the PeopleSoft User role:

Selection_810

Clicking the View Definition link will take you to the Role.  Then, click on the Permission Lists page and choose one of the permission lists in the list.  In my case, there is only one, so I clicked the View Definition on that one:

Selection_811

Now, that you are on the Permission List, you need to go to the Component Interfaces tab/page.  Then, add the component interface name that you created in part one.

Selection_812

If you save at this point, you haven’t done anything.  PeopleTools will remove it from the permission list because you haven’t given it any access yet.  Make sure that you click the Edit link and click the Full Access button:

Selection_813

Finally, make sure that you click Ok and Save to save the component interface.  You may want to re-open that permission list, and make sure that it saved the change.

Now you have security.  Stay tuned for writing some code to make it work…

Y2K10 PeopleSoft Style

I was surprised to find today that many of the PeopleTools items on the menu were missing.  Then, someone pointed me to article 1183084.1 on Oracle Support.

The problem is that many of the content references have a Expiration Date or Valid To date of 12/31/2010.  If you have some patience, you can go though Portal Structure and Content and update each one.  But, PeopleSoft has an Application Engine program attached to the article that will automatically do it.

Running the program is pretty straight forward.  The only thing I had to do was adjust the last updated field.  The program only updates content references that were last updated by PPLSOFT, but most of my content references were marked with PS.  You could either update the PSPRSMDEFN table manually in the database, but I changed all of the references for ” = ‘PPLSOFT'” to ” IN (‘PPLSOFT’, ‘PS’)”.

Explorations in Component Interface

This is part one of a multi-part series exploring some quirks in using Component Interfaces with Application Engine programs.  If nothing else, hopefully, these will give new developers some insight into how to use a Component Interface.  My goal is to expose a bug in the Application Engine tool that maybe Oracle will see and fix.

This first part will simply walk you through creating a Component Interface.  This part is just a map to associate the fields on the screen (or really in the component’s buffer) with an API property that can be accessed with code.

First, we create a new definition in Application Designer.  You can either use the Ctrl + N keyboard shortcut or the File > New menu.  Choose Component Interface from the list:

New Object List in App Designer

Next, have no fear — you will see the open dialog making it look like you want to open a component.  Really, Application Designer is just asking you which component you want to map.  In this example, we will use the “PERSONAL_DATA” component, which is the Modify a Person screen (Workforce Administration > Personal Information > Modify a Person):

Pick the Component

Next, Application Designer asks you if you want to default the properties.  I almost always say yes to this questions because it will make Application Designer do all the work for you in generating the map.  The properties will be given names based on their field names in the buffer:

Yes to Default the Properties

Now, you should have a new component interface generated for you.  Notice that the left side is the Component Structure.  It is the same as the Structure tab on the Component itself.  The right side is the map of record/field to property name.  In this screenshot, I have the component open in the background and I drew a line to show how the structure is the same.  Then, I drew a line from the structure to the property generated for one of the fields:

How the fields map to properties

Finally, save the component interface.  You can either use the Ctrl + S keyboard shortcut, or you can use the File > Save menu.  I gave it the name BLG_PERS_DTA_CI.

Save Dialog

While your at it, you may also want to add it to the project.  You can use the F7 keyboard shortcut or the Insert > Current Definition Into Project menu.

This concludes creating the Component Interface.  Please stay tuned for the next steps …

2010 in review

The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here’s a high level summary of its overall blog health:

Healthy blog!

The Blog-Health-o-Meter™ reads Wow.

Crunchy numbers

Featured image

A helper monkey made this abstract painting, inspired by your stats.

About 3 million people visit the Taj Mahal every year. This blog was viewed about 55,000 times in 2010. If it were the Taj Mahal, it would take about 7 days for that many people to see it.

In 2010, there were 26 new posts, growing the total archive of this blog to 158 posts.

The busiest day of the year was September 22nd with 375 views. The most popular post that day was Step By Step.

Where did they come from?

The top referring sites in 2010 were peoplesoft.wikidot.com, jjmpsj.blogspot.com, psinstall.blogspot.com, google.com, and google.co.in.

Some visitors came searching, mostly for ora-01502, peopletools tables, windows file lock viewer, yum samba, and peoplesoft installation step by step.

Attractions in 2010

These are the posts and pages that got the most views in 2010.

1

Step By Step September 2008
11 comments

2

PeopleTools Tables September 2007
29 comments

3

ORA-01502: Indexes in unusable state February 2008
6 comments

4

Server Administration Tip: Logging Into the Weblogic Console March 2007
1 comment

5

Step by Step: Yum + Samba December 2008