Thursday 2 December 2010

Efficient looking into jas logs…

There is so much rubbish in jas logs, so I’ve created the following command to make things a little easier.

It’s not perfect, but it’s a goo d start.  From 37000 line to 192 that have some value

cat e1root_20101128.log |grep -v "com." |grep -v VTComponent.setFocused | grep -v java.lang.NullPointerException |grep -v sun. |grep -v java. |grep -v java.lang.NumberFormatException |grep -v successfully |grep -v BusinessView.isAliasinBSVW |grep -v JDENET.tempFileDir |grep -v "Update: Update Pkg"

Friday 26 November 2010

Want to search my blog

For some reason the search does not work.  It’s frustrating me and others.  Here is a little work around that I’ve trialed

http://www.google.com.au/search?q=PDF+site:http://shannonscncjdeblog.blogspot.com&hl=en&num=10&lr=&ft=i&cr=&safe=images

Above I’m searching for PDF on my blog, you can edit it how you want.

http://www.google.com.au/search?q=SEARCH TERM+site:http://shannonscncjdeblog.blogspot.com&hl=en&num=10&lr=&ft=i&cr=&safe=images

I might also look for a better solution, but what is better than google???  Nothing…

Thursday 18 November 2010

Installing fusion middleware 11G

Read the instructions I always say…  I don’t always do…

I’ve installed the middleware, but nor run the rcu.bat “Repository Creation Utility”.

So, I had to download this from:  http://www.oracle.com/technetwork/middleware/downloads/fmw-11-download-092893.html, more specifically search for Repository Creation Utility (11.1.1.2.1)

download the 300ish Mb and extract zip file

goto bin dir and run rcu.bat

image

Create

image

Enter your database details

image

Check

image

Next

image

I needed to connect as user sys using sysdba privs.  Note that I did not select the identity management schemas, as they are a little sensitive

image

Enter your password

image

You need to change the two passwords as a minimum, above

image

create Table spaces

image

Create

image

Then, the process runs for ages (for us anyway, we are using an old VM machine)

image

Then you can run the SOA installer!

emctl show em status and URL

Quite often I struggle to remember the URL for oracle DB em and also struggle to know if it’s up…  Well, here is the solution.

login to DB machine as oracle

emctl status dbconsole

[oracle@E1DB ~]$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://E1DB.MITS.LOCAL:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /u01/app/oracle/product/11ovm/db_1/E1DB.MITS.LOCAL_jdevm/sysman/log

I thought I blogged this, but I cannot find it.

New location, new professional attitude, new look

I’ve gone up market and moved from http://moistymoistymoisty.blogspot.com to http://shannonscncjdeblog.blogspot.com  for obvious reasons.  Hopefully followers can see the change and get told about it.

More BI Publisher

I’ve been doing some work on a POC for embedded BIP and will be writing a few things about it’s functionality.

Previously all intermediate files and PDF files were only available temporarily while the process was running, now this has all changed.

When BIP is enabled for a report in E1, the report produces an XML file which is the raw data and it also produces all of the output files - which JDE also stores - in tables!

· F95630 contains the XML data created from the UBE run.

· F95631 contains the actual output files.

So, VERY easily a UBE could be written or a DB procedure to extract the files to a flat file location.

Note that you can also activate some JDE.INI settings to write them to the local machine, and therefore script them out to another dir too:

[UBE] section
BipSaveOutputOnFs= 0 or 1

A value of 1 enables the archiving of Report Definition Output. The default value is 0 (zero).  If the value is 0, archiving is turned off and report output is saved only in the F96531 table, not in the file system.
BipOutputDirectory=

https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=HOWTO&id=816003.1

A client that does a lot of XMLP / BIP will need to be very wary of growth in this tablespace.

Wednesday 17 November 2010

my DAD server

Data access driver I mean.

It’s a strange beast, so I thought that I write some things down about it.  Firstly you cannot start or stop it, so yeah…  That it a little weird.  Well, at least you cannot start and stop it from Server Manager.

You also don’t need to download a software component for it, it just seems to exist.

I installed BIP on OEL, which eventually installed to a path like:

/home/oracle/OraHome_1/oc4j_bi/j2ee/home/applications/xmlpserver/xmlpserver/WEB-INF/lib

The DAD install seems to bang a bunch of JAR files in the dir above, you can see this from the .properties file in the server manager agent directories.

I also think that this thing starts when you access it from BIP, i.e. when the jars are loaded into memory.  So you need to get all of the settings right first.

image

Once these are in, then you can test the connection.  If the test works, the SM will tell you DAD is working

Note also that you need to enter the tnsnames.ora details into the SM config for the application.

image

Then in BIP you can use the DAD connection for queries:

image

Tuesday 16 November 2010

Oracle BI Publisher and 64 bit office

This combo will not work…  Well it did not work for me.  When I had office downgraded, everything worked like a peach!  What an awesome waste of time!  Office 2010 32 bit is fine, office 2010 64 bit does not work.

Monday 15 November 2010

bi publisher desktop won’t install

I’m running windows 7 virtual on OVM with office 2010.  Have E1 fat boy and oracle 11G client.  I’m using this machine for some BIP prototype work – cool.

But, I keep getting:

image

“Template Builder Installer failed": Unexpected Error”

People are putting all sorts of stuff on forums that look like pot shots.  “Try uninstall and install again” – huh??? Call me Mr. Crazy trousers, but computers generally do the same thing given the same input.

How about I find some log files and go from there.

C:\Users\ShannonM\AppData\Local\Temp has TemplateBuilderInstaller.log – WOW!  direct hit.

This has:

Word process check start
Error No.: 339
Description: Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid

WOW again, direct hit.

I need to install this file, mscomctl.ocx does not exist on my machine

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=25437d98-51d0-41c1-bb14-64662f5f62fe&displaylang=en

913Kb file above, install it.  You can install this on 64 windows.

image

Yeah baby!

image

Hmm, we’ll see

Right…  That did not work, even when I tried the repair…  Damn!

I tried a few other things, and then..

http://www.ascentive.com/support/new/support_dll.phtml?dllname=MSCOMCTL.OCX

Downloaded this file (the file only)

regsvr32 full path to mscomctl.ocx

restart the installation!

Friday 12 November 2010

script to compile external function on AIX to link in JDE functions

I use the script below to compile an OSA program on AIX for 812 release.  This should be pasted into a ksh script and made executable.

You can then run it as you JDE user, it should find most things dynamically. Actually, there are heaps of paths that you are going to need to change.

#!/usr/bin/ksh
if [ $# -ne 3 ]
  then
    echo "Your parameter count of $# is wrong"
    echo "USAGE $0 <source module> <FULL PACKAGE> <output filename>"
    echo "Note this is WITHOUT extensions for the sourcefilename"
    echo "eg:  $0 CUBOutput DV9FA libCUBOSA.sl"
    exit
fi

SOURCE=$1
FULLPACKAGE=$2
OUTPUT=$3

cc -qalign=natural -qflag=I:I -c -O2 -DKERNEL -DPRODUCTION_VERSION -DNATURAL_ALIGNMENT -DUSESPECIALGPA4BB -DUSETABLEHEADERFROMINCLUDEA -I/apps/j
deapp/e812/packages/${FULLPACKAGE}/include/ -I/apps/jdeapp/e812/system/include -I/apps/jdeapp/e812/system/include/xml -I/apps/jdeapp/e812/system
/includev $SOURCE.c -o $SOURCE.o
if [ $? -ne 0 ]
  then
    echo "Compilation failed, please fix errors and try again"
    exit
fi
ls -l $SOURCE.o

ld -b32 /lib/crt0.o -bpT:0x10000000 -bpD:0x20000000  -bI:/apps/jdeapp/e812/system/bin32/funclist.imp -bM:SRE -bexpall -brtl -lc -lm -bnoentry -L
. -L/apps/jdeapp/e812/system/lib -ljdelib -lcallobj -lerror -lgentext -ljdb -ljde_erk -ljdecache -ljdeddapi -ljdeknet -ljderepl -ljdeschr -ljdes
ec -ljdespec -ljdetam -llanguage -lmisc -lpackage -lport -lqueueknl -lruntime -lsrc -ltransmon -lube -lworkflow -ljdesaw -ljdenet -lowver -ljdeu
nicode -lv_verify -lxerceswrapper -ltextsearch -lxmlpublisher -bloadmap:loadmap -o $OUTPUT $SOURCE.o -L/usr/vac/lib -lxlopt -L/usr/lib/threads -
lpthreads -lc
if [ $? -ne 0 ]
  then
    echo "Linking failed, please fix errors and try again"
    exit
fi

xm – xen manager for OVM

We are running a bunch of OVM in the office for our demo systems, it’s very cool.  I’m quite new to all of this, so apologies for the numpties view.

image

Above is the console that you do all your VM management from.  It’s pretty basic, but you can get the job done.  We have 10 virtual machines listed.

You can see the actual IRON that you’re using under the servers tab:

image

So I want to see what is going on on my host in terms of disk and CPU.  One of the guest machines is going bonkers and I want to see what the host is doing…  What do I do?

ssh (via putty [best software in the world{except for vi}]) to the server listed under the servers tab and execute:

xm top

This will give you a view of what the various machines are doing behind the scenes:

image

Note that top gives you nothing, you need to use the xm top function.

xm – xen management

from man:

DESCRIPTION
       The xm program is the main interface for managing Xen guest domains. The program can be used to create, pause, and shutdown domains. It can also be
       used to list current domains, enable or pin VCPUs, and attach or detach virtual block devices.

xm list

[root@MYRSVMH5D ~]# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
130_E1BSS                                  128  2048     2     -b----   3909.9
135_CRAIGDB10                              129  2048     2     -b----  27540.2
151_E1DEV2                                 160  4096     1     -b----   2229.8
99_E1DEPR2                                 131  4096     2     r----- 197255.2
Domain-0                                     0   563    16     r----- 363896.7
E1DB                                        18  8192     4     ------ 221778.2
E1ENT                                       33  4096     2     -b---- 110251.5
E1WEB                                       43  2048     2     -b----  90064.1
MYRSOVMM                                     1  2048     2     -b----  33083.4

This stuff is too easy and too cool!

Wednesday 10 November 2010

Check if oracle em is running and find the URL

At the command line, signed in as oracle:

[oracle@E1DB db_1]$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://E1DB.MITS.LOCAL:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /u01/app/oracle/product/11ovm/db_1/E1DB.MITS.LOCAL_jdevm/sysman/log

This is going to help me a lot!

Wednesday 3 November 2010

JDE login page without styles missing graphics – I changed the css - OAS

Are you running OAS

Did you change the webguistylesheet.css

Are you getting one of these

image

Don’t fear, there is a solution!

you have a corrupt web.xml

you’ll find the following in the log.xml, which will be in a location like

/u01/product/10.1.3.1/OracleAS_1/j2ee/TR812/log/TR812_default_group_1/oc4j

    <MSG_TEXT>Unable to dispatch JSP Page : Exception:oracle.jsp.parse.JspParseException: /share/css/webguistylesheet.jsp: Line # 2, &lt;%@ taglib prefix="webgui"       uri="http://java.peoplesoft.com/e1/webgui"%>

Error: "http://java.peoplesoft.com/e1/webgui" is not a registered TLD namespace. </MSG_TEXT>

You’ll need to follow steps in http://moistymoistymoisty.blogspot.com/2010/03/500-errors-logging-into-jde-and-then-on.html

gnome-session in OEL

I needed to run a graphical session on my OEL machine to change the date and time.  I have this post which shows me how to start an Z session via VNC: http://moistymoistymoisty.blogspot.com/2010/10/running-oracle-install-on-linux-oel.html – but I had to take this a step further and see a desktop and goto administration –> date and time.

Sure I could fumble my way through command line options – but this was bound to go wrong on a production machine.  I also needed to check the timezone settings, which could also take me a little bit of time.

The simple answer is to run “gnome-session” after setting up your vnc environment.  I know that this IS very simple, but when you don’t do it every day – it’s nice to write it down for next time.

Friday 29 October 2010

Feeling Blue? End of an Era…

On the 21/10/2010 Oracle announced that blue stack “reselling” is not available for new JDE customers.  Watch this space for what it’s going to mean for existing customers – although lets be honest…  90% of people only use the web server.

Thursday 28 October 2010

MSDEV 2008 and jde.ini

so after fighting and fighting to get msdev working with 2008 and windows 7 64 bit.  It seems that the solution is very simple.

[JDE_CG]

STDLIBDIR=$(COMP)\VC\lib
TPLNAME=EXEFORM2
ERRNAME=CGERR
TARGET=Optimize
INCLUDES=$(COMP)\VC\include;$(SYSTEM)\include;$(SYSTEM)\cg;$(APP)\include;$(SYSTEM)\includev
LIBS=$(COMP)\VC\lib;$(SYSTEM)\lib32;$(APP)\lib32;$(SYSTEM)\libv32
MAKEDIR=$(COMP)\VC\bin;$(COMP)\Common\MSDev98\Bin
USER=JDE
;VisualStudioVersion=8

Just comment out the section that references a Visual Studio version.  Works on the dep server and works on the fat client.

weblogic admin password for OVM templates

We’ve been doing a lot of work with the OVM templates and JDE and BPEL and BSSV and weblogic and about to start webcentre.  Wow, there is a lot of new toys to start playing with here.  We could not gain access to the weblogic console to check on some BSSV settings on the weblogic server for an 11G install.

Tried all of the defaults and the found:  http://dirknachbar.blogspot.com/2009/08/security-hole-in-fusion-middleware-11g.html

which shows

ps -ef |grep -i weblogic | grep -i password

and revealed that the password is "ovsadminE1"

Phew, that was nice to get.  Now we are in the VERY cool weblogic console.

image

IFSIO and JDE BSFN compilation problems

So you want to use native IFS file IO functions in B34A1010, but of course you are on XE or ERP8…  Well, you’ve looked at the metalink3 and worked out that it’s probably not looking too flash.

Well, I’m about to make your stop perspiring and potentially start air punching, cause I’ve done all of the hard work for you.

build an update package on the enterprise server (AS/400) with the one BSFN as normal.

My update package was called DVIFSIO (to confuse you)

My parent package is DVFSERVER

Replace your module file with the following command, this is compiled with the SYSIFCOPT(*IFSIO) command – ready for native IFS IO

CRTCMOD MODULE(DVIFSIO/B34A1010) SRCFILE(DVIFSIO/CMFG) OPTION(*EXPMAC *NOSHOWINC) OPTIMIZE(40) DEFINE(JDENV_AS400MUTEX PRODUCTION_VERSION JDBD2400 AS400V5R4) SYSIFCOPT(*IFSIO) STGMDL(*SNGLVL)

Then bang it into the CMFG SRVPGM with the following gem:

UPDSRVPGM SRVPGM(DVIFSIO/CMFG) MODULE(DVIFSIO/B34A1010) EXPORT(*ALL) RPLLIB(*ONLY) BNDSRVPGM(B7334SYS/JDELIB B7334SYS/JDEKRNL B7334SYS/OWVER) OPTION(*DUPPROC *DUPVAR *UNRSLVREF)

That’s it you say… Yep…  Well nearly.  This is going to update the SRVPGM in the update package dir.  You will need to copy that into the runtime dir (DV7333) for it to get picked up and used.

I’m certainly not advocating you use this without careful testing in non prod environments.  This is only one function.

This is only a work around, you can appreciate that you’d have to do this again after each full build.  The nice thing is that you can just do the UPDSRVPGM command (and you could do it to the live copy DV7333) after the build and deploy.

Thursday 14 October 2010

Usage tracking in jde

saw used to tell you the maximum connected user count for JDE and I think (correct me if I’m wrong) that you could also graph this for web servers.  This is web saw I’m talking about.

Is SM a step backwards in this area.  I cannot find stats on maximum connected users from SM, so I need to set up alerts to track the connected users information… 

The HISTORY=1 setting in the [SECURITY] section of the JDE.INI on the security server might be able to help.  It’ll show the login (01) and logout (02) records for users and record them in F9312.  This can be accessed from a form exit from P98OWSEC.

One of the guys here has written some scripts that download the information from SAW and graphs it – that is pretty cool!

Monday 4 October 2010

running oracle install on linux (OEL)

I love it when things turn out to be much easier than I anticipate.

Graphical interface with linux is not really my thing, I like some old skool putty action myself.

But, when faced with a command line installation of 500 options or GUI “oracle installer”, I’m going to go GUI (gooey) every time.

when installing oracle products, I su to oracle in putty session.

vncserver at the command line

 

You will require a password to access your desktops.

Password:
Verify:
xauth:  creating new authority file /home/oracle/.Xauthority

New 'E1WEB:1 (oracle)' desktop is E1WEB:1

Creating default startup script /home/oracle/.vnc/xstartup
Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/E1WEB:1.log

You’ll get the following on the screen.  Just choose a password and then use the VNC client on your desktop (I use realVNC) to access the server.

Remember that you are given a unique identifier at the end (E1WEB:1) The :1 is very important when connecting.

image

BTW, windows 7 “snipping tool” IS totally awesome.  Great for multiple desktops and virtuals etc.

Wednesday 29 September 2010

When writing external programs that hook into JDE DLLs remember…

In Microsoft visual studio 2005 you need to go into the project options to change the “Struct Member Alignment” to be 1 byte when using the fat client.  They use a more liberal 4 bytes when compiling the server code.  This puts a /Zp1 or /Zp4 in the linking command line.

image

If you don’t do this, when you look at your variables in the viewer, they’ll be missing some chars at the front.

Configure Windows Server to Be an Application Server

Windows memory manager divides up system memory into three different pools described in Table 7-1.

Table 7-1 Windows Server Memory Shares

Pool

Percent of Total Memory

Kernel and other system services

9%

File Cache

41%

Paged Memory

50%

Windows Server memory manager tries to balance each application's usage of memory by dynamically paging memory between physical RAM and a virtual memory paging file. If an application is particularly memory-intensive (like Oracle Database) or if a large number of applications are running concurrently, then combined memory requirements of the applications may exceed physical memory capacity.

The large proportion of memory reserved for file caching (41%) can be quite beneficial to file and print servers. But it may not be advantageous to application servers that often run memory-intensive network applications. A Windows Server file cache is particularly unnecessary for Oracle Database, which performs its own caching through System Global Area.

You can reset the Windows Server memory model from the default file and print server, with its large file cache, to a network applications model, with a reduced file cache and more physical memory available for Oracle Database.

See Also:

Your operating system documentation for instructions

This is harder in a cluster, as you cannot access these programs from the control panel.

So, if you have 14GB of memory, and the system is reserving 41% for file cache, this means that there is 5.74 reserved.  Your application can only use 8.26, 8.26 is reduced by 2 for the OS – and this might tell you why you are constantly paging!

Tuesday 7 September 2010

call stack jdenet kernels

If you are getting kernels failing (turning to Zombie), there are two places that you need to look:

1.  Look in the kernel logs themselves for any relevant messages

2.  Look in the jdenet logs, this will contain the "call stack" for the failure of the logic kernel.  This occurs on ALL platforms.

CTRAN.dll/N4900080/RouteShipment

CTRAN.dll/N4900200/LoadRoutingOptions

CTRAN.dll/B4900400/F4950SelectRoutingEntries

CTRAN.dll/N4900420/VerifyRoute

CTRAN.dll/N4901350/CalculateDates

CTRAN.dll/B4900890/CalculateWorkday

CMFGBASE.dll/UNKNOWN/GetWorkDayCalendar

CCORE.dll/UNKNOWN/GetDataDictionaryDefinition

A call stack is read top down, so the faulting program in the above call stack is "CCORE.dll/UNKNOWN/GetDataDictionaryDefinition". 

From the logs, all kernels were failing with the same call stack, so it would seem from the name of the function that there is a problem with the PD812\dddict or ddtext files - or maybe glbltbl.

The above tells us that NER N4900080 function RouteShipment was calling NER N4900200 function LoadRoutingOptions and so on!  This is a deep callstack.

Note that the JDE logs had similar messages about DD spec problems.

Thursday 26 August 2010

WAS6.1 on windows 2008

When installing WebSphere Application Server 6.1.x on Windows Server 2008 x64 (64 bit), the installer might not recognize Windows Server 2008 as a supported operating system.  You need to download the 32-bit version of the maintenance.xml file and replace each of the existing file for WebSphere Application Server, IBM HTTP Server and Web Server Plug-in products.  Please refer to IBM reference doc ID: 1315370 for more details.

Wednesday 25 August 2010

Error updating smc on deployment server

Of course, it does not have to be the deployment server, you could have smc anywhere – but it does make sense.

I was trying to upgrade 8.98.2.3 to 8.98.3.2 and kept getting nothing!  Just a screen flash.

Looked though the e1agent_0.log – never use notepad, get something that interprets carriage returns and NL chars and does not require exclusive access (come on microsoft, your combination of notepad and wordpad is a JOKE!!!).  You might see what I did, “Illegal command –file”

A quick KG search of that exact statement told me to run the manual command:

c:\jde_home\targets\_staging\redeployManagementConsole.cmd <adminPasswordForSM>

Remember that the smc must be up and running for this to work, which was not clear in the oracle doco.

I’m now on the new release and continue my adventures.

Tuesday 24 August 2010

opmnctl start as root accidently

Nothing worse than this.  You’ve been good.  You’ve been careful.  everything is installed as jde812, the entire oracle SOA suite…  JDE server manager, everything.  And then you go and wreck it all by starting things up as root accidently…  Then nothing will start as jde812 anymore…  Doh!

Anyway, not too hard to recover from.  Generally everything will be struggling to write logs.  So not much will start.  All you need to do is chown and chgrp all of the dirs back to the original user and owner.  I generally go to the JDE_HOME dir for SM and the root dir for the oracle install and run:

chgrp –R jde812 *

chown –R jde812 *

Then jde owns all of the logs and other items that it needs to write to.  You will then be able to start up the web servers and serverManager agent and go go go!

Thursday 19 August 2010

[JDENET_KERNEL_DEF1]

The [JDENET_KERNEL_DEF1] section actually refers to an internal kernel that JDE Engineering (development) uses for debugging purposes. You do not need to autostart this kernel. The actual JDENET is controlled by the parameter maxNetProcesses that is found in section [JDENET].


The JDESNET process (on Windows) or the parent JDENET_N (on all other platforms) process is the one that gets started when you start JDE services. It has the capability to launch the required kernels and when request messages come in from clients.


Based on the message identifier the JDESNET/JDENET_N will decide which kernel will handle this message and if this kernel is not available it will start one automatically.


The only kernels that is usually set to autostart is the Scheduler kernel (this is one kernel that has to be set to autostart due to design complications), Call Object kernel (these are set to autostart only for performance purposes.  These are not mandatory), Management Kernel (for Server Manager Runtime Metrics) and Metadata kernel (for EntepriseOne 8.12 and above releases only).

Wednesday 18 August 2010

What options are being used??

Ever wanted to know what command line options are being passed into an executable, well now you can.

I wrote a tiny bit of code that’ll print all of the options out to stdout in a cmd window.  If course this sort of thing is MUCH easier in unix, just echo $* inside a script.

The exe is here https://sites.google.com/site/cncninja/file-cabinet/printargs.rar?attredirects=0&d=1

Thursday 29 July 2010

Things you can do with JDE that people say you can’t

 

Q:  Can I print automatically with any version of JDE?  Can I print something twice?  Can I email a report to myself when complete?  Can I move large reports to a certain directory / alternate storage so that viewing the file won’t crash my webserver. 

A:  Yes, yes, yes you can use an OSA (Output Stream Access) program to automatically do “Anything” with a PDF file after it has been written.  I’ve used OSA’s to calculate the size of the PDF file and then substitute it with another file.  The other file gives the end user a URL to get the large PDF without killing the JVM or using the JVM memory!  OSA’s can automatically email a job to an end user once it has completed…  They are quite cool.

OSA’s have like an OCM for the UBE’s.  You can say for this user / version / ube / environment combo, automatically call this OSA.

Of course the new releases have functionality to printImmediate for a version with a flag on the BV, which is very handy too.  Although this does not allow for the printing twice, or emailing or other funky things.

Saturday 24 July 2010

dumb question – PK vs. unique index

Why does JDE have primary keys defined with the same columns as unique indexes?  I do not get it.  I’d guess that they take up the same space.  The DB is not going to allow the unique index to be “violated”, so why have the PK as well.  Can anyone tell me?

datapump nightmares

give me the old imp/exp

if someone gives you a simple task to datapump your way to victory, don’t trust em.

Datapump uses this thing called a directory to tell it where to grab the dump files from.

The parfile will look something like:

# PY impdp parfile
schemas=PRODCTL,PRODDTA
remap_schema=PRODCTL:CRPCTL,PRODDTA:CRPDTA
table_exists_action=truncate
content=data_only
directory=data_pump_myriad_dir
dumpfile=prod.dmp
logfile=crp_impdp.log  
job_name=crp_impdp

Note that this has the remap, which is guaranteed to generate REDO – thanks oracle!

But where is this pointing to? directory=data_pump_myriad_dir

look no further than: SELECT * FROM DBA_DIRECTORIES !  OF course you think!

Use the following to create a directory in the table:

create directory some_dir;
grant read, write on directory some_dir to micky_mouse;

Thursday 22 July 2010

Remove most of the data out of a table

I’ve been asked to archive off most of the data from a test environment.

As per usual, most of the data is in about 10 tables, that makes my job easy.

Client tells me I can use UPMJ to cull data, my job is easier…

Use this script

It’s pretty cool.

Essentially it:

  • drops all indexes
  • drops constraints
  • renames table
  • recreates original table
  • inserts required records
  • drops the renamed edition
  • generates all indexes

When you try and delete 90% of a large table, it’s going to kill the temp table space and redo if archive logging is enabled.  This method reduces the amount of temp needed and also reduces the amount of redo.  It creates nice contiguous tables and indexes too.

See that it does the security once again, because you are creating the table!

Environment refresh – ripper

So you have a oracle jde instance, say e1prod.  It’s 300GB and archive logging is enabled.

How are you going to refresh this sucker?  R98403 is going to take an epoch and also is going to generate too much redo.  row at a time, table at a time…  This is not going to be your friend.

so, I’ve created some scripts to get the job done, and generate no logging!  You cannot use data load or imp export because it forces redo logging when you do an owner remap.

I’ve developed a script that will create all of the metadata for you.  You need to create some ‘NOLOGGING’ clauses in some of the statements and change the owner in some of the statements.

so run this: script

then edit:

generateIndexes.sql

GeneratePKs.sql

change  “COMPUTE STATISTICS” to “COMPUTER STATISTICS NOLOGGING”

Change PRODDTA to UADTA

Then run something like this script:

Note that this script also sizes your tables properly, like an import export.

I did change the PCT_INCREASE for the INDEX and PK files to 30%, because these we set to the default amount.

Tuesday 20 July 2010

JDE.INI More entries that you could poke a stick at

Blogger, you make it ssoooooo hard up upload files.

I wanted to find the setting in the JDE.INI file to delay the UBE from starting so I could attached the debugger and step through the code on the server…  And I found this coool document, but I cannot seem to upload it to my blog.

All JDE.INI settings here

I’m working on something else, but in the meantime, here is that setting:

[DEBUG]

RunBatchDelay=60

Tuesday 13 July 2010

jdedebug jde.log the last line might not be the last line!

I’m using 8.98.1.1 – seems to be fairly solid release.

Doing some debugging on the server and the clients and they are telling me that a call to some DecimalTriggerGetByLT_CO_CRCD function, but it’s actually not.

There are a few debug lines that are not being flushed from the stdout / stderr.

When I debug the process through msdev, I put the Output=BOTH setting on for [DEBUG].  This has the affect of writing stdout to a window “Debug” in visual studio.  It’s slow, but it’s cool.

You then see the flushed io and the actual last statement that is being run, a cheeky select on the F03B11!!

So remember that your debug logs might be lying to you.

I think that there is a flush setting for the JDE.INI [DEBUG] stanza, but I don’t know what it is.

Wednesday 7 July 2010

Run applications on FAT or WEB client

What’s more politically correct?

Fat client?  Thick client?  They are both a little offensive.  Oh well…

When you are writing a quick app and the local CNC cannot get the local web running, what are you going to do?  That right, use the FAT boy for a quick test.

image

That’s right, edit the SIANSIF flag in F9860 for your application. 

W – Web Only

‘  ‘ – both  (NEEDS TO BE 1 SPACE)

C – client only

update ol812.f9860 set siansif = ' ' where siobnm = 'P55SCPXY' ;

remember to commit;  It must be a space too, not a ‘’ or null

Then OMW will look like:

image

Ahh, that’s better.

Warnings about this:

  • this is not good for testing, things DO NOT behave the same of FAT and THEN
  • Events can fire differently between the two environments
  • Do NOT use this for testing production bound code, naughty
  • You should use local web for testing, really.  Some form types do not work with the FAT

Tuesday 6 July 2010

green screen admin menu on 400 not coming up, new release

go jdeow/a98owmnu

Just in case you’re not seeing it properly.

sick of “ksh: /usr/bin/ls: 0403-027 The parameter list is too long.”

 

 

Running ls –l *.jdedebug.log and get “ksh: /usr/bin/ls: 0403-027 The parameter list is too long.”

use:

find . -name "*jdedebug.log" -exec ls -l {} \;

Wednesday 30 June 2010

Database links for beginners

It cannot be easier.  If you want to run SQL between database instances, why not use a database link.  Yeah, the security does seem a little loose, but the implementation is awesome.  Remember that you cannot run DML via the link, only SQL.  You can do updates, inserts and deletes – but no creates etc.

Say I have E1prod and E1dev databases.

Best thing is to create a link from e1prod to e1dev, as this is the more secure route.

login to e1prod with DBA permissions

create public database link "jde_e1dev.oracle.com"
connect to JDE
identified by password
using 'e1dev';

Then from e1prod you can do:

select count(1) from testdta.F0101@jde_e1dev ;

Note that the user name prefixes the dblink name, this is cool if you user other users.  Also all of your queries in e1dev over the link are going to use the JDE username.

You can check details of the link in select * from all_db_links;

Thursday 24 June 2010

practical advice for large index generation in JDE

E1 or JDE is not that smart when it comes to generating indexes…  In fact, it’s pretty bad.

Developers think that it’s easy, until they realise that the process is going to create all indexes on the F0911 without any parallelism and synchronously.  When you have 21 million records, you might be waiting 48 hours.  And you might be causing some pretty bad locking too.

So how do you get around this conundrum, developers are not too bright and that big “generate indexes” button is pretty damn attractive!!!

Firstly, secure all standard passwords – PRODDTA etc etc.  Developers are also well know for pressing “generate table” – classic.  Oh, how I love flashback for that one!

Secondly don’t let developers generate indexes, sure they can create them…  not generate.  Make it policy.  Secure that data source selection screen (W9866J)!

If you need to generate the indexes, do the following:

  • turn client logging on
  • Generate the table to an alternate data source
  • use findstr to extract the CREATE statements
  • find the index you want to generate
  • Change owner and tablespace information
  • paste query into SQL Plus

Now that is a set of steps that even a developer could understand!

I’m also a fan of having database only indexes, JDE does not need to know about them if you want them for performance only.  The only reason developers love to put them in is because of the poor API’s that are exposed to them in the FDA and RDA for fetch and fetch all… (or one of them)

Wednesday 23 June 2010

Connections, listeners and listener notifications

Connections are responsible for authenticating to JDE, to getting the structures of the DSTRs for the events that are coming in and also record information about the transaction server, although when they are started they do not connect to the transaction server. 

Connections have names like “E1_GuaranteedEvents”. 

The guaranteedEvents engine does the following when started:

loads jas.ini

load localBSFNCatalog

loads tnsnames.ora

logs user in

sends  

<?xml version="1.0" encoding="UTF-16"?>
<event-list-request><credentials><username>JDE</username><password>******</password><environment>JPY812</environment><security-token>******</security-token></credentials><environment>JPY812</environment></event-list-request>

receives

<?xml version="1.0" encoding="UTF-16"?><event-list-response><event-type-definition><category>RTE</category><type>NEWSCUST2</type><environment>JPY812</environment><active>true</active><subscribed-to>true</subscribed-to></event-type-definition></event-list-response>

<?xml version="1.0" encoding="UTF-16"?>
<get-subscriptions-request><credentials><username>JDE</username><password>******</password><environment>JPY812</environment><security-token>******</security-token></credentials></get-subscriptions-request>

<?xml version="1.0" encoding="UTF-16"?>
<receive-request><credentials><username>JDE</username><password>******</password><environment>JPY812</environment><security-token>******</security-token></credentials><sessionId>4503880130953618278796531134073486669</sessionId><timeout>2000</timeout></receive-request>

<?xml version="1.0" encoding="UTF-16"?><receive-response><event><event-id>nopmctdev01x_172103107_6014_4300832_0205201011484217</event-id><category>RTE</category><type>NEWSCUST2</type><environment>JPY812</environment><sequence-number>11004339</sequence-number><date-time><milliseconds-since-epoc>1265376404000</milliseconds-since-epoc></date-time><xml-payload>&lt;?xml version = &apos;1.0&apos; encoding = &apos;UTF-8&apos;?&gt;&lt;jdeResponse category=&quot;RTE&quot; environment=&quot;JPY812&quot; pwd=&quot;&quot; responseCreator=&quot;XAPI&quot; role=&quot;*ALL&quot; session=&quot;3007d9d8&quot; token=&quot;&quot; type=&quot;realTimeEvent&quot; user=&quot;PETERSJO&quot;&gt;&lt;event&gt;&lt;header&gt;&lt;eventVersion&gt;1.0&lt;/eventVersion&gt;&lt;type&gt;NEWSCUST2&lt;/type&gt;&lt;user&gt;PETERSJO&lt;/user&gt;&lt;role&gt;*ALL&lt;/role&gt;&lt;application&gt;R55001CM&lt;/application&gt;&lt;version&gt;AALL001&lt;/version&gt;&lt;sessionID&gt;3007d9d8&lt;/sessionID&gt;&lt;environment&gt;JPY812&lt;/environment&gt;&lt;host&gt;nopmctdev01x&lt;/host&gt;&lt;sequenceID&gt;11004339&lt;/sequenceID&gt;&lt;date&gt;02052010&lt;/date&gt;&lt;time&gt;132644&lt;/time&gt;&lt;scope/&gt;&lt;codepage&gt;1252&lt;/codepage&gt;&lt;instanceInfo&gt;&lt;host&gt;nopmctdev01x&lt;/host&gt;&lt;port&gt;6014&lt;/port&gt;&lt;type&gt;JDENET&lt;/type&gt;&lt;/instanceInfo&gt;&lt;/header&gt;&lt;body elementCount=&quot;1&quot;&gt;&lt;detail DSTMPL=&quot;D5503B001B&quot; date=&quot;02052010&quot; executionOrder=&quot;0&quot; name=&quot;NewsCustomerRealTimeWrapperV2&quot; parameterCount=&quot;49&quot; time=&quot;13:26:44&quot; type=&quot;NEWSCUST2&quot;&gt;&lt;szCreditQueueInd type=&quot;String&quot;&gt;03 &lt;/szCreditQueueInd&gt;&lt;szState type=&quot;String&quot;&gt;NSW&lt;/szState&gt;&lt;szAddressLine4 type=&quot;String&quot;&gt;Ultimo                                  &lt;/szAddressLine4&gt;&lt;szAddressLine3 type=&quot;String&quot;&gt;t                       &lt;/szAddressLine3&gt;&lt;szAddressLine2 type=&quot;String&quot;&gt;                    &lt;/szAddressLine2&gt;&lt;szAddressLine1 type=&quot;String&quot;&gt;&lt;/szAddressLine1&gt;&lt;szZipCodePostal type=&quot;String&quot;&gt;2007        &lt;/szZipCodePostal&gt;&lt;szDisputeCode type=&quot;String&quot;&gt;03        &lt;/szDisputeCode&gt;&lt;cClientCommInd type=&quot;Character&quot;&gt; &lt;/cClientCommInd&gt;&lt;szBusinessUnit type=&quot;String&quot;&gt;253&lt;/szBusinessUnit&gt;&lt;szContactFaxNumber type=&quot;String&quot;/&gt;&lt;mnARInternalAccountID type=&quot;Double&quot;&gt;1040888&lt;/mnARInternalAccountID&gt;&lt;jdLastInvoiceDate type=&quot;Date&quot;/&gt;&lt;szCity type=&quot;String&quot;&gt;Sydney                   &lt;/szCity&gt;&lt;szRepCode type=&quot;String&quot;&gt; &lt;/szRepCode&gt;&lt;jdLastPaymentDate type=&quot;Date&quot;&gt;2006/07/10&lt;/jdLastPaymentDate&gt;&lt;mnTotalOutstanding type=&quot;Double&quot;&gt;0&lt;/mnTotalOutstanding&gt;&lt;szDebtorType type=&quot;String&quot;&gt;8&lt;/szDebtorType&gt;&lt;szBusinessIdentifier type=&quot;String&quot;&gt;                    &lt;/szBusinessIdentifier&gt;&lt;szContactName type=&quot;String&quot;&gt;&lt;/szContactName&gt;&lt;mnCurrentBalance type=&quot;Double&quot;&gt;0&lt;/mnCurrentBalance&gt;&lt;szCustomerAccountNumber type=&quot;String&quot;&gt;A0            &lt;/szCustomerAccountNumber&gt;&lt;cClientStopInd type=&quot;Character&quot;&gt; &lt;/cClientStopInd&gt;&lt;mnChargesThisPeriod type=&quot;Double&quot;&gt;0&lt;/mnChargesThisPeriod&gt;&lt;szCreditStatus type=&quot;String&quot;&gt;Refer to Credit               &lt;/szCreditStatus&gt;&lt;mnAmtAgingCategories7 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories7&gt;&lt;mnAmtAgingCategories6 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories6&gt;&lt;mnAmtAgingCategories5 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories5&gt;&lt;mnAmtAgingCategories4 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories4&gt;&lt;mnLastPaymentAmount type=&quot;Double&quot;&gt;32812.38&lt;/mnLastPaymentAmount&gt;&lt;mnCurrentYTDSpend type=&quot;Double&quot;&gt;0.00&lt;/mnCurrentYTDSpend&gt;&lt;mnAmtAgingCategories3 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories3&gt;&lt;mnAmtAgingCategories2 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories2&gt;&lt;mnAmtAgingCategories1 type=&quot;Double&quot;&gt;0&lt;/mnAmtAgingCategories1&gt;&lt;cGSTExemptFlag type=&quot;Character&quot;&gt;N&lt;/cGSTExemptFlag&gt;&lt;szCreditMessage type=&quot;String&quot;&gt;AD&lt;/szCreditMessage&gt;&lt;szAsccountSequenceKey type=&quot;String&quot;&gt&lt;/szAsccountSequenceKey&gt;&lt;szCustomerAccountName type=&quot;String&quot;&gt             &lt;/szCustomerAccountName&gt;&lt;mnTotalOverdue type=&quot;Double&quot;&gt;0&lt;/mnTotalOverdue&gt;&lt;szCreditTerm type=&quot;String&quot;&gt;030&lt;/szCreditTerm&gt;&lt;szSiteID type=&quot;String&quot;&gt;NA&lt;/szSiteID&gt;&lt;mnCreditLimit type=&quot;Double&quot;&gt;&lt;/mnCreditLimit&gt;&lt;szClientAccountNumber type=&quot;String&quot;&gt; &lt;/szClientAccountNumber&gt;&lt;szClientName type=&quot;String&quot;&gt; &lt;/szClientName&gt;&lt;szClientSequenceKey type=&quot;String&quot;&gt; &lt;/szClientSequenceKey&gt;&lt;jdDateChanged type=&quot;Date&quot;&gt;2009/10/09&lt;/jdDateChanged&gt;&lt;szSearchType type=&quot;String&quot;&gt;C  &lt;/szSearchType&gt;&lt;szLedgerType type=&quot;String&quot;&gt;T&lt;/szLedgerType&gt;&lt;szContactPhoneNumber type=&quot;String&quot;&gt;0292811777&lt;/szContactPhoneNumber&gt;&lt;/detail&gt;&lt;/body&gt;&lt;/event&gt;&lt;/jdeResponse&gt;</xml-payload></event></receive-response>

Event Acknowledged

<?xml version="1.0" encoding="UTF-16"?>
<acknowledge-request><credentials><username>JDE</username><password>******</password><environment>JPY812</environment><security-token>******</security-token></credentials><session-id>4503880130953618278796531134073486669</session-id></acknowledge-request>

Above  is the actual Event that has been received.  So the guaranteed event connection is going to JDE and via XML requests to the appropriate jdenet kernel, it’s getting all of the data.

Note that the connection sends a confirmation which will trigger the removal of the event from the F90710. 

This is then passed to the listener and then the listener notifications.  The listener is the one that listens for the events and passes them to the transaction server.

When they are started, they write ini files in the equivalent dir to “D:\EnterpriseOne\wsg\IntegrationServer\ini_files\E1_GuaranteedEvents_DV812”.  Note that changing these files makes no difference to runtime, you gotta change the config in the administration control panel.

A JDE listener has a connection to listen to, ie. like the “E1_GuarantedEvents” above.  It also has an environment associated with it.

Then you have listener notifications, which you need to create in the webMethods development tool.

Thursday 17 June 2010

Business Object Reservations P00095

Ever had your web server crash or app server crash and then you have lots of users ring up and say “I cannot get into batch XXX coz it’s locked by another user”?  …  No…  Well, don’t bother reading anymore.

If you do, you can look at P00095 (in fast path) to see the business object reservations.

image

Friday 11 June 2010

8.97 WSG Web Services Gateway observations

My first real deep dive into WSG was with 8.98 – where a transaction server is used.  The was on WebSphere too, so all of the MQ queues were also being used to store the messages and assist in the reliability of everything. The TXN server chatted to the enterprise server and used MQQueues to store messages and await the integration server to come and get them.  Once the messages were in a queue, the F90710 message was deleted.  Cool, so reliability ends when the message is put into a Queue.  Nice.

The next step is for anything to come and pop that message out of the txn servers queues.  This is where you have an integration server and the JDE adapters.  The guaranteed events adapter has the ability to read the metadata for the XML doc that is in the MQSeries Queue.  So you just tell that piece where to get some JDE information (so that it can determine DSTR’s for messages etc) and also where to find a txn server.  Then the integration server gets the messages from the txn server, and all is good.

image

A picture is worth 1000 words, so I think that the above basically covers things off.

This is totally different in 8.97 (so it seems).

I’m new to the 8.97 WSG implementation, but it seems that there is no txn server.  All messages flow directly to and from the adapters, without the reliable delivery / queueing mechanism that the transaction server caters for. 

We have a client that is using this for a big web based front end, this calls logic via WSG.  The adapter in WSG calls the JDE business functions which return data eventually back to the website.  This is nice, but this is SINGLE THREADED.  Therefore there might be 20 users on the external website, but when it comes to calling some JDE logic they all connect to a WSG instance which runs all requests in a single thread, which has one session to one call object kernel which is also single threaded.

So if you’re going to build an enterprise solution, don’t use this technology.  I believe things are getting better.  I remember the good old days when a single COM interface would distribute across all your logic kernels and flog the mutithreaded crap out of E1.  Take me back to the good old days.  I’m not an advocate of flat file transfers, but do like scalable solutions.

Tuesday 8 June 2010

The simple things in life…

So I want to look at the last 400000 lines of a debug file…  it’s a unix site, so it’s easy.

tail –n400000 filename.log > shannon.log

shannon.log now contains the last 400000 lines of the filename.log file.

Now I want the next 400000 lines, easy again.

tail –n800000 filename.log |head –n400000 > shannon.log

shannon.log now has the penultimate 400000 line chunck of the file.

Nice, and I can keep chopping it up like that!

Sunday 6 June 2010

P98770 - simple

image

Shows you active deployed packages and the updates that have been applied to them.

Thursday 20 May 2010

JDE E1 JAS “Record invalid” random errors

This is a classic and is occurring everywhere all of the time.  If you are getting errors like this, you must change the LocalLogicCatalog.xml file in the WEB-INF/Classes dir.  find the function that is failing (use the little yellow triangle when the error occurs on the browser) to find the function name.

Classics are b0000069.c and b0000095.c, there are heaps of others in the file.

Generally all of the table NERS (FXXXXX) run locally on the JAS server, but also the following “B”’s  Note that this is only in 8.98.2.2 (note that this sample is from 8.98.2.2, the functionality has been there for ages!

module="B0000045"
module="B0000069"
module="B0000095"
module="B0000128"
module="B0000130"
module="B0000198"
module="B0000399"
module="B0000580"
module="B0200098"
module="B03b0108"
module="B1100005"
module="B1100006"
module="B1100007"
module="B1100008"
module="B1100009"
module="B1100010"
module="B1100011"
module="B1100013"
module="B1100015"
module="B1100016"
module="B1100017"
module="B1100022"
module="B1701560"
module="B4000770"
module="B4002410"
module="B4301010"
module="B7600580"
module="B95400"
module="B9800100"
module="B9800150"
module="B9800181"
module="B9861a"

If these are bombing randomly for you,

Change the

<business-logic
         module="B0000045"
         function="ConvertNumericToString"
         run-local="true"/>

true to false, it is that easy.

WSJ cannot open .csv com.jdedwards.jas.ube? e1 JAS

Get prompted with “download .ube” file?  Don’t want this.  Try the registry setting below.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/csv]
"extension"=".csv"

Note that you should cut and paste this into a .reg file and run it on the machine that you want to get working!

From this:

image

to this:

image

Note that the change takes affect immediately.  No need to log in or out!

If you want the file name to have a decent name (R0010P…) you can set on

Server manager and a clustered agent for enterprise server

I could not find much “how to” documentation on this subject.

Actually, I could not find any.  I guess there is a point document out there, but my search skills are not up to scratch.

I have a client that is 8.96, they are upgrading to 8.98 and have clustered enterprise servers.  This is fairly easy to configure, but then how is server manager going to work?

I decided to install SM on the active node and install the files on the same drive as E1, so that the config would follow it’s way with JDE.  I do NOT think that this is the right move, but cannot be too sure.

I added the generic service clustered resource to the batch server group.  I then changed the properties of this service not to restart and not cause the group to restart.

Moved the group to the failover node and then installed the SM service on this second node (InstallAgentService.bat).  I then created some dependencies, that this service would only come up once JDE was up and the network name was up etc.  All important stuff.

I thought I had it in the bag, until…  I failed over and then went to the console.  The console was registering the base machines, not the cluster name.  So for each clustered server, I had two physical machines listed one with an active agent and active JDE and the other with shutdown JDE and shutdown agent. Surely this could get better!

I did some reading and they recommend host file changes for the cluster, but I don’t like doing that – especially for the agents that live on the cluster.

The only time you notice a problem is when you are running on a failover node – which is not a huge problem.  I’m guessing that if you do the following, the statistics will be available anyway:

  1. stop agent
  2. stop console
  3. rename folder in targets dir on agent for the service that you want to see
  4. start console
  5. start agent

I think you’ll then be able to see the server and the stats.

Wednesday 19 May 2010

INCORRECT_CONVERSION_TO_DBFORMAT

19 May 2010 09:40:39,332 [SEVERE] USERNAME - [BASE] com.jdedwards.database.base.JDBException: [INCORRECT_CONVERSION_TO_DBFORMAT] Formatting error on converting AN8 of Everest type 9 from OneWorld to database format. com.jdedwards.database.base.JDBException: [INCORRECT_CONVERSION_TO_DBFORMAT] Formatting error on converting AN8 of Everest type 9 from OneWorld to database format.
java.lang.NumberFormatException: Invalid string input - COVENTRY G

Every seen a bunch of these in you JAS logs and wondered what they are about? Well, this is where JDE uses some special logic on a numeric field to do lookups on address book. Some AN8 fields allow you to enter a client name, and it will get converted (like the send message when you can type AN8 or username).

It's a lot of logs for something that should not be an error!!

Friday 14 May 2010

AS/400 create table as basics

Ok, syntax lesson for CREATE TABLE on AS/400 SQL.

    • create table TESTDTA.F55XOBJ AS
    • (SELECT ABOBJ, count(1) AS COUNT
    • FROM TESTDTA.F55SUM
    • GROUP BY ABOBJ
    • HAVING COUNT(1) > 1)
    • WITH DATA | WITH NO DATA

Job done.  Just remember to alias your aggregates and include the data statement at the end!

More WSG

Messages are piling up with status 2, what is going on?  Easy

Remember the classic statement that will tell you everything about everything:

select count(1), ETEVNTST from testdta.f90710 group by ETEVNTST

Tell you the records and what status they are at.

If you have records at 2, it means that the trigger is not working, you need to create the trigger and the sequence.  Note that this is going to happen after every data refresh unless you manually create the trigger and the sequence in your prod environment (PRODDTA) so refreshes will pick it up.  Note that it will not get used in the prod environment, because it actually uses the SY812.F90710 (if you are being good and following best practice).

Note that this is oracle syntax:

Log on as JDEDBA

CREATE OR REPLACE TRIGGER TESTDTA.F90710_EVT_RIB
before insert on TESTDTA.F90710
for each row
declare
  nextseq number;
begin
  select TESTDTA.F90710_EVT_SEQ.nextval into nextseq from dual;
  :new.ETEVNTTIME := sysdate;
  :new.ETEVNTST := 3;
  :new.ETEVNTSEQ := nextseq;
end;
/

DROP SEQUENCE TESTDTA.F90710_EVT_SEQ;

CREATE SEQUENCE TESTDTA.F90710_EVT_SEQ
  START WITH 16011243
  MAXVALUE 999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  ORDER;

GRANT SELECT ON  TESTDTA.F90710_EVT_SEQ TO RO_TESTDTA;

GRANT SELECT ON  TESTDTA.F90710_EVT_SEQ TO RW_TESTDTA;

If you’ve got a bunch of data in there at 2, create a copy of the table.  Install your triggers and the insert the data back, then all of the correct things will happen and the events will be marked as 3.  Then when they start getting grabbed by the txn server they will be marked as 4.  Once the delivery has been confirmed, they will be deleted!

When things are broke:

  COUNT(1)   ETEVNTST
---------- ----------
      5521          2

When things are working:

  COUNT(1)   ETEVNTST
---------- ----------
      3384          3
       685          4

Thursday 22 April 2010

browser freeze with IE7

I was getting a problem in IE7 where it would freeze everytime a grid was about to be loaded. The solution was easy to find with Google, not with metalink search. I'm losing faith in that search.

You can create a reg file with the following contents and that should fix things:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32]
@="c:\\windows\\system32\\ieframe.dll"

Note that at the cleint that had this, seibel was installed and the reg setting about was pointing to a seibel installed DLL.

Seach metalink for 654767.1

Wednesday 21 April 2010

size of linux process


pmap –x <pid>

This shows the modules that are loaded too.  We were having problems with XMLP crashing with error 13.  The following setting in the JDE.INI needed to be changed:

[JDE JVM]

InProcessJVMHome=

RemoteDebugPort=-1

VMTrace=0

DefaultOptions=

XMLPVMOptions=-Djava.compiler=NONE –Xmx256M

Kill the XMLP process after you’ve saved the change above.  A new one will be started and you will be away.

Wednesday 31 March 2010

500 errors logging into JDE and then on databrowser

All difficult things start off being simple…  Or is it that all simple things start off being difficult…  I dunno.

A simple exercise to “skin” the JDE interface on am OAS 10.1.3.4 server sitting on linux…  Very simple.  We have a test server (local OAS same release).  Get all of the jpg’s, gif’s and jsp / css files working locally – perfect.

sftp the files to the web server, easy

backup the existing webstylesheetgui.jsp

move the new one in.

HTTP 500 error?  WTF?

okay, restart web app server

still broken… Hmmm

move old file back, all okay.

in relation to the error:

find a log:  /u01/product/10.1.3.1/OracleAS_1/j2ee/DV812/log/DV812_default_group_1/oc4j called log.xml containing something like:

    <MSG_TEXT>Unable to dispatch JSP Page : Exception:oracle.jsp.parse.JspParseException: /databrowser/ChooseTarget.jsp: Line # 20, &lt;%@taglib prefix="webgui"  uri="http://java.peoplesoft.com/e1/webgui"%>
Error: "http://java.peoplesoft.com/e1/webgui" is not a registered TLD namespace. </MSG_TEXT>

Something chunky to search, find lots of red herrings EVERYWHERE

Eventually cry myself to sleep and reinstall JDE on web server – amazingly then I CAN change the webstylesheetgui.jsp!!!  Changes come in…  Ripper…

THEN client tells me that databroswer has stopped with HTTP 500 error

Find issue:  https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1070574.1

(ironically the shite metalink3 search could not find this two nights ago)

  1. Make a copy of web.xml for backup and store it somewhere outside of webclient folder
  2. Make a copy of web.xml and rename it to web.xml.bad
  3. Edit web.xml and replace the current URL patterns:
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/*.mafService</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/*.maf</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/js/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/share/js/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/css/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/share/css/*</url-pattern>
    </filter-mapping>
    and replace with the following lines:
    <filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
  4. Restart web services
  5. Test Databrowser

If Databrowser still does not work after replace the above text then do the following:

  • Delete web.xml and rename web.xml.bad back to web.xml
  • Restart web services
  • Test Databrowser

 

The even more amazing thing about this is that it worked!!!

The initial step did nothing (replacing a section in the web.xml)..

The most amazing thing was that the delete and replace with the existing file DID fix it????  HUH???  Replace with a copy of the broken file fixed it?

Anyway, problem sorted.  I bet this would have even prevented me from reinstalled DV, PY and TR to get the stoopid skinning changes in…  Oh well, live and learn!

Friday 26 March 2010

Can’t delete a oc4j instance from 10.1.3.4 OAS

I had a situation where I tried to delete an oc4j instance from SM and from Oracle enterprise manager.  I tried all methods, but it would not go.  I then used the removeinstance command “./removeinstance -instanceName TRN812” which also did not really work…  But then I tried to create an instance with the createInstance command, and that DID work in creating a new instance and also deleting the corrupt one! 

I then was able to delete the new one I created and everything was peachy. 

OEM and JDE kept giving me an error like:

“Error reloading opmn server: java.io.IOException: /u01/product/10.1.3.1/OracleAS_1/opmn/bin//opmnctl: cannot execute”

So, some problem with the double slash.

Friday 19 March 2010

Windows Virtual PC and windows7

Wow, talk about some tight integration.  We can see windows virtual machines in the menu structure of my windows7 maching natively.

image

But also, even better, you can run applications from the VM on your desktop as if it’s just a normal application!

 

image

You can see in my menu that I’m running some old 32 bit apps that are not supported on 7 as if they are running natively on my machine.  The virtual machine is started in the background, so it takes a little while.  Totally awesome though!!!!

Note that there is a bit of a gotcha with the VMs and the use of “integrated security”.  I have my support VM’s so that they log in automatically, don’t really know local usernames or passwords.  But to use the “integrated security” functionality (like drive mapping), you need to log into the VM when you start it!  A little bit different!

Wednesday 10 March 2010

Definition of term wang

probably not the definition that you were expecting…

WANG: Term used to describe the process of fixing a technical issue, by a means that might be classified as a shortcut.  i.e. “I’ll wang them into the database, it should start working”.  wang-ify – to wang. wang-ification is the process of wanging something in. Past tense – wanged i.e. “He wanged them in the other day, it should be right”.  See also dewangification, the process of reversing a wang “Holy shit, it stopped working, might be time for dewangification.

Cannot add any objects through OMW

Can’t add a table or anything through OMW.  All I get is “Error: Invalid Parameters” at the bottom of the screen…  What is going on???  Missing UDC – you might have had a refresh of the control tables which has wiped out the following:

F0004

image

F0005

image

Just add her back and you’ll be away!

Thursday 18 February 2010

I want to manage OAS, what port is the Application Server Console on?

I tried looking at the opmn.xml files and grepping through all of the logs, but to no avail.

I tried netstat –p and a few other commands, but still had no success..

I then looked at the httpd.conf file for Apache and saw that the default port – grep httpd.conf Port and it’ll tell you the default port. 

Make sure that the home app is up using opmnctl –status

it was 7777 on my OEL Linux machine

I’ve tried lsof, but there does not seem to be a relationship between the java process and the apache process…  So, I’m going to find the port in the httpd.conf file.

mine was here, if this helps you…. /u01/product/10.1.3.1/OracleAS_1/Apache/Apache/conf

Friday 12 February 2010

Which cache is what cache – JDBj cache

There are 2 main caches that should be taken into consideration

  • Generic JDBC caching on JAS servers (service cache)
  • Internal JDEBASE DB caching – kernel (database cache)

If you want to clear the cache, you MUST clear both.  Remember that if you just do the web/service cache, your BSFN’s will validate against the wrong data!

 

Service Cache

The JDBC caching is easy, the cache just needs to be cleared, but there are two other caches that you need to consider. This is cleared by using SM for SAW depending on the release. In the newer releases of JDE this can be done over all instances – which is cool!

  • Data Dictionary Alpha Cache (c.f., DDTEXT)
  • JDBJ OCM Cache
  • Row Column Cache (c.f., FDATEXT)
  • JDBj Service Cache (refer Service Cache)
  • Menu Cache (from F989998/F989999)
  • Data Dictionary Glossary Text (F00165 -Media Object)
  • JDBj Security Cache
  • Serialized Objects (Object Cache data in F989998/F989999 - Java Persistent Data)

Note that the tables that are cached by the web server can be found in :

  • Service Cache
    • Do not change defined values/tables as it may cause unexpected results when running certain applications. You can get this information from \System_JAR\com\jdedwards\database\services\serviceobj\ on your JAS server to check tables which are members of ServiceCache

Note that the duration that some of these are maintained is controlled by settings in the JDBj Runtime Properties of the JAS.INI

There is a timeout setting for each of the cache types.

The value in the ini file is in milliseconds, default is 600000. There are 1000 milliseconds in a second, so this means that the cache lasts for 600 seconds or 10 minutes.

  • Service Cache
    • Use SAW (Server Administration Workbench) or Server Manager (depending on your Tools Release
    • Find the JAS instance you're working with
    • In the Runtime Metrics Category (SMC), click on JDBJ Database Caches
    • Select JDBj Service Caches and click on Clear Cache to flush Service Cache
    • Verify that Cache Size is set to zero

Database Cache

Internal JDEBASE caching is controlled by P98613. I suggest caution when using this application. This controls how many records are cached internally by JDE.

clip_image002

Unless you are on one of the newer releases, I find that this is not 100%. There is a menu item from WSJ to “reset cache” which can clear many of the troublesome caches on the server, but this is not 100% in my experience.

  • Database Cache
    • Log into a FAT/HTML or WebDev client
    • Fast Path to WSJ (Work with Submitted Jobs)
    • Highlight your logic Server and from ROW menu click on Reset Cache
    • Select Database, then click OK.  This will flush database caching

clip_image004

Thursday 11 February 2010

shell on AS/400

yes, for all you unix nerds – I’ve found AS/400 nerd-vana…  just simple, QSH

you can then run all your unix commands in the QSH shell, awesome!

Tuesday 9 February 2010

Local web URL for WAS61

http://localhost:9080/jde/E1Menu.maf

That could be handy for you one day…

uninstall WAS6.1 express to fix local web

Done everything to get local web working for webSphere site. 

Try: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tins_customb_61.html 

These are instructions for manual removal (when all else fails).

All of it is normal:

1. uninstall

2.  delete IBM dir

3.  delete registry settings that mention WebSphere

4. vpd.properties in %WINDIR%   ****Wait, you might have missed that.

6.  from the WAS install location, run C:\temp\was61expressinstall\WAS\installRegistryUtils\bin>installRegistryUtils.bat -cleanAll

#6 was a doozy

back it up and delete the original.  try the install again.

servermanager runAgent new to me

I had an instance that I could not see the enterprise server processes on a linux machine via SM.

I tried starting the agent as oracleas and jde812, but nothing.

I looked at the sm logs e1agent_1.log and found that the user could not chmod startEntServer.sh

I also noticed that it was owned by root, which means some pain in the arse had tried to start the Agent as root and messed things up…

So I logged in as root and chown’d and chgrp’d the crap out of the files and then started the agent as jde812 (as it should be).

Now everything is peachy.

Now I try to install 8.98.2.2 to this server…

Friday 5 February 2010

opmnctl usage

D:\oracle\10.1.3.1\OracleAS_1\opmn\bin>opmnctl status

Processes in Instance: oc4j1013.myrstest01.MITS.local
---------------------------------+--------------------+---------+---------
ias-component                    | process-type       |     pid | status
---------------------------------+--------------------+---------+---------
OC4JGroup:default_group          | OC4J:e812_dvtc_web |     N/A | Down
OC4JGroup:default_group          | OC4J:e812_myr_web  |     N/A | Down
OC4JGroup:default_group          | OC4J:e812_wcb_web  |     N/A | Down
OC4JGroup:default_group          | OC4J:e812_poc_web  |     N/A | Down
OC4JGroup:default_group          | OC4J:e812_dev_web  |    6236 | Alive
OC4JGroup:default_group          | OC4J:home          |    4212 | Alive
ASG                              | ASG                |     N/A | Down
HTTP_Server                      | HTTP_Server        |    2176 | Alive

Then to start any of them individually:

opmnctl verbose startproc ias-component=HTTP_Server

Where the ias_component is listed in the status output

There is a previous post about getting the console working too.  I don’t want to waste the internet and repeat it.

Thursday 4 February 2010

Faster gen?

Make sure that you have WEB DEVELOPMENT=TRUE set.

This setting is almost twice as fast… Well, it is for me!

Tuesday 2 February 2010

Viewing failed transactions / Failure Recovery Data

Easy in 8.98, there is an option in the main tool bar.

In older releases try P95400

You don’t always get a result, but when you do – it can be GOLD!!!