Category: Uncategorized

Vim Search in Flat Files

I have been working with Flat Files recently, and I found Vim Search patterns can help with finding certain conditions within the file.  This pattern works very well:

\{n}

Searches for n number of the preceding pattern.

For example, say you want to find any lines in the file that have a “2” in the 51st position of the file.  You can use this pattern:

^.\{50}2

So, this matches 50 characters of anything and a “2” following.

Reference:

Softpanorama: Vim Regular Expressions

Instructions for Cloning a Database

In an OTN Discussion Thread, I saw that Nicholas Gasparotto pointed out a document with instructions on cloning PeopleSoft instances.

The document is ID #643499.1 on support.oracle.com.  You can find it by pasting the document ID in the search box on the upper right-hand corner just after you login.

The information seemed like it had some great pointers, and if you haven’t already seen it, you might want to read through the steps to make sure you are taking all these things into account.  On the other hand, I think it is very important to keep a step by step list of tasks for your particular system that you keep up to date.  You will probably have specific things that you have to do for your environment that are unique to your installation.  For example, if you are cloning to a test environment, what about blanking out the email addresses so that test emails don’t get sent out as production emails.  Also, some people put a special message in the heading of the test instances so that it is obvious when you are in Test versus Production.

Thanks, Nicholas for the pointer — this is something I want to keep handy.

Record Type Values

Here are the values for the RECTYPE field in the table that stores the information about the records in PeopleSoft: PSRECDEFN.  Here are what the values mean:

  • 0 = SQL Table
  • 1 = SQL View
  • 2 = Work Record
  • 3 = Subrecord
  • 5 = Dynamic View
  • 6 = Query View
  • 7 = Temp Table

For example, you can do something like this to find all the tables that have the OPRID field:

SELECT A.RECNAME
FROM PSRECDEFN A, PSRECFIELDALL B
WHERE A.RECNAME = B.RECNAME
AND A.RECTYPE = 0
AND B.FIELDNAME = 'OPRID'

See the PeopleTools Tables for more information.

PeopleTools 8.50 App Server Location

In installing PeopleTools 8.50/HCM91, I noticed that PeopleTools began placing its Application Server configuration files in a different location.  Instead of finding them in %PS_HOME%/appserv, I found them at %USERPROFILE%\psft\pt\.  The culprit appears to be the PS_CFG_HOME environment variable. I found the documentation for this on page 30 of the Enterprise PeopleTools 8.50 Installation for Oracle (Task 1-5-7: Defining Server Domain Configurations).  I also just found a pretty good link in PeopleBooks about the settings. In order to fix my problem, I did the following:

  • Shut the Application Server and the Process Scheduler Server down
  • Configured the PS_CFG_HOME variable
    • Right click on My Computer
    • Choose Properties
    • Go to the Advanced Tab
    • Click on the Environment Variables
    • Add a new system variable
    • Enter PS_CFG_HOME for the variable name
    • Enter the path to the PeopleSoft Home directory for the value
  • Copied everything from the %USERPROFILE%\psft\pt to the PeopleSoft Home directory.  There were several folders that it wanted to merge, but I didn’t see any files that it wanted to overwrite.  I skipped the peopletools.properties file because it was the same in both locations.
  • Checked the value of %PS_CFG_HOME% in a Command Window.  If the value is not accurate, you might need to close the window and reopen a new one.
  • Reconfigured the Application Server and Process Scheduler (I didn’t change any values, but this let it regenerate the configuration files)
  • Booted the Application Server and Process Scheduler

Oracle Info on Sun Merge

This article interested me:

Computer World: Oracle to provide Sun road map next week

I am curious what this will mean for some of Sun products.  The ones that strike my curiosity are:

MySQL: Oracle bought a piece of MySQL already.  Now they are buying the whole thing.  I wonder what this means to the business model and distribution.  Are they going to keep it open source in the same fashion?  Note that Oracle already owns the Inno DB Engine for MySQL (see Wikipedia)

Solaris: Oracle already has Unbreakable Linux.   So, this makes the second OS for them.

Java: Oracle already has the JRocket VM from Bea.  Are they going to merge them, or do they fit different niches?

Virtual Box:  Oracle already has their Oracle VM, which is based off of Xen.  Again, will they try to merge them?

Hardware: I liked the suggestion that maybe Oracle might offer a Database Appliance with both their software and hardware.  The problem is that database implementations are so varied, it would be hard to create a one size fits all solution.

Open Office: I almost forgot this one.  This puts Oracle more in competition with Microsoft.  This is the one major alternative for MS Office.  This could put a big hurting on the world of Linux if Oracle harms Open Office.

Net Beans: Oracle already has JDeveloper.  Again, this is more redundancy.

Well, I guess we will find out more tomorrow.  Although, I still wonder if they are still changing their plans for PeopleSoft.  Sun is such a large company, there is no way they could come up with a perfect plan that they won’t have to change something.  We may have to wait 5 years or more to see where they take it.

Other related articles:

Bex Huf: Finally! Oracle Gets Approval for Sun Acquisition!

The H Open Source: Oracle clarifies plans for Java tools and OpenOffice

Information Work: MySQL Users Wary On Oracle Acquisition

What company is next?:

The ORACLE-BASE Blog: Red Hat heading for Oracle buyout?

I remember reading someone mentioning that when Red Hat bought JBoss, it put them in competition with Oracle.  Then, we saw Oracle start selling Unbreakable Linux.  I wonder if they are really on the radar?

Letter Generation Error

We had an error with the 3CEngine the other day.  Here is the error and the fix in case it helps anyone else or in case I have this same problem later on.

From the Application Engine Output:

File: e:pt84912b-retailpeopletoolssrcpsappengaedebug.hSQL error. Stmt #: 1603  Error Position: 0  Return: 805 - [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert duplicate key row in object 'dbo.PS_COMMUNICATION' with unique index 'PS_COMMUNICATION'.
Failed SQL stmt:INSERT INTO PS_COMMUNICATION (COMMON_ID, SEQ_3C, SA_ID_TYPE, COMM_DTTM, INSTITUTION, ADMIN_FUNCTION, COMM_CATEGORY, COMM_CONTEXT, COMM_METHOD, INCLUDE_ENCL, DEPTID, COMM_ID, COMM_DT, COMM_BEGIN_TM, COMM_END_TM, COMPLETED_COMM, COMPLETED_ID, COMPLETED_DT, COMM_DIRECTION, UNSUCCESSFUL, OUTCOME_REASON, SCC_LETTER_CD, LETTER_PRINTED_DT, LETTER_PRINTED_TM, CHECKLIST_SEQ_3C, CHECKLIST_SEQ, COMMENT_PRINT_FLAG, ORG_CONTACT, ORG_DEPARTMENT, ORG_LOCATION, PROCESS_INSTANCE, EXT_ORG_ID, VAR_DATA_SEQ, EMPLID_RELATED, JOINT_COMM, SCC_COMM_LANG, SCC_COMM_MTHD, SCC_COMM_PROC) SELECT A.COMMON_ID, 1, A.SA_ID_TYPE, GETDATE(), A.INSTITUTION, A.ADMIN_FUNCTION, A.COMM_CATEGORY, A.COMM_CONTEXT, A.COMM_METHOD, A.INCLUDE_ENCL, ' ', ' ', { fn CURDATE() }, NULL, NULL, 'N', ' ', NULL, A.COMM_DIRECTION, A.UNSUCCESSFUL, A.OUTCOME_REASON, A.SCC_LETTER_CD, NULL, NULL, A.CHECKLIST_SEQ_3C, A.CHECKLIST_SEQ, A.COMMENT_PRINT_FLAG, 0, 0, 0, 0, ' ', 0, A.EMPLID_RELATED, A.JOINT_COMM, ' ', ' ', ' ' FROM PS_ENG_COMM_TMP4 A WHERE COMMON_ID = '1784656' AND SA_ID_TYPE = 'P' AND INSTITUTION = 'NPCCS' AND EVENT_3CS_ID = 'F24_COMM' AND COMM_KEY = 'F24' AND SEQNO = 331

Process 11123 ABENDED at Step 3CENGINE_LIB.COMMINST.Step02 (SQL) -- RC = 805 (108,524)

The keys on the Communication Table are the COMMON_ID and the SEQ_3C.  So, most likely, the problem is that is trying to insert a Sequence number that already exists.

Here is some SQL that you can use to find the problem:

SELECT TOP 200 A.COMMON_ID, A.SEQ_3C, B.SEQ_COMM_LAST
FROM PS_COMMUNICATION A, PS_LAST_3CS_TBL B
WHERE A.SEQ_3C = (SELECT MAX(SEQ_3C)
FROM PS_COMMUNICATION
WHERE COMMON_ID = A.COMMON_ID)
AND A.COMMON_ID = B.COMMON_ID
AND B.SEQ_COMM_LAST < A.SEQ_3C

Here is some SQL that you can use to fix the problm:

UPDATE PS_LAST_3CS_TBL
SET SEQ_COMM_LAST = (SELECT MAX(SEQ_3C)
FROM PS_COMMUNICATION A
WHERE A.COMMON_ID =  PS_LAST_3CS_TBL.COMMON_ID)
WHERE EXISTS (SELECT ‘X’
FROM PS_COMMUNICATION A
WHERE A.COMMON_ID =  PS_LAST_3CS_TBL.COMMON_ID
AND A.SEQ_3C > PS_LAST_3CS_TBL.SEQ_COMM_LAST
AND A.SEQ_3C =  (SELECT MAX(SEQ_3C)
FROM PS_COMMUNICATION A
WHERE A.COMMON_ID =  PS_LAST_3CS_TBL.COMMON_ID) );

If you want to look at the code in the App Engine, the Sequence Number is calculated in the 3CENGINE_LIB.COMMLSEQ section.  It loads the Sequence number from the PS_LAST_3CS_TBL table.

PeopleSoft HCM9.1/PeopleTools 8.50 Virtual Images

Back in September, I talked about Virtual Images from Oracle.  Well, I have downloaded the images and started tinkering with a little bit.  It’s not much, but here is what I have so far.

You can download the images from:

http://edelivery.oracle.com/oraclevm

The images are compressed multiple times.  If you are in Windows, I would recommend using 7-zip for extracting.  WinZip will probably do the trick too.  In, Linux, FileRoller did the trick for me.  The unzip and tar commands would do just as well.

Here are the sizes that I found:

Application/Batch Server

  • V18477-01.zip = 3.6 GB
  • Extracts to OVM_EL5U2_X86_64_AB85002_HCM91_PVM.tgz = 3.6 GB
  • Extracts to folder: OVM_EL5U2_X86_64_AB85002_HCM91_PVM = 13.9 GB

Web Server

  • V18478-01.zip = 2.0 GB
  • Extracts to OVM_EL5U2_X86_64_PIA85002_PVM.tgz = 2.0 GB
  • Extracts to folder OVM_EL5U2_X86_64_PIA85002_PVM = 9.9 GB

Database

This one is a little more complicated because it came in two parts.

Part 1

V18479-01.zip = 3.4 GB

Extracts to OVM_EL5U2_X86_64_HCM91_PVM.tgz.1of2 = 3.5 GB

Part 2

V18480-01.zip = 3.2 GB

Extracts to OVM_EL5U2_X86_64_HCM91_PVM.tgz.2of2 = 3.3 GB

Combining:

cat OVM_EL5U2_X86_64_HCM91_PVM.tgz.1of2 OVM_EL5U2_X86_64_HCM91_PVM.tgz.2of2 > OVM_EL5U2_X86_64_HCM91_PVM.tgz

OVM_EL5U2_X86_64_HCM91_PVM.tgz = 6.8 GB

This extracted to the folder OVM_EL5U2_X86_64_HCM91_PVM = 55.6 GB

You could save yourself some disk space by piping the cat output directly to tar (I didn’t test this):

cat OVM_EL5U2_X86_64_HCM91_PVM.tgz.1of2 OVM_EL5U2_X86_64_HCM91_PVM.tgz.2of2 | tar -xz

Cat is a Linux/Unix command.  I am not sure how you would do that in Windows.

Now, that you have them extracted, the next step is to get them booted.  I didn’t try to install the Oracle VM or Xen.  My plan is try to get them to run in Virtual Box, but I haven’t accomplished that yet.  More on that to come.  I hope the file sizes and such help for now.

PeopleTools Bug: Job Data CI

This is another look at an old post.  In summary, the problem is that when you create a Component Interface for the Job Data component, PeopleTools errors.  I decided to attempt to diagnose the PeopleTools bug by tracing it.

I tried this in PeopleTools 8.49.

Here are the last lines of the trace file:

1-8280 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=2 length=11 value=SKP_JOB2_CI

1-8281 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=6 length=4 value=4

1-8282 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=6 value=JOB_JR

1-8283 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=2 length=17 value=CONT_SAL_TYPE_BRA

1-8284 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=6 length=4 value=536

1-8285 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-6 type=6 length=4 value=1

1-8286 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-7 type=6 length=4 value=2

1-8287 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-8 type=6 length=4 value=0

1-8288 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-9 type=2 length=17 value=00-00-01-00-02-00

1-8289 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-10 type=2 length=6 value=JOB_JR

1-8290 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-11 type=2 length=0 value=

1-8291 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-12 type=2 length=17 value=CONT_SAL_TYPE_BRA

1-8292 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-13 type=2 length=0 value=

1-8293 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-14 type=6 length=4 value=0

1-8294 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-15 type=6 length=4 value=25008

1-8295 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=2 length=11 value=SKP_JOB2_CI

1-8296 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=6 length=4 value=4

1-8297 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=6 value=JOB_JR

1-8298 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=2 length=11 value=DUTIES_TYPE

1-8299 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=6 length=4 value=523

1-8300 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-6 type=6 length=4 value=1

1-8301 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-7 type=6 length=4 value=2

1-8302 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-8 type=6 length=4 value=0

1-8303 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-9 type=2 length=17 value=00-00-01-00-02-00

1-8304 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-10 type=2 length=6 value=JOB_JR

1-8305 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-11 type=2 length=0 value=

1-8306 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-12 type=2 length=11 value=DUTIES_TYPE

1-8307 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-13 type=2 length=0 value=

1-8308 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-14 type=6 length=4 value=0

1-8309 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-15 type=6 length=4 value=25009

1-8310 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=2 length=11 value=SKP_JOB2_CI

1-8311 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=6 length=4 value=4

1-8312 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=6 value=JOB_JR

1-8313 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=2 length=14 value=INTCP_BUS_UNIT

1-8314 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=6 length=4 value=512

1-8315 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-6 type=6 length=4 value=1

1-8316 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-7 type=6 length=4 value=2

1-8317 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-8 type=6 length=4 value=0

1-8318 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-9 type=2 length=17 value=00-00-01-00-02-00

1-8319 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-10 type=2 length=6 value=JOB_JR

1-8320 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-11 type=2 length=0 value=

1-8321 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-12 type=2 length=14 value=INTCP_BUS_UNIT

1-8322 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-13 type=2 length=0 value=

1-8323 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-14 type=6 length=4 value=0

1-8324 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-15 type=6 length=4 value=25010

1-8325 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=2 length=11 value=SKP_JOB2_CI

1-8326 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=6 length=4 value=4

1-8327 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=6 value=JOB_JR

1-8328 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=2 length=13 value=INTCP_COMPANY

1-8329 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=6 length=4 value=516

1-8330 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-6 type=6 length=4 value=1

1-8331 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-7 type=6 length=4 value=2

1-8332 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-8 type=6 length=4 value=0

1-8333 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-9 type=2 length=17 value=00-00-01-00-02-00

1-8334 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-10 type=2 length=6 value=JOB_JR

1-8335 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-11 type=2 length=0 value=

1-8336 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-12 type=2 length=13 value=INTCP_COMPANY

1-8337 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-13 type=2 length=0 value=

1-8338 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-14 type=6 length=4 value=0

1-8339 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-15 type=6 length=4 value=25011

1-8340 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=2 length=11 value=SKP_JOB2_CI

1-8341 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=6 length=4 value=4

1-8342 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=6 value=JOB_JR

1-8343 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=2 length=14 value=INTCP_COMPANY2

1-8344 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=6 length=4 value=517

1-8345 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-6 type=6 length=4 value=1

1-8346 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-7 type=6 length=4 value=2

1-8347 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-8 type=6 length=4 value=0

1-8348 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-9 type=2 length=17 value=00-00-01-00-02-00

1-8349 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-10 type=2 length=6 value=JOB_JR

1-8350 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-11 type=2 length=0 value=

1-8351 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-12 type=2 length=14 value=INTCP_COMPANY2

1-8352 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-13 type=2 length=0 value=

1-8353 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-14 type=6 length=4 value=0

1-8354 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-15 type=6 length=4 value=25012

1-8355 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=2 length=11 value=SKP_JOB2_CI

1-8356 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=6 length=4 value=4

1-8357 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=6 value=JOB_JR

1-8358 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=2 length=12 value=INTCP_DEPTID

1-8359 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=6 length=4 value=513

1-8360 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-6 type=6 length=4 value=1

1-8361 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-7 type=6 length=4 value=2

1-8362 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-8 type=6 length=4 value=0

1-8363 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-9 type=2 length=17 value=00-00-01-00-02-00

1-8364 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-10 type=2 length=6 value=JOB_JR

1-8365 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-11 type=2 length=0 value=

1-8366 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-12 type=2 length=12 value=INTCP_DEPTID

1-8367 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-13 type=2 length=0 value=

1-8368 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-14 type=6 length=4 value=0

1-8369 06.50.28 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-15 type=6 length=4 value=25013

1-8370 06.50.32 3.335000 CMgrUpdateTransaction::OnAbort

1-8371 06.50.32 0.000000 CMgrUpdateTransaction::OnAbort

1-8372 06.50.32 0.111000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 COM Stmt=SELECT DISPLAYONLY FROM PSOPROBJ A, PSOBJGROUP B WHERE B.ENTTYPE = :1 AND B.ENTNAME = :2 AND A.CLASSID = :3 AND (A.OBJGROUPID = '*ALL DEFINITIONS*' OR A.OBJGROUPID = B.OBJGROUPID) UNION SELECT 2 FROM PSOBJGROUP WHERE ENTTYPE = :4 AND ENTNAME = :5 ORDER BY 1

1-8373 06.50.32 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 SSB column=1 type=6 length=4 scale=0

1-8374 06.50.32 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-1 type=1 length=1 value=D

1-8375 06.50.32 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-2 type=2 length=1 value=

1-8376 06.50.32 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-3 type=2 length=7 value=HCPPALL

1-8377 06.50.32 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-4 type=1 length=1 value=D

1-8378 06.50.32 0.000000 Cur#1.4240.HCM90 RC=0 Dur=0.000000 Bind-5 type=2 length=1 value=

1-8379 06.50.32 0.001000 Cur#1.4240.HCM90 RC=1 Dur=0.000000 Fetch

1-8380 06.50.35 3.214000 Tuxedo session opened { DisconnectAll at01C88868, pid=4240}

Here is the insert statement that the error message reported:

INSERT INTO PSBCITEM ( 
    BCNAME, BCTYPE, BCITEMPARENT, BCITEMNAME, 
    SEQUENCE_NBR_6, BCACCESS, BCSCROLL, BCSCROLLNUM, 
    BCSCROLLNAME, RECNAME, SUBRECNAME, FIELDNAME, COMMENTSHORT, 
    MPDEVICEPERSISTINT, SYNCID
) VALUES ( 
    :1, :2, :3, :4, 
    :5, :6, :7, :8, 
    :9, :10, :11, :12, :13, 
    :14, :15
)

So, I looked up the table, and the keys are the first four fields: BCNAME, BCTYPE, BCITEMPARENT, and BCITEMNAME.

Assuming the last row is the duplicate, that means that another row has the same parent and name as:

Type = 4

Parent = JOB_JR

Item Name = INTCP_DEPTID

I did a search through the trace, and the INTCP_DEPTID only exists in this one location.  So, I don’t know what the problem is — our mystery goes unsolved.  What makes it more confusing is that saving a second time fixes the problem.

Maybe I will pull all of the Bind values into an Excel and see if I can find duplicates that way.  But, that is an exercise for another day.

Querying the Component

Here are some queries to find things out about the component.

This one is a simple list of all the fields in the component (doesn’t take into account subpages, etc):

SELECT CP.PNLGRPNAME, CP.MARKET, CP.DESCR,
           CPG.PNLNAME, CPG.ITEMLABEL,
           PG.DESCR,
           PGF.FIELDTYPE, PGF.LBLTEXT, PGF.RECNAME, PGF.FIELDNAME
FROM PSPNLGRPDEFN CP,
         PSPNLGROUP CPG,
         PSPNLDEFN PG,
         PSPNLFIELD PGF
WHERE CP.PNLGRPNAME = 'JOB_DATA'
     AND CP.MARKET = 'GBL'
    AND CP.PNLGRPNAME = CPG.PNLGRPNAME
    AND CP.MARKET = CP.MARKET
    AND PG.PNLNAME = CPG.PNLNAME
    AND PGF.PNLNAME = PG.PNLNAME;

This one shows just the records involved:

SELECT DISTINCT CP.PNLGRPNAME, CP.MARKET, CP.DESCR,  PGF.RECNAME, R.RECDESCR, R.RECTYPE
FROM PSPNLGRPDEFN CP,
         PSPNLGROUP CPG,
         PSPNLDEFN PG,
         PSPNLFIELD PGF,
         PSRECDEFN R
WHERE CP.PNLGRPNAME = 'JOB_DATA'
     AND CP.MARKET = 'GBL'
    AND CP.PNLGRPNAME = CPG.PNLGRPNAME
    AND CP.MARKET = CP.MARKET
    AND PG.PNLNAME = CPG.PNLNAME
    AND PGF.PNLNAME = PG.PNLNAME
    AND PGF.RECNAME = R.RECNAME;

I hope this helps.