PK ƉZEoa,mimetypeapplication/epub+zipPKƉZEiTunesMetadata.plisth artistName Oracle Corporation book-info cover-image-hash 182622008 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 668183718 publisher-unique-id E14718-03 unique-id 181459985 genre Oracle Documentation itemName JD Edwards EnterpriseOne Tools Server and Workstation Administration Guide, Release 8.98 Update 4 releaseDate 2012-05-16T12:30:19Z year 2012 PKmhPKƉZEMETA-INF/container.xml PKYuPKƉZEOEBPS/e1_on_a_unix_clust.htm Administering JD Edwards EnterpriseOne on a Unix Cluster

7 Administering JD Edwards EnterpriseOne on a Unix Cluster

This chapter contains the following topics:

7.1 Understanding Clustering

High availability clusters provide redundancy of software and hardware so that a single point of failure will not interrupt service. If a failure occurs, the clustering software automatically detects the problem and shifts to an alternate machine without ending processes and interrupting the enterprise.

Clustering enables Oracle's JD Edwards EnterpriseOne processes running on a machine that fails to continue running without interruption on a second machine. The second machine has a setup that supports the given processes. Essentially, JD Edwards EnterpriseOne moves to the alternate machine without requiring you to restart a process that was active on the machine that failed.


Note:

Each node in the cluster must have the appropriate software and hardware to ensure that processing moves successfully from server to server.

Make sure you understand the clustering software and the tasks necessary to implement the software on a given platform.

7.1.1 Hp-UX Clustering

Hewlett-Packard provides two mutually exclusive software products to manage high availability clusters:

  • Hewlett-Packard Multi-Computer/ServiceGuard (MC/ServiceGuard)

  • Hewlett-Packard Multi-Computer/LockManager (MC/LockManager)

    You must use MC/LockManager when you use Oracle Parallel Server (OPS).

You will set up only one of these products for the HP-UX cluster.

JD Edwards EnterpriseOne requires a named IP address for workstations to connect with a server. With the Hewlett-Packard clustering software, you can assign a floating IP address that can move from node to node within the cluster. You should enter this IP address into the WINS or DNS database so that workstations can access the address. If the enterprise servers are not using DNS to resolve host names, you must also add the floating IP address to the /etc/hosts file on each node in the cluster where JD Edwards EnterpriseOne might run.


Note:

If you do not assign a floating IP address, then whenever JD Edwards EnterpriseOne moves to another node in the cluster, the workstations will be unable to connect with the servers.

7.2 Maintaining Multiple Instances of JD Edwards EnterpriseOne in a Clustered Environment

When you run multiple instances of JD Edwards EnterpriseOne in a clustered environment, you must consider several factors. Even though each instance might begin on a separate node, a situation might arise for which multiple instances need to run on the same node. When this happens, communication to each JD Edwards EnterpriseOne instance must occur on a different port number, or service name, and each instance must use a different range of IPC keys. These parameters in the jde.ini file control these settings:

[JDENET]
serviceNameListen=Service Name or Port Number
serviceNameConnect=Service Name or Port Number
[JDEIPC]
startIPCKeyValue=Numeric Value

where

7.3 Setting Up Clustering

This section discusses how to:

7.3.1 Configuring Oracle Parallel Server (OPS)

Oracle Parallel Server (OPS) enables concurrent database access from multiple nodes in a cluster. If you use OPS, you must install MC/LockManager, not MC/ServiceGuard.

This task describes how to set up OPS and MC/LockManager. For more information, refer to the Hewlett Packard documentation on setting up OPS and MC/LockManager.

To set up Oracle Parallel Server and MC/LockManager:

  1. Install Oracle client software on each node in the cluster where it might run. The JD Edwards EnterpriseOne database should be created on shared disks, or on a machine outside the cluster, so that it can be accessed from multiple nodes.

  2. Create a package in MC/ServiceGuard with no services.

    This package should be set up with an associated IP address so that it can be reached from any node where it might run. This package should also specify the shared volume group on which the JD Edwards EnterpriseOne database will reside.

  3. Edit the package control script to add the Oracle startup and shutdown commands. This code sample provides an example of the customer_defined_run_cmds function from a package control script:

     function customer_defined_run_cmds 
    { 
    # ADD customer defined run commands. 
                    export ORACLE_HOME=/u01/app/oracle/product/8.0.5 
                    export ORACLE_SID=jde1 
                    export ORAENV_ASK=NO 
                    . $ORACLE_HOME/bin/oraenv 
                    su oracle -c '$ORACLE_HOME/bin/lsnrctl start' 
                    su oracle -c '$ORACLE_HOME/bin/svrmgrl' <<EOF1 
                    connect internal 
                    startup 
                    exit 
    EOF1 
                    test_return 52 }
    
  4. You can use these same steps to enter the Oracle shutdown commands into the customer_defined_halt_commands section of the package control script.

7.3.2 Setting Up an Oracle Package for MC/ServiceGuard

If you use MC/ServiceGuard, you should set up a package for Oracle. An Oracle package enables the Oracle processes to move from one node to another when a node fails or during scheduled maintenance.

You do not need to perform this step if you use MC/LockManager.

To set up an Oracle package for MC/ServiceGuard:

  1. Install Oracle on each node in the cluster.

    Create the JD Edwards EnterpriseOne database on shareable disks so that multiple nodes can access the database.

  2. Create a package in MC/ServiceGuard with no services.

    You should set up this package with an IP address so that any node on the cluster can access and run the package. This package should also specify the shared volume group where the database will reside.

  3. Edit the package control script to add the Oracle startup and shutdown commands.

    This code sample provides an example of the customer_defined_run_cmds function from a package control script:

    Function customer_defined_run_cmds
    
    {
    # ADD cusomter defined run commands.
    Export ORRACLE_HOME=/u01/app/oracle/product/8.0.5
    Export ORACLE_SID=jde1
    Export ORAENV_ASK=NO
    .$ORACLE_HOME/bin/oraenv
    su oracle '$ORACLE_HOME/bin/svrmgr1'<<EOF1
    connect internal
    startup
    exit
    EAOF1
    Test return 52
    }
    

    You can use the same steps to enter the Oracle shutdown commands into the customer_defined_halt_commands section of the package control script.

7.3.3 Setting Up a JD Edwards EnterpriseOne Package

The standard JD Edwards EnterpriseOne enterprise server software requires minimal modifications to function in a cluster. These modifications include these items:

  • Enterprise server jde.ini

  • owenv script file in the $SYSTEM/bin32 directory

  • Package control script

To set up a JD Edwards EnterpriseOne package for a cluster:

  1. In the server jde.ini file, locate the [CLUSTER] section, then change these setting:

     [CLUSTER]
    
    PrimaryNode=Package IP name 
    

    where Package IP name represents name given to the IP address that is associated with the JD Edwards EnterpriseOne package that you are creating.

  2. Change the owenv script file in the $SYSTEM/bin32 directory. The owenv script file contains the settings for various UNIX environment variables required by JD Edwards EnterpriseOne.

  3. Create a package using SAM.


    Note:

    You can also use the command line to create a package. See HP documentation for details.

    For JD Edwards EnterpriseOne, set up a package with an associated floating IP address, but with no services. This setup is necessary because the cluster manager needs to start services without environment variables under the root user. The software will not run properly unless you set environment variables. This setup also enables you to utilize the installation defaults and the start and end scripts provided by the JD Edwards company.

    Depending on the needs of the enterprise, you might want to install JD Edwards EnterpriseOne on a shared volume group. This setup enables multiple nodes in a cluster to access a single version of JD Edwards EnterpriseOne, but only one node at a time. This setup also enables you to easily update JD Edwards EnterpriseOne through server package installations.

  4. Using SAM, modify the package control script on each node to start and stop JD Edwards EnterpriseOne.


    Note:

    You might need to vary the control scripts for different nodes in the cluster to configure different volume group names or path names. In this case, you must edit the scripts on each node individually instead of using SAM.

    This code sample provides an example of the customer_defined_run_cmds function from a package control script:

    function customer_defined_run_cmds
    {
    # ADD customer defined run commands
    # wait 60 seconds for Oracle to come up
    sleep 60. /home/jde/owenvsu jde 
    << EOF1mv $OWHOME/log/jde*.log 
    $OWHOME/log/oldlogscd 
    $SYSTEM/bin32RunOneWorld.sh
    EOF1
    test_return 51
    }
    

    This code sample provides an example of the customer_defined_halt_cmds function from a package control script:

    function customer_defined_halt_cmds
    {
    # ADD customer defined halt commands
    .. /home/jde/owenv
    su jde << EOF2
    cd $SYSTEM/bin32
    EndOneWorld.sh
    sleep 15
    rmics.sh
    EOF2
    test_return 52
    }
    

    The following list provides explanations for these functions:

    sleep 60
    

    The "run" function first waits 60 seconds for Oracle processes to start. HP states that you should set the PKG_SWITCHING_ENABLED parameter to NO for applications that access OPS. This setting prevents these applications from starting before OPS is active. If you use the sleep command in the script, you do not need to modify this setting. You can remove the sleep command from the script when you use the control script for a backup node with OPS running.

    . /home/jde/owenv
    

    This line runs the owenv script to set up UNIX environment variables. The owenv script resides in the $SYSTEM/bin32 directory. You must edit this script to ensure that the correct setup exists for all necessary environment variables for JD Edwards EnterpriseOne and Oracle. In these examples, the script has been moved to the home directory of the jde user. The script might need to move to the home directory if you use a different SID to access Oracle from different nodes.

    su jde
    

    This line switches to the user ID that owns the JD Edwards EnterpriseOne processes. If you omit this line, the root user owns the JD Edwards EnterpriseOne processes.

    mv $OWHOME/log/jde*.log $OWHOME/log/oldlogs
    

    This line moves any logs in the log directory to a backup log directory, which you create. This command is particularly important if the JD Edwards EnterpriseOne instance resides on a shared disk where a "failed over" instance of JD Edwards EnterpriseOne will use the same physical disk space as the failed instance. You might consider adding the command rm $OWHOME/log/oldlogs/* before this line to clean out any older versions of logs.

    RunOneWorld.sh; EndOneWorld.sh
    

    These are the standard start and stop scripts that we provide for the UNIX enterprise server.

The directory that contains the package control script also contains the control.sh.log file, which contains the results of starting and stopping a package. This file is the first place to check if problems arise when you start or stop a package. In particular, it will contain any output or error messages from the customer-defined commands you might enter.

7.4 Setting up HACMP for AIX Clustering

This section provides an overview of HACMP for AIX clustering and discusses how to create group and user accounts.

7.4.1 Understanding HACMP for AIX Clustering

If a failure occurs, HACMP provides a transparent recovery for critical applications. You can configure a cluster using any RS/6000 processor and a variety of network adapters and disk subsystems to satisfy the LAN, disk capacity, and performance requirements.

Be careful when you delete or write to shared files. You might want to move old log files rather than delete them. If you move a package running on a shared file system from one node to another, the new instance of JD Edwards EnterpriseOne references the logs and files from the old instance.

7.4.1.1 How HACMP Works

HACMP for AIX (Version 4.2) enables customers to automatically detect system failures and recover users, applications, and data on backup systems, minimizing downtime to minutes or seconds. In addition, using HACMP for AIX virtually eliminates planned outages, since users, applications and data can be moved to backup systems during scheduled system maintenance. HACMP Version 4.2 adds new features such as the Cluster Single Point of Control (CSPOC) and Dynamic Reconfig, which enable the system administrator to add users, files, and security functions without stopping mission-critical jobs.

HACMP provides several configuration options, including these:

  • Idle standby for up to seven processors being backed up by a single processor.

  • Rotating standby for up to seven processors backed up by a standby processor in a predefined or contention takeover sequence.

  • Mutual takeover for up to eight processors backing each other up by sharing the application workloads.

  • Concurrent access for up to eight processors working on the same jobs and sharing the same data.

The configuration flexibility of HACMP enables customers to select the cluster topology and database manager that best suits the requirements of their computing environment. IBM states that HACMP can support both concurrent and parallel data access within a common cluster. HACMP also operates with the new Parallel Database Products, such as IBM DB2 for IBM i Parallel Edition and Oracle 8 Parallel Server.

Several components make up the HACMP environment, including these:

  • Nodes

    Nodes are the core of an HACMP cluster. A node is a processor that runs the AIX operating system, HACMP, and the mission-critical software. Software execution can be spread over several nodes for system load balancing. In the event of a failover, HACMP executes customer-defined scripts that will establish environments and start specific software packages on a standby node.

  • Shared external disk

    Shared external disks are disks that are physically connected to multiple nodes. The shared disks store mission-critical data, which is shared among processes running on separate nodes.

  • Networks

    Networks are the independent components of HACMP. TCP/IP is the protocol with which HACMP was designed to function. It has been tested with ethernet, token ring, and Fiber Distributed Data Interface (FDDI) topology.

  • Network adapters

  • Clients

7.4.1.2 Installation Considerations

Installing the HACMP cluster requires that you create logon accounts and use the Oracle Standard Enterprise Database Management System (DBMS).

A major consideration when setting up HACMP and JD Edwards EnterpriseOne is user accounts. When these accounts are created, they are given unique user IDs and unique role IDs. When a node fails over to another node, these unique IDs are matched to names in the /etc/passwd and /etc/role files. If no matches occur, the unique user and role values are then used as IDs, which can create problems with access and security.

To avoid a problem, before starting the JD Edwards EnterpriseOne installation or configuration, create all user accounts and roles on all nodes that will be used in the cluster environment. Use the same unique number for all users and the same unique number for all roles. The easiest way to do this is to use the add user/role function found in the HACMP extension of SMIT.

If JD Edwards EnterpriseOne is already installed, use the existing user and role ID numbers to create accounts on the nodes that are defined in the resource group.

Oracle Standard Enterprise DBMS is used in the HACMP configuration explained in this chapter. The resource control scripts are coded to start and stop the database using standard Oracle program calls. These scripts can be easily modified to allow for changes in database start and stop procedures as well as the introduction of commands for Oracle Parallel Server. To minimize installation and configuration problems, have the database administrator review the commands in the control scripts to ensure that they are correct for the installation.

7.4.2 Creating Group and User Accounts

By performing this operation using the add group/user option in the HACMP component of SMIT, all user accounts and group assignments are synchronized across all nodes. This ensures that when the resource disk volume groups remount on the failover system, the user and group IDs match.

To create group and user accounts:

  1. Verify that HACMP is running on all nodes within the resource group.

  2. Select a unique ID number that can be assigned to the new group and user that you want to create.

  3. Verify the selection by searching all password and group files on the node where the new user and group will be created.

  4. Enter this command on the command line:

    # smit hacmp
    
  5. From the menu, select Cluster System Management, then Cluster Users & Groups, then Groups, and then Add a Group to the Cluster.

  6. Select the resource group to which you want to add the new group. The resource group identifies the nodes that will need to be updated. Next, add a group called JD Edwards EnterpriseOne and assign it the unique ID number that you chose.

  7. Press Enter.

  8. From the Cluster Users & Groups panel, select Users and then Add a User to the Cluster.

  9. Select the same resource group that you chose for adding a group.

  10. Add a user psft, assign it the pre-selected unique ID number, and select the JD Edwards EnterpriseOne group.

  11. Repeat these steps for the Oracle sign on, creating the group dba.

7.5 Setting Up JD Edwards EnterpriseOne for HACMP

The standard JD Edwards EnterpriseOne enterprise server software requires minimal modifications to function in a cluster, including editing the enterprise server jde.ini file, the owenv script, the start resource control script, and the stop resource control script.

This section discusses how to:

7.5.1 Editing the owenv Script

To edit the owenv script:

  1. In Windows Explorer, go to the /$SYSTEM/bin32 directory and open the owenv file.

  2. Edit the emphasized lines:

    #! /bin/ksh
    ## set OWHOME to point to the base install path for JD Edwards EnterpriseOne
    export OWHOME=/ow2/JDEdwards/E900
    ## set ENVIRON to the path code from which you want to run business functions
    export ENVIRON=MSTR
    ## set up the path to your JD Edwards EnterpriseOne system and path code
    export SYSTEM=$OWHOME/system
    export APPDEV=$OWHOME/$ENVIRON
    ## set JDE_BASE to the location of your JDE.INI file
    export JDE_BASE=$SYSTEM/ini/aix
    ## set up the Oracle environment
    export ORACLE_HOME=/u01/app/oracle/product/8.0.5
    export ORACLELIB=$ORACLE_HOME/lib
    ## the remaining variables point to libraries and executables
    export SHLIB_PATH=$SYSTEM/lib:$APPDEV/bin32:$ORACLELIB:$SYSTEM/libv32
    export LD_LIBRARY_PATH=$SHLIB_PATHexport PATH=$PATH:$SYSTEM/bin32
    
  3. Save and close the file.

7.5.2 Editing the Start Resource Control Script

To edit the start resource control script:

  1. In Windows Explorer, go to the /$SYSTEM/bin32 directory and open the StartResource.sh file.

  2. Edit the emphasized lines:

    #____________________
    #Global Variables
    #____________________
    #
    #export PATH=$PATH
    #Set environment variables
    #
    ./usr/sbin/cluster/scripts/owenv
    #
    loop=0
    StartUpError=false
    ORACLEPROCESS=oracle
    OWStartupDir=$SYSTEM/bin32
    StartUpLog=$OWStartupDir/OWStartup.log
    ORACLE_UID=oracle
    APP_UID=psft
    LOGFILES=$OWStartupDir/jde*.log
    

    The first emphasized line executes the script that sets various required JD Edwards EnterpriseOne environment variables.


    Note:

    This script, as well as others, will be relocated into the scripts directory as described in the Control Scripts section under Creating an Application Server in the JD Edwards EnterpriseOne Tools 8.94 Implementation Guide: Server and Workstation Administration.

    ORACLE_UID and APP_UID are the login ID names for Oracle and JD Edwards EnterpriseOne. These are used in the script so that the respective applications are started with the proper application ownership.


    Note:

    This script is delivered with these IDs undefined. If the script is executed, an error message will be generated.

  3. Save and close the file.

7.5.3 Editing the Stop Resource Control Script

To edit the stop resource control script:

  1. In Windows Explorer, go to the /$SYSTEM/bin32 directory and open the StartResource.sh file.

  2. Edit the bold lines:

    #____________________
    #Global Variables
    #____________________
    export PATH=$PATH:.
    #
    # Set environment variables
    #
    ./usr/sbin/cluster/scripts/owenv
    LogicalVolumn=/ow2
    ShutdownDir=$SYSTEM"/bin32"
    StartUpLog=$OWStartupDir"/OWStartup.log"
    APP_UID=psft
    

    Similar to the script modification described in the previous procedure, the APP_ID needs to have the login ID of the application owner. In this example, psft owns the application.

  3. Save and close the file.

7.6 Creating an Application Server

The application server is a method that invokes predetermined actions of applications. The server is called in the cluster startup or shutdown sequence and executes predefined scripts depending on what activity is occurring. As part of the cluster installation and configuration process, an application server must be created and the access path to the control scripts defined.

This section discusses how to:

7.6.1 Prerequisite

The control scripts that are included with JD Edwards EnterpriseOne are located in the /$SYSTEM/bin32 directory. These scripts are generic and can be modified as needed to meet the requirements. Before you can create an application server, you must move the scripts to a non-shared disk directory.

7.6.2 Moving the Control Scripts

To move the control scripts:

  1. Log in as root and enter these commands:

    #export SYSTEM=< JD Edwards EnterpriseOne system directory path>
    
    <}Ap>Where JD Edwards EnterpriseOne system directory path is the path to the system directory. An example of the path is /ow2/JDEdwards/900/system.

    # cd /usr/sbin/cluster
    
    # mkdir scripts
    
    # cd scripts
    

    Be sure to include the periods, preceded by a single space, in these commands:

    # cp $SYSTEM/bin32/StartResource.sh .
    
    # cp $SYSTEM/bin32/owenv .
    
    # chmod 755 *
    
  2. Repeat this step on all failover nodes and FTP over the modified script files.

7.6.3 Defining an Application Sever

To define an application server:

  1. From the command line, enter this command:

    # smit hacmp
    
  2. From the menu, select Cluster Configuration, then Cluster Resources, then Define Application Servers, and then Add an Application Server.

  3. In the Server Name field, enter OneWorldSrv. This adds a label to the resource server that controls the starting and stopping of JD Edwards EnterpriseOne.

  4. In the Start Script field, enter the path of the StartResource.sh script - for example, /usr/sbin/cluster/scripts/StartResource.sh.

  5. In the Stop Script field, enter the path of the StopResource.sh script - for example, /usr/sbin/cluster/scripts/StopResource.sh.

  6. Press Enter.

7.6.4 Defining Cluster Resources

This procedure explains how to let HACMP know that you have defined an application server. This is so that HACMP will know to use the server during a cluster-related event. Within the cluster parameters display is a field in which this resource is defined.

To define cluster resources:

  1. From the command line, enter this command:

    # smit hacmp
    
  2. From the menu, select Cluster Configuration, Cluster Resources, Change/Show Resource for a Resource Group.

  3. Select the resource group - for example, JD Edwards EnterpriseOne.

  4. On Configure Resources for a Resource Group, in the Application Server field, enter the name of the application server that you defined in the previous procedure.

7.7 Setting Up Sun Solaris Clustering

This section provides an overview of Sun Solaris clustering and discusses how to:

7.7.1 Understanding Sun Solaris Clustering

This software provides higher availability for the applications because it enables you to recover almost instantaneously from a power failure or hardware problem. It also enables applications to be available during scheduled downtime.

This documentation assumes that you have successfully installed Oracle and the SUNClustering software. If you are having trouble with either of these products, you should contact Oracle or Sun as needed.

You must have a disk that is accessible to all machines in the cluster, and this disk must be large enough to accommodate the JD Edwards EnterpriseOne installation. If you wish to place the database on the same cluster as well, the database file must also be placed on a shared disk accessible to all machines in the cluster (although not necessarily on the same shared disk as the one that the JD Edwards EnterpriseOne server is on).

The SUNClustering 2.2 or greater API is recommended.

Four cluster-specific scripts are delivered with JD Edwards EnterpriseOne:

  • SunStartResource.sh

  • SunStopResource.sh

  • owenv

  • SunOracleMgr.sh

These scripts can be found in the system/bin32 directory under the base JD Edwards EnterpriseOne installation directory.

The SunStartResource.sh script runs whenever a node in the cluster starts the JD Edwards EnterpriseOne service. It must be registered with the SUNClustering software and should handle everything that needs to happen when the JD Edwards EnterpriseOne service starts or is switched from one node to another.

The SunStopResource.sh script runs whenever a node in the cluster stops the JD Edwards EnterpriseOne service. It is registered with the SUNClustering software, and handles shutting down various processes and any cleanup that needs to happen when the JD Edwards EnterpriseOne service is stopped.

The owenv script sets various UNIX environment variables that are needed by JD Edwards EnterpriseOne. The script is called from within the SunStartResource.sh and SunStopResource.sh scripts.

The SunOracleMgr.sh script is necessary if you are running the database on the same cluster as the JD Edwards EnterpriseOne server. If you are not running the database on the same cluster, you can ignore this section.

7.7.2 Modifying the SunStartResource.sh Script

To modify the SunStartResource.sh script:

  1. Under Global Variables, there is a call to /suncldata/JDEdwards/E900_sp1/system/bin32/owenv. Change /suncldata/JDEdwards/E900_sp1/ to the same path that OWHOME was set to in the owenv script.

  2. Set the APP_UID to the user name that JD Edwards EnterpriseOne is to be run under.

  3. Set ORACLE_UID to the user that is to run Oracle if the database is on the same cluster as JD Edwards EnterpriseOne.

  4. If you are using Oracle, uncomment the section under Check for ORACLE running and Check to see if ORACLE started/running.

7.7.3 Modifying the SunStopResource.sh Script

To modify the SunStopResource.sh script:

  1. Under Global Variables, change the call to /suncldata/JDEdwards/E900_sp1/system/bin32/owenv to the same thing that is in the SunStartResource.sh script.

  2. Set APP_UID and ORACLE_UID to the users running JD Edwards EnterpriseOne and Oracle, respectively. These values will be the same as in SunStartResource.sh.

  3. Under the Shutdown JD Edwards EnterpriseOne section, set LOGDIR to be the location where all the log files are located.

7.7.4 Modifying the owenv Script

To modify the owenv script:

  1. Set OWHOME to be the base directory of JD Edwards EnterpriseOne, for example, /suncldata/JDEdwards/E900_sp1/.

  2. Set ENVIRON to the pathcode that you are using, for example, PROD or CRP.

  3. Once OWHOME and ENVIRON are set, SYSTEM, APPDEV, AND JDE_BASE should be correct.

  4. Set ORACLE_HOME to be the location of the ORACLE installation on the machine, for example, /suncldata/app/oracle/product/8.0.5.

  5. Set ORACLE_SID as needed.

7.7.5 Modifying the SunOracleMgr.sh Script

To modify the SunOracleMgr.sh script:

  1. In the Setup Global Variables section of the script, set ORACLE_UID to the user ID that is used to start Oracle.

  2. Set ORACLE_HOME to the appropriate value for the Oracle installation.

7.7.6 Registering JD Edwards EnterpriseOne with SUNClustering

You must register JD Edwards EnterpriseOne with the SUNClustering software.

To register JD Edwards EnterpriseOne with SUNClustering:

  1. To register JD Edwards EnterpriseOne with SUNClustering, log in as the root user and enter this command:

    /opt/SUNWcluster/bin/hareg -r[service name] -m start_net=[absolute path of 
    SunStartResource.sh] -mstop_net=[absolute path of SunStopResource.sh]
    

    Where service name can be anything you want, but you may want to make it something easy to remember like JD Edwards since you will need to use that name when modifying JD Edwards EnterpriseOne registry with SUNClustering.

  2. Enter this command with no options:

    /opt/SUNWcluster/bin/hareg
    

    If the line containing the service name you assigned to JD Edwards EnterpriseOne contains off, then enter this command:

    /opt/SUNWcluster/bin/hareg -y [service name]
    

    This sets the data service to "on," which enables the data service to switch physical hosts when appropriate.

  3. To test whether the cfluster switches, enter this command:

    /opt/SUNWcluster/bin/haswitch
    

    Also, try pulling the plug on the current active host.


    Note:

    You should not use reboot or shutdown on the primary node as a test as doing so will result in an error and not in a switchover.

7.8 Troubleshooting HP-UX Clustering

These sections address specific problems with HP-UX clustering.

7.8.1 Problems with Oracle Parallel Server (OPS)

Complete these steps if you experience problems with OPS:

  • Verify that the cluster software is operational. OPS requires the cluster software to start before OPS can start.

  • Verify that DLM is enabled in the DLM configuration. Oracle Group Management Services (OGMS) will not start if DLM is disabled.

7.8.2 JD Edwards EnterpriseOne Does Not Start

Complete these steps if JD Edwards EnterpriseOne fails to start:

  • When you start JD Edwards EnterpriseOne using the package control script, first check the control script log for errors. Look for errors in the script that occur before the RunOneWorld.sh command.

  • Check the log directory for log files. If none reside, verify that the JD Edwards EnterpriseOne processes exist in the proper directory and that you correctly set the $SYSTEM environment variable.

  • If the log file names are in all capital letters, the $JDE_BASE environment variable might be set incorrectly. If you incorrectly set this environment variable, the process will be unable to locate the jde.ini file.

  • Verify whether an entry exists in the /etc/hosts table for the floating IP address. If no entry exists, jdenet_n will start, but all other processes will return this message in the log: 239-gethostbyname returned Connection refused.

  • If no entry for the floating IP address exists that the workstation can reference, it will fail to connect and return this message in the log: 11001-gethostbyname returned 11001 (WSAHOST_NOT_FOUND): The host was not found.

7.8.3 Problem with Workstation Connection to a JD Edwards EnterpriseOne Server; Endnet Works Improperly on the Server

You must associate an IP address with the JD Edwards EnterpriseOne package. The package must be operational for the IP address to be active. Otherwise, workstations will not connect to the server and endnet will not work properly on the server.

7.8.4 JD Edwards EnterpriseOne Does Not Work From the Package Control Script

Oracle must be operational and the owenv must reference the proper SID for JD Edwards EnterpriseOne to work from within the package control script.

7.8.5 Package Does Not Switch to the Backup Node upon Failure or Removal from the Cluster

You must enable automatic switching in the package failover options. If you do not enable this setting, the package will not switch to the backup node when the node fails or you remove the node from the cluster. If you do not want the package to switch, for example, you might want to stop JD Edwards EnterpriseOne, you can disable this flag and then halt the package.

7.8.6 Package Halt Fails

If JD Edwards EnterpriseOne does not end cleanly during a package halt, the package halt might fail. This could occur if Oracle is not operational or if JD Edwards EnterpriseOne cannot access the database. You might need to change the test condition in the package control script, or add commands to search for remaining JD Edwards processes and end them.

7.8.7 Placement of the owenv File

Generally, the owenv file should not reside on the shared disk. Different environment settings, particularly ORACLE settings, might exist depending on which node you run a package. If you placed the JD Edwards EnterpriseOne bin32 directory on a shared disk, move the owenv file to another directory.

PK Ƈ}PKƉZEOEBPS/getting_started.htmw Introduction to JD Edwards EnterpriseOne Tools Server and Workstation Administration

1 Introduction to JD Edwards EnterpriseOne Tools Server and Workstation Administration

This chapter contains the following topics:

1.1 Server and Workstation Administration Overview

Server and Workstation Administration is used to extend an initial installation prototype environment to meet practical requirements and recognizes, addresses, and solves daily issues that arise in a dynamic enterprise. Server and Workstation Administration uses the flexibility of Oracle's JD Edwards Configurable Network Computing architecture to optimize Oracle's JD Edwards EnterpriseOne installation for the enterprise.

1.2 Server and Workstation Administration Implementation

In the planning phase of your implementation, take advantage of all JD Edwards sources of information, including the installation guides and troubleshooting information.

PKV O| w PKƉZEOEBPS/dcommon/oracle.gifJGIF87aiyDT2F'G;Q_oKTC[ 3-Bq{ttsoGc4I)GvmLZ).1)!ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPKƉZEOEBPS/dcommon/oracle-logo.jpgfuJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222'7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEzE7V%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;m677n߽3j/Lnl/5.Wd$k!B`ҫܩt|,ƻ; \C%`oUFT+BP|eqGxBP#D< ˹lHz%p j76uk+2}sԐ!0pA]SxNC]rY$a=~u#lķe[pqz]t.HԠH"! Z<8=(յ(tmTY +y.$X,U$ z4JgF-E;@u #8>Ķ_-jfa{EUcXt^Hܹv:ޣ |.͍ۻ=:J+((_!O7+ϊZYEܶb\4>L@Uhܰc8&=j6 7*T<6Bp qxN4Ӗ.ct( sʷȥ ˜cßlw"TIF2}ֵOxfNz5뉖{XbK*%9<n6^4k;IE[i6e+9$ql>,fwWc+D;tߗے\ U9^9 kj7B~hcL.@m$2N8GOӣ/>k$)ːH@OE?s 6zuu*C }q؀%02HYçxNy%ɷMIHvcƉb ;/yۿo*–qqEvW뺧+=ZMcb _;$x2x[V.RXΞ5;]A [w Fchm ےs-oqJMˑ~6:0<^/CS:x˵-_[fD~P0wXԼsxź4LhY'V60px{ +j7~j7H5]=phY|۔ 3hxx[ӴzZi].>1d.C0((Qh=]|SςS:^,9apW_hz^ɢ]XA&MMchP11F1@W=__]wdn3Һ }]_L}+qy[,jI=J=[S.hE7إZm-lSFNI=0zeSյ(tmTY +y.$X,U$ zOxĺգ\Ib/k̷w*Ft9u ]W)4l44[Khg֮b#( +g,淼ki(Hw2Syd3gPQ%(ybדm;mRE} @Hce? t+nY<>EM0j&>`9Q^rzvgXZjWW񀥦g' Â[Z 7lKԲ;h!ٜ0D([t`h(/mOxsJ`Ӵ^;wvDm .wnEl[jΉM5}K:yB |#' GݠOΏgqH4Q4b%D`َxb~pv~;|gqu[@Ѽ򬬮{UI̒`Pgќ(#>#j_5zkK6H$v7ż1'vwSqhx,R4'f|a\QEQEQEQEQEQEQEQEQEq ߴL}%!އk)AYz!߄uCg_K[nh H@_Py^Wy M'p p9O Z*kiVOӭȖhs33pg#Y0^QEy>|wGĐR[Z29=qק^z?z?<;=˄DK QL p# L KXi2ǁ@jy>,~& ٷcxoeJ#Ȥr@BFg:6? m4ҭ򲭙To/;ɷvp3k('_>~kR7|Ouۇfr)x nze~,~&cAšn oLn‘$RfN=爴MF?kk}:o۾._Tz*9[cHU I9q>֯\FkVE $m`?<_bVk lˀ`RT(;I[qo,sA*H2AG9(l$[MFf[cv`ITᗍ\φ<9wWh#V؉>Dc$'X?xP7Iu=;ACnnrFI^Xxw7k$\m'ϴ N\WqEqؚ.Oijyw7۝wbj??G_h߷nw}s{Q}gYywx4r@c ~5b<Ö0uw^}qOq*#@4to6frKІ$`p޹Ey]7v+s_immgg,M%Ć9t rAOWa;3~]ծo ɸalQ@Q3lu<,fC"U`Bs ]5 ǤÞ,Xr"#kkgxBVDɐA# Px7Q|Xl|1-:WTjX,BFa0Ls/-)![̋8;A@5Zycȕɐ?"ltayb<Ŀ jѼOTtYdI.3H n$@n|R58մ&>\[7m']E˸-V|y7EV88V(w[WĶ>),R\:H]B 8).@c#$𶟩Gi, t? '\e A K q0EzEW-QZ}˽GB8''$cq޻ (}Mxr4״7[X'r(Y#l,u<\xĺL#c\G|u̷w*NýFu)^L KXi2ǁ@haosIZ.q%=v\da`3_C:$sNb]"NpH '( F_~iZ|i+~e8Xsˎ3Tfź/t+ Xhp.$!,8$qQ@<a|~ݻgwc\|D>}Zi#Pݯn%e!Hq$d t$5Pƣ C\ϩxr$$ԭ]G&c8i:n&bn#v_!U1Uo!HIJ(GsoR%ާ*qGčQ<9m>o_K- (RI#|af8=Qugc} >U:@dQsՎՊ蚎˙jq^#Tj$y8{_j^ - MiY. p'R49<sUW>g>yfnvX+<3k?*zn{qV20$Y28څ9ôuR(((((((((('|E1ZBYkcMąUgX>+<J?l4gLE{a3od+H#Ӹ 7#/f}a7Efu׏.|x; DWX]c]Aon$`KZ4_אh!6Fs0*7I'oC8|c-̉LFLJd)W<Y}F_kΑO6U89nG8fݗ<}jyo$J.MxR2~n^^?⎍⿆wv^{/OՔJm̻@s <-rc\sX/fa_^gڶc? /i+߳\7_t#GU{x,ˁr00TksNc}kkB6q3ͺ0%rIpNizO_au_Eg$Å~Ǹ@6A"T4BX6MZZ$xKDgH ;@NJ )Ѽ]C7cY&aM߉v>5o˦ &Yx(N׏S&" f[# =' >6kV.NKE Hw SA->Z_=cI&ԸjRgxq%~RISݩg_J<ho{;ekkIԇq33} [cHU I9p ?ud>+_5tsh qIw']DO!M8aru=GY^xbDvQf;$[iċs89WqJx^×zܺaD2}/ Igu0;I%ͼQŏL:Sn;?zZ炵(-WXB?Ҁ,xYѮ4_˧jZvFy2yFFO b}z%mcEbq8m$/tjO>ek*"5&Y]3FŎ(kr}RNoXG-%̬}K(PW@2+WkʹkbҎGf\1FH?{ڼVu\hĪtH +4lͷ K`d.A{ S`jl.?#ۺ)6@<'[W~&3j_ExeXYz vs}Oirjo#IJ\B#:@H7 rT$Mlh_? ?ﳍ{ǭxe^wDhΫ㔷?DdG眓,@LF E=ͮJ f89-r*Njˉ>k72wRči̋k=?59G=Nq tV6q K.$sOto| yX)É$a=~txfKWZis˻`@ǰb5A?,6[z!FfZytm*J)[lrT85|RAg+__&'ҵ]2IZLq2!%Xp2Et~m|>-uJMFiD`lRsW?'y __7y7=\?]q#ԛ\ОO[L2G仹E?1$w@gu;PumGEOoڙ>4Yd>ܑ{UAkkH BRrr2=cI_ (i~O5A$zCDEX"+Ƞd#=_h E/[[`pɇn7q+a$z{)',C6/㶉䕌!0T?H(sݵpi-meRŎ=@8Ne5O7qm+X]'v6qp=JgĖ~)ƣgmH&PA"1VI[~]sYѮGKKo/L),ʕVwNX"{ok S@((((((((((7%׊?qkC7-"yFAtx[V.RXΞ5;]A [w Fchm ےs +// -Z;YB#yh8N3^$kLJHD.;Yp89GS8@e徝F.ҭ湺LkO%I8<=>*6z>C.RN(=_/6kQxXd=7lR8<Њܱ4GC[M13 P n0scb4(O@jhs2X".]q8xxdR@@'C@%k_t/ཱུl vêʜEaĺ4hj,"y#qQ^W|<&%m@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@M*Zk J;GtwNU8u7(z*PEPEPEPEPEPEPEPEPEP@vB_;L$l\WJZ*/nɨ^jM.4Dk۳u9Q'& gOyNvo8ϽjvLֳ#׮#g7,rgb@vC$m2<ؘlG\szWo躥aƗvϾ'y+v;]88#(ԼIxK^m?H{i[(n$6 B?'74Yh㳼dX& ?v1Wk#뉭j$7238PBa< U<mQ! M3Q湵32Tgm#=ux7X=iki4WhLi7"ӵco3 _,b9/py8ٌ6Wh <}Qu=E B+M${8x^.ιAw$x 6Z9BoN'8aC״x^фu-*Gl:7%Q(Ci녴X5ش.n1,&r ^<o<N!f$s SZzw]ɍ<@GOKd$u/b-7]p) : a8=re|>t<ɮ_FYQK;@.i$a$f Z5]No};dɝO#ڀ9sST߉е-#&`*OD*;'EFZݺi^j2\RF Zۜ@`y__\kLwS#HsQ#9 'Mjh9,4,Wd)71̀2$@WKd^$tWe]7BEn Ҳ1 x87~N[FELǂ'pU~N۱sMÚGtu ĩV TpHMe?#if֟}dgCnbs'8.R'A۝/zo"lC3h*a O?f;>ѩysn YWˆ98^|:&h\߮>߻A @1ZWt-NӴ2loklVN@RFg(o?'ϟ30۳1s\Øְ3y2HE9P|͜JҬt=.L-MD2I$I$䚹@?-_W[ _c|r}my}7~y`MN5Ze}]|-v`p{օQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEPK|ffPKƉZEOEBPS/dcommon/cpyr.htmD Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2014, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in preproduction status:

This documentation is in preproduction status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PK0hPKƉZEOEBPS/dcommon/blafdoc.cssc@charset "utf-8"; /* Copyright 2002, 2011, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2011.8.12 */ body { font-family: Tahoma, sans-serif; /* line-height: 125%; */ color: black; background-color: white; font-size: small; } * html body { /* http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html */ font-size: x-small; /* for IE5.x/win */ f\ont-size: small; /* for other IE versions */ } h1 { font-size: 165%; font-weight: bold; border-bottom: 1px solid #ddd; width: 100%; text-align: left; } h2 { font-size: 152%; font-weight: bold; text-align: left; } h3 { font-size: 139%; font-weight: bold; text-align: left; } h4 { font-size: 126%; font-weight: bold; text-align: left; } h5 { font-size: 113%; font-weight: bold; display: inline; text-align: left; } h6 { font-size: 100%; font-weight: bold; font-style: italic; display: inline; text-align: left; } a:link { color: #039; background: inherit; } a:visited { color: #72007C; background: inherit; } a:hover { text-decoration: underline; } a img, img[usemap] { border-style: none; } code, pre, samp, tt { font-family: monospace; font-size: 110%; } caption { text-align: center; font-weight: bold; width: auto; } dt { font-weight: bold; } table { font-size: small; /* for ICEBrowser */ } td { vertical-align: top; } th { font-weight: bold; text-align: left; vertical-align: bottom; } li { text-align: left; } dd { text-align: left; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } td p:first-child, td pre:first-child { margin-top: 0px; margin-bottom: 0px; } table.table-border { border-collapse: collapse; border-top: 1px solid #ccc; border-left: 1px solid #ccc; } table.table-border th { padding: 0.5ex 0.25em; color: black; background-color: #f7f7ea; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } table.table-border td { padding: 0.5ex 0.25em; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } span.gui-object, span.gui-object-action { font-weight: bold; } span.gui-object-title { } p.horizontal-rule { width: 100%; border: solid #cc9; border-width: 0px 0px 1px 0px; margin-bottom: 4ex; } div.zz-skip-header { display: none; } td.zz-nav-header-cell { text-align: left; font-size: 95%; width: 99%; color: black; background: inherit; font-weight: normal; vertical-align: top; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-header-link { font-size: 95%; } td.zz-nav-button-cell { white-space: nowrap; text-align: center; width: 1%; vertical-align: top; padding-left: 4px; padding-right: 4px; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-button-link { font-size: 90%; } div.zz-nav-footer-menu { width: 100%; text-align: center; margin-top: 2ex; margin-bottom: 4ex; } p.zz-legal-notice, a.zz-legal-notice-link { font-size: 85%; /* display: none; */ /* Uncomment to hide legal notice */ } /*************************************/ /* Begin DARB Formats */ /*************************************/ .bold, .codeinlinebold, .syntaxinlinebold, .term, .glossterm, .seghead, .glossaryterm, .keyword, .msg, .msgexplankw, .msgactionkw, .notep1, .xreftitlebold { font-weight: bold; } .italic, .codeinlineitalic, .syntaxinlineitalic, .variable, .xreftitleitalic { font-style: italic; } .bolditalic, .codeinlineboldital, .syntaxinlineboldital, .titleinfigure, .titleinexample, .titleintable, .titleinequation, .xreftitleboldital { font-weight: bold; font-style: italic; } .itemizedlisttitle, .orderedlisttitle, .segmentedlisttitle, .variablelisttitle { font-weight: bold; } .bridgehead, .titleinrefsubsect3 { font-weight: bold; } .titleinrefsubsect { font-size: 126%; font-weight: bold; } .titleinrefsubsect2 { font-size: 113%; font-weight: bold; } .subhead1 { display: block; font-size: 139%; font-weight: bold; } .subhead2 { display: block; font-weight: bold; } .subhead3 { font-weight: bold; } .underline { text-decoration: underline; } .superscript { vertical-align: super; } .subscript { vertical-align: sub; } .listofeft { border: none; } .betadraft, .alphabetanotice, .revenuerecognitionnotice { color: #f00; background: inherit; } .betadraftsubtitle { text-align: center; font-weight: bold; color: #f00; background: inherit; } .comment { color: #080; background: inherit; font-weight: bold; } .copyrightlogo { text-align: center; font-size: 85%; } .tocsubheader { list-style-type: none; } table.icons td { padding-left: 6px; padding-right: 6px; } .l1ix dd, dd dl.l2ix, dd dl.l3ix { margin-top: 0ex; margin-bottom: 0ex; } div.infoboxnote, div.infoboxnotewarn, div.infoboxnotealso { margin-top: 4ex; margin-right: 10%; margin-left: 10%; margin-bottom: 4ex; padding: 0.25em; border-top: 1pt solid gray; border-bottom: 1pt solid gray; } p.notep1 { margin-top: 0px; margin-bottom: 0px; } .tahiti-highlight-example { background: #ff9; text-decoration: inherit; } .tahiti-highlight-search { background: #9cf; text-decoration: inherit; } .tahiti-sidebar-heading { font-size: 110%; margin-bottom: 0px; padding-bottom: 0px; } /*************************************/ /* End DARB Formats */ /*************************************/ @media all { /* * * { line-height: 120%; } */ dd { margin-bottom: 2ex; } dl:first-child { margin-top: 2ex; } } @media print { body { font-size: 11pt; padding: 0px !important; } a:link, a:visited { color: black; background: inherit; } code, pre, samp, tt { font-size: 10pt; } #nav, #search_this_book, #comment_form, #comment_announcement, #flipNav, .noprint { display: none !important; } body#left-nav-present { overflow: visible !important; } } PKr.hcPKƉZEOEBPS/dcommon/doccd_epub.jsM /* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PKƉZE OEBPS/toc.ncxP JD Edwards EnterpriseOne Tools Server and Workstation Administration Guide, Release 8.98 Update 4 Cover Title and Copyright Information Contents List of Figures Preface 1 Introduction to JD Edwards EnterpriseOne Tools Server and Workstation Administration 2 Administering the IBM i Server 3 Administering the UNIX and Linux Servers 4 Administering the Windows Server 5 Monitoring System Web Services Gateway (WSG) Servers from the Web 6 Working with JD Edwards EnterpriseOne on Windows Terminal Server 7 Administering JD Edwards EnterpriseOne on a Unix Cluster 8 Administering JD Edwards EnterpriseOne on a Windows Server Cluster 9 Administering JD Edwards EnterpriseOne on an IBM i Cluster 10 Backing Up JD Edwards EnterpriseOne Tables 11 Generating Serialized Objects for the JD Edwards EnterpriseOne Web Server 12 Understanding Executable Files on the Workstation 13 Troubleshooting the Workstation 14 Troubleshooting the Enterprise Server A Using the Microsoft Visual C++ 2005 or Higher Level Compiler Glossary Index Copyright PK˯fPKƉZEOEBPS/content.opf0 JD Edwards EnterpriseOne Tools Server and Workstation Administration Guide, Release 8.98 Update 4 en-US E14718-03 Oracle Corporation Oracle Corporation JD Edwards EnterpriseOne Tools Server and Workstation Administration Guide, Release 8.98 Update 4 2012-05-16T12:30:19Z JD Edwards EnterpriseOne Tools Server and Workstation Administration Guide, Release 8.98 Update 4 PKl#00PKƉZE OEBPS/troubleshoot_e1_server.htm Troubleshooting the Enterprise Server

14 Troubleshooting the Enterprise Server

This chapter contains the following topics:

14.1 Understanding Enterprise Server Troubleshooting

Using these techniques, you can troubleshoot batch applications and business functions that process on the Oracle JD Edwards EnterpriseOne enterprise server. Platform-specific procedures are presented in other sections of this guide.

You might encounter these types of general problems on a JD Edwards EnterpriseOne enterprise server. The information presented applies to all operating systems:

  • Communication failure when submitting a UBE or when trying to run business function logic on the server.

  • Error message appearing at the bottom of a form (press F8 or click Bitmap to view an error description).

You should be familiar with the various logs used to troubleshoot problems on the server. Using these logs, you can troubleshoot batch applications and business functions that are executing on the enterprise server.

Types of Enterprise Server Log Files

In general, logs on JD Edwards EnterpriseOne enterprise servers are classified as either logic processing logs or batch processing logs.

Logic Processing Logs

You can use these two major log file sources for troubleshooting processing faults on the enterprise server:

  • jde.log

    This log displays fatal errors. It can track any fault that might occur within JD Edwards EnterpriseOne.

  • jdedebug.log

    This log tracks API calls and SQL statements as well as other messages. You can use this file to determine the point in time when normal execution stopped. The system does not use jdedebug.log to track errors; instead, this log is used to track the timing of JD Edwards EnterpriseOne processes.

Batch Processing Logs

You can use the batch process log to identify faults in JD Edwards EnterpriseOne processing related to batch processes. This log can contain event rule (ER) references, batch application process flow, and SQL statements, as well as other messages.

14.1.1 The Enterprise Server jde.log File

You can use the enterprise server jde.log to track fatal error messages generated by batch applications and business functions that are executing on the enterprise server. The jde.log tracks any fault that might occur within JD Edwards EnterpriseOne. When you are looking for startup errors, you should read the jde.log from the top down. For other errors, you should read from the bottom up.

If jde.log is enabled, a uniquely identified log file is created each time you start a JD Edwards EnterpriseOne job (including JD Edwards EnterpriseOne startup) on the enterprise server. These logs are associated with an enterprise server process ID (Job Number for IBM i).

The process ID (Job Number for IBM i) is appended to the file name, before the .log extension, with an underscore character (for example, jde_442.log).

jde.log File Creation

The enterprise server jde.log file is created (if it does not exist) or overwritten (if it exists) at the start of every JD Edwards EnterpriseOne session. For a Microsoft Windows enterprise server jde.log file, JD Edwards EnterpriseOne appends new information to the end of the jde.log.

Troubleshooting: Enabling and Disabling jde.log

Normally, the enterprise server should be set to enable the jde.log and disable the jdedebug.log. This example has combinations for the jde.ini parameter setting for enabling or disabling server logs.

Enable jde.log

This is an example of the jde.log file with debug logging enabled:

[DEBUG]
Output=NONE
LogErrors=1
JobFile=valid location/name (1)
DebugFile=valid location/name (2)

Enable jde.log and jdedebug.log

This is an example of the jde.log file with debug logging enabled and output to a file:

[DEBUG]
Output=FILE
LogErrors=1
JobFile=valid location/name (1)
DebugFile=valid location/name (2)

Disable jde.log

This is an example of the jde.log file with debug logging disabled:

[DEBUG]
Output=NONE
JobFile=blank/invalid location/name (1)
DebugFile= blank/invalid location/name (2)

Files and members generated by the jde.log will be located in JobFile. JD Edwards EnterpriseOne uses these naming conventions:

jde_process_ID.log

Where jde is the file or member name prefix, process_ID is a uniquely named process ID, and log is the file or member suffix or extension.

For non-IBM i enterprise servers, files generated by the jdedebug.log will be located in DebugFile. JD Edwards EnterpriseOne uses these naming conventions:

jdedebug_process_ID.log

Where jdedebug is the file name prefix, process_ID is a uniquely named process ID, and log is the file suffix or extension.


Note:

Verify whether the paths for the JobFile and the DebugFile settings are valid. If the paths for these settings are invalid, JD Edwards EnterpriseOne does not create logs.

For IBM i enterprise servers, the members generated by jdedebug will be located in DebugFile. JD Edwards EnterpriseOne uses these naming conventions:

jdedebug_process_ID

Where jdedebug is the file name prefix and process_ID is a uniquely named process ID.

Troubleshooting: Recommendations for the Enterprise Server jde.log

You can create a normal (successful) jde.log by signing on to JD Edwards EnterpriseOne and then immediately signing off. Use this log of successful startup statements to compare against logs that have a problem.

You can also rename the log to indicate the nature of the problem. For example, you might delete the jde.log and then run a report that causes an error condition. Then you could rename the jde.log to report.log.

If you are the only user running an instance of JD Edwards EnterpriseOne, you can add comment lines to the jde.log indicating the sequence of events you are performing. For example, you might be running an application that you know causes an error. Before you run the application, you could edit the jde.log to add a comment line stating you are about to start the suspect application.

Troubleshooting: Recommendations for Setting Up Server Locations

JD Edwards EnterpriseOne recommends that you create a separate directory on the enterprise server for logs. You should set up the jde.ini file to explicitly direct log files to that directory. For jde.log, the location and name of the log file are controlled by this default setting:

[DEBUG]
JobFile=jde.log

Files generated by the jde.log are located in JobFile. JD Edwards EnterpriseOne uses this syntax for naming files:

jde_process_ID.log (jde_jobnumber.log for IBM i)

If you do not specify a location, JD Edwards EnterpriseOne places the log files in the directory where you ran the JD Edwards EnterpriseOne startup executable (the default). On a UNIX machine, if you start JD Edwards EnterpriseOne with these commands and if logging is enabled, the system places the log files in the /u13/JDEdwards/E900/system/bin32 directory:

cd /u13/JDEdwards/E900/system/bine32
RunOneWorld.sh

If you start JD Edwards EnterpriseOne with these commands and if logging is enabled, the system places the log files in the /usr/JDEdwards directory because that is the working directory:

cd /usr/JDEdwards
/u13/JDEdwards/E900/system/bin32/RunOneWorld.sh

If you set up the UNIX machine to automatically start JD Edwards EnterpriseOne when the machine is started, it is especially important that you specify the full path of the log file in the jde.ini file.

Naming Conventions for jde.log

JD Edwards EnterpriseOne processes create logs as jde_processID.log (jde_JobNumber.log for IBM i), where processID is the process ID of the process that creates the log.

Non-IBM i JD Edwards EnterpriseOne processes move logs for batch jobs to the PrintQueue directory and rename them as report_version_date_time.log, where report is the report name and version is the version name; for example, R014021_XJDE0001_D990312_T161854215.log.

Example: Enterprise Server jde.log

This example of the jde.log from the enterprise server displays errors caused by signon tables that were not properly closed after fetching data. Normally, the only way this can happen is if a business function program did not close the table. Therefore, generated code applications cannot have this problem.

Most entries in the jde.log file are significant, and you should examine them closely. This information is also used by developers to indicate problems with the application that need to be addressed.

Troubleshooting: Recommendations for the Enterprise Server jde.log when a fatal crash occurs

If a fatal crash occurs on a JD Edwards EnterpriseOne Windows Server the Call Stack will be automatically be dumped into the jde.log file. This information in the jde.log file will contain a fully qualified path to the system install location. Therefore, you should take the necessary steps to ensure that the install path information is secured.

14.1.2 The Enterprise Server jdedebug.log File

You can use the enterprise server jdedebug.log to determine the point in time when normal execution stopped. The system does not use jdedebug.log to track errors. Instead, it uses this log to track the timing of JD Edwards EnterpriseOne processes. The log contains API calls and SQL statements as well as other messages.

You can use jdedebug.log to find out where a process ended. For example, log data can include what ODBC was trying to connect to, the SQL statement that was being executed for a specific table, and whether memory has been freed.

If jdedebug is enabled, each jdenet_n job and batch process started on a server creates a uniquely identified jdedebug.log. These logs are associated with an enterprise server process ID. Each time JD Edwards EnterpriseOne is started on the enterprise server and each time a batch process job is executed on the enterprise server, a new jdedebug.log is created.

For enterprise servers, the process ID (Job Number for IBM i) is appended to the file name with an underscore character before the .log extension. For example, the file name might be jdedebug_442.log. The enterprise server jdedebug.log is created (if it doesn't exist) or overwritten (if it exists) at the start of every JD Edwards EnterpriseOne session. For a Microsoft Windows enterprise server jde.log file, JD Edwards EnterpriseOne appends new information to the end of jde.log.


Note:

Server administrators are responsible for clearing and deleting jde.log and jdedebug_*.log files from the enterprise server.

Troubleshooting: Reading the jdedebug.log

If the process failed and you have logging turned on, look in the jdedebug.log for these messages:

  • Not Found

  • Failure

Also, look at the end of the log to see what task was executed last. In general, important lines in the log are:

  • SELECT

    The SELECT lines indicate which table you are selecting. The log tells you where the table resides. For the IBM i, this location is a library. For non- IBM i servers, this location is an environment. You should verify that the selected libraries and environments are correct.

  • ODBC Version

    The ODBC lines indicate whether you are having problems connecting to the driver.

Troubleshooting: Enabling and Disabling jdedebug.log

Normally, the enterprise server should be set to enable the jde.log and disable the jdedebug.log. This example has valid setting combinations for enabling or disabling server jdedebug.log.

Troubleshooting: Enabling and Disabling jdedebug.log

These are the settings for enabling the jdedebug.log file:

[DEBUG]
Output=FILE
LogErrors=1
JobFile=valid location/name (1)
DebugFile=valid location/name (2)

Enable jde.log and jdedebug.log

These are the settings for enabling the jde.log and jdedebug.log files:

[DEBUG]
Output=BOTH
LogErrors=1
JobFile=valid location/name (1)
DebugFile=valid location/name (2)

Disable jdedebug.log

These are the settings for disabling the jdedebug.log file:

[DEBUG]
Output=NONE
LogErrors=0
JobFile=valid location/name (1)
DebugFile=valid location/name (2)

The [DEBUG] section of the jde.ini file contains the files and members generated by the jde.log. JD Edwards EnterpriseOne uses these naming conventions:

jde_<pid>.log

Where jde is the file or member name prefix and <pid> is a uniquely named process ID.

For enterprise servers, the files generated by the jdedebug.log will be located in the jde.ini file. JD Edwards EnterpriseOne uses these naming conventions:

jdedebug_<pid>.log (jdedebug_<JobNumber>.log)

Troubleshooting: Recommendations for the Enterprise Server jdedebug.log

You can create a normal (successful) jdedebug.log (JDEDEBUG for IBM i) by logging on to JD Edwards EnterpriseOne and then immediately logging off. Use this log of successful start up statements to compare against logs that have a problem.

You can also rename the log to indicate the nature of the problem. For example, you might delete the jdedebug.log and then run a report that causes an error condition. Then you could rename the jdedebug.log to report.log.

Another alternative is to add comment lines to the jdedebug.log that indicate the sequence of events you are performing. For example, you might be running an application that you know causes an error. Before you run the application, you could edit the jde.log to add a comment line stating that you are about to start the suspected application.

Troubleshooting: Recommendations for Setting Up Server Locations

We recommend that you create a separate directory on the enterprise server for logs. You should set up the jde.ini file to explicitly direct log files to that directory. For jdedebug.log, these setting controls the location:

 [DEBUG]
DebugFile=jdedebug.log

For enterprise servers, the files generated by the jdedebug.log will be located in DebugFile. JD Edwards EnterpriseOne uses these naming conventions:

jdedebug_process_ID.log (jdedebug_JobNumber.log for IBM i)

Where jdedebug is the file name prefix and process_ID is a uniquely named process ID.

By default, JD Edwards EnterpriseOne places the log files in the directory where you ran the startup executable. For example, on a UNIX machine, if you start JD Edwards EnterpriseOne with this command:

cd /u13/JDEdwards/E900/system/bin32 RunOneWorld.sh

and assuming that logging is enabled, the system places the log files in the /u13/JDEdwards/E900/system/bin32 directory. Similarly, on a UNIX machine, if you start JD Edwards EnterpriseOne with this command:

cd /usr/JDEdwards /u13/JDEdwards/E900/system/bin32 RunOneWorld.sh

and assuming that logging is enabled, the system places the log files in the /usr/JDEdwards directory. This is the working directory. If you set up the UNIX machine to automatically start JD Edwards EnterpriseOne when the machine is booted, it is especially important that you specify the full path of the log file.

Naming Conventions for jdedebug.log on the Enterprise Server

JD Edwards EnterpriseOne processes create logs as jdedebug_process_ID.log, where process_ID (Job Number for IBM i) is the process ID of the process creating the log. For example, a batch report running on a UNIX server as process 123456 would produce a file named jdedebug_123456.log.

14.1.3 The Batch Process Log File

Whenever you run a batch process requested from a workstation, an individual log file is created in the JD Edwards EnterpriseOne print queue directory (E900\PrintQueue) on that workstation. For any batch process request issued from a workstation, this file is created even if you have specified that the batch process report is to run on the enterprise server. For batch processes requested from a server, the jdedebug.log file is created on the server in the print queue directory.

Based on the setting of the UBESaveLogFile parameter in the [UBE] section of the jde.ini file, this log file is deleted or saved on successful completion of batch processes. This log file displays different types of messages that can help track errors in the batch process. The messages are:

  • Section Level Process

  • Object Level Process

  • ER Level Process

  • DB Level Process

The batch process log can contain ER references, batch process flow, and SQL statements, among other messages. You can use the batch process log file to determine when normal execution stopped.

The batch process log file displays the process flow in batch processes. This example describes the event flow within the batch engine and provides sample messages that would be written to the log at each point in the event flow, assuming UBEDebugLevel is set to 6. Note that each message written to the log file displays the error level of that message in brackets. For example, -UBE--[2]-indicates a section-level message.

When a UBE processes a section, it begins by opening the business view for that section within the INIT section event. As a result, a SELECT statement follows directly after the INIT section for each section.

--UBE--[2]-- 355/392 Process Init Section
--UBE--[2]-- 355/392 InitSection for Business Unit Report Driver
--UBE--[2]-- 355/392 InitSection for Business Unit Report LBH
--UBE--[4]-- 355/392 SELECT T0.MCMCU, T0.MCSTYL, T0.MCLDM, T0.MCCO, T0.MCAN8, 
T0.MCCNTY, T0.MCADDS, T0.MCFMOD, T0.MCDL01, T0.MCDL02, T0.MCDL03, T0.MCDL04, 
T0MCRP01, T0.MCRP02, T0.MCRP03, T0.MCRP04, T0.MCRP05, T0.MCRP06, T0.MCRP07, 
T0.MCRP08, T0.MCRP09, T0.MCRP10, T0.MCRP11, T0.MCRP12, T0.MCRP13, T0.MCRP14, 
T0.MCRP15, T0.MCRP16, T0.MCRP17, T0.MCRP18, T0.MCRP19, T0.MCRP20, T0.MCRP21, 
T0.MCRP22, T0.MCRP23, T0.MCRP24, T0.MCRP25, T0.MCRP26, T0.MCRP27, T0.MCRP28, 
T0.MCRP29, T0.MCRP30, T0.MCPECC, T0.MCALS, T0.MCALCL, T0.MCSBLI, T1.CCCO,
 T1.CCNAME, 
T1.CCRCD FROM F0006 T0,F0010 T1 WHERE ( T1.CCCO=T0.MCCO ) ORDER BY T0.MCCO ASC,
T0.MCMCU ASC

After INIT Section, the engine calls Advance Section to retrieve a record from the SELECT statement:

--UBE--[2]-- 355/392 Process Adv Section
--UBE--[2]-- 355/392 Processing Adv Section for Page Header

After the retrieve, the engine performs the DO Section processing. This includes any event rules attached to the DO Section event:

--UBE--[2]-- 355/392 Process DO Section
--UBE--[2]-- 355/392 Processing DO Section for Page Header
--UBE--[4]-- 355/392 --ER: Line(1): Loading Data Structure for BSFN
--UBE--[4]-- 355/392 --ER: Line(1): Processing BSFN : GetCompanyAndReportDesc
--UBE--[4]-- 355/392 --ER: Line(1): Done Processing BSFN : GetCompanyAndReportDesc
--UBE--[4]-- 355/392 --ER: Line(1): Unloading Data Structure for BSFN
--UBE--[4]-- 355/392 --ER: Line(1): Done Processing ER BSFN

Within DO Section, each object is processed and eventually printed in INIT, DO, and END object order:

--UBE--[3]-- 355/392 Process Init Object
--UBE--[3]-- 355/392 Processing Init Item SystemTime in Section Page Header
--UBE--[3]-- 355/392 Process DO Object
--UBE--[3]-- 355/392 Processing Do Object SystemTime in Section Page Header
--UBE--[6]-- 355/392 Printing Object Value = 14:35:46
--UBE--[3]-- 355/392 Process End Object
--UBE--[3]-- 355/392 Process Init Object
--UBE--[3]-- 355/392 Processing Init Item SystemDate in Section Page Header
--UBE--[3]-- 355/392 Process Do Object
--UBE--[3]-- 355/392 Processing Do Object SystemDate in Section Page Header
--UBE--[6]-- 355/392 Printing Object Value = 3/6/00
--UBE--[3]-- 355/392 Process End Object

After all the objects for a section have been processed, the engine calls Process Last Object and then begins processing for the next section in the report:

--UBE--[3]-- 355/392 Processing Do Object 
ModelAccountsandConsolid in Section Page Header
--UBE--[6]-- 355/392 Printing Object Value = MD
--UBE--[3]-- 355/392 Process End Object
--UBE--[3]-- 355/392 Process Last Object
--UBE--[2]-- 355/392 Process End Page Header Section
--UBE--[2]-- 355/392 Process Do Section
--UBE--[2]-- 355/392 Process Do Section for Business Unit Report Driver

When all sections have been processed, if the report finishes without errors, these messages are displayed at the end of the log:

--UBE--[6]-- Successfully Finishing Engine
...
UBE Job Finished Successfully.

The level of detail provided by the batch process log is controlled by the UBEDebugLevel parameter of the jde.ini file. These are values for UBEDebugLevel:

ValueDescription
0No error messages.
3Object-level messages.
4Event rule messages and SQL statements (plus levels 1-3).

14.2 Viewing Enterprise Server Logs from the Workstation

You must log on to the server to view logs for the server. You can also view portions of log files from the workstation that initiated the calls to the server.

To view server logs from the workstation:

  1. In the [DEBUG] section of the enterprise server jde.ini file, set the ClientLog parameter to 1.

    This setting enables the server to send logs to workstations. For example:

     [DEBUG]
    
    ClientLog=1
    
  2. In the [DEBUG] section of the Workstation jde.ini file, set the ServerLog parameter to 1.

    This setting enables the workstation to receive log information from the enterprise server. For example:

     [DEBUG]
    
    ServerLog=1
    

14.3 Setting Up the Enterprise Server jde.log

To set up the enterprise server jde.log:

  1. Locate the enterprise server jde.log file (JDE member for IBM i) using Server Manager.

  2. In Server Manager, in the Management Console, select the Logging hyperlink from the Configuration pane.

  3. In the Error and Debug Logging pane, enable or disable the logging of errors to the jde.log file by modifying the Enable JDE.LOG field.

    SettingPurpose
    Enable JDE.LOGA parameter controls whether the logging function is enabled. Valid values are:
    • Disabled (Default)

    • Enabled


  4. Click the Apply button to save the changes.


See Also:

  • 8.98 Server Manager Guide on My Oracle Support..


14.4 Setting Up the Enterprise Server jdedebug.log

To set up the enterprise server jdedebug.log:

  1. Locate the enterprise server jdedebug.log file (JDE member for IBM i) using Server Manager.

  2. In Server Manager, in the Management Console, select the Logging hyperlink from the Configuration pane.

  3. In the Error and Debug Logging pane, verify or change the name for the debug file using the JDEDEBUG.LOG Filename parameter field.

    The JDEDEBUG.LOG Filename specifies the name of the jdedebug.log file (JDEDEBUG member for IBM i). For non-IBM i enterprise servers, the default value is jdedebug.log. For IBM i enterprise servers, the default value is JDEDEBUG.

  4. In the Error and Debug Logging pane, enable or disable the logging of errors to the jde.log file by modifying the Enable JDE.LOG field.

    SettingPurpose
    Enable Debug LoggingA parameter controls whether the logging function is enabled. Valid values are:
    • NONE — No Debug Logging

      • FILE — Enable Debug Logging


  5. Click the Apply button to save the changes.


See Also:

  • 8.98 Server Manager Guide on My Oracle Support..


14.5 Setting Up the <batch process>.log File

To set up the <batch_process>.log file:

  1. Locate the workstation jde.ini file.

    The JD Edwards EnterpriseOne setup program places this file in the working Windows directory (for example, c:\WINNT40\jde.ini). If you are unsure of the workstation's working Microsoft Windows directory, use the Find command to locate the jde.ini file.

  2. Use an ASCII editor (such as Microsoft Notepad or Microsoft Wordpad) to open the file.

  3. Set the level of batch report debugging information that you want written to the batch process log file and whether you want the file to be saved.

    These settings are controlled by these parameters in the [UBE] section:

    SettingPurpose
    UBEDebugLevel=A parameter that specifies the level of UBE debug logging. Valid values are:
    • 0 (default): No error messages.

    • 1: Warnings and high-level information.

    • 2: Section-level messages (plus Level 1 messages)

    • 3: ER messages and database mapping messages (plus Level 1-2 messages)

    • 4: SQL statements (plus Level 1-3 messages)

    • 5: Database output (plus Level 1-4 messages)

    • 6: Batch process function calls and printed output values (plus Level 1-5 messages)

    UBESaveLogFile=A parameter that specifies whether the batch_report.log file will be saved. Valid values are:
    • 0: The batch_report.log file is not saved.

    • 1: The batch_report.log file is saved in the workstation's JD Edwards EnterpriseOne print queue directory (E900\PrintQueue).


  4. Save the changes and close the jde.ini file.

14.6 Troubleshooting the Enterprise Server

This section discusses how to:

  • Troubleshoot general problems.

  • Troubleshoot communication problems.

  • Troubleshoot server map problems.

14.6.1 Troubleshooting General Problems

You can troubleshoot general enterprise server problems using the Server Manager which enables you to monitor server components, processes, and resources.

To troubleshoot general problems:

  1. Use Server Manager to verify that you are looking at the correct port and the server is operational on that port.

  2. Verify the netTrace setting in the enterprise server jde.ini file:

     [JDENET]
    
    netTrace=0/1 (disabled/enabled)
    

    When the variable netTrace=0, JD Edwards EnterpriseOne does not generate Net log information. When netTrace=1, JD Edwards EnterpriseOne generates Net log information.


    Note:

    Using Server Manager, you can turn logging on or off for a particular kernel process.

  3. Return to JD Edwards EnterpriseOne and duplicate the problem.

    The trace facilities write debugging information to the jde.log and jdedebug.log files.

  4. After running the business function again, look at the jde.log files on the server.

    Search for these message (you must search for lower case): "jdenet_n process."

    If you cannot find this message, bring the server down and back up. If you do find this message, look at the jde.log file with the same process ID as the net process.

  5. Verify that the user is running in the correct environment or path code; for example PD900 or DV900.

    If this environment is not set up on the server, you receive errors on the workstation jde.log as well as the enterprise server jde.log.

  6. In the jde.logs on the enterprise server, look for a JDENET_SendMSg Failed Error=12 message.

    This message means that the JDENET server is down and you must restart it.

  7. In the jde.log file on non-IBM i enterprise servers, look for any "Unable to connect to Oracle" messages. Search on ORA-.

    If you find messages, they indicate problems connecting to Oracle. You get an indication of an Oracle connection problem if, in a business function, you select find/browse, data is not found, and no errors are received from the application. You need help from an Oracle database administrator at this point. To debug this problem, see the section in this document about sql.log.

  8. Look in the jdexxx.log file (where xxx is the ID of the process that created the log) on the server for these message: "Could not find symbol in the <BSFN dll name>."

    If present, this message might mean that the business function did not build on the enterprise server.

  9. If you have not found a problem indicating why you are unable to run an application on the enterprise server, you will need to debug it on the server.


    Note:

    For Microsoft Windows enterprise servers, if you cannot identify a problem by reading the log, you need to put the business function through debug on the server. This action requires knowledge of C++ and how to debug. See Microsoft documentation for Debugging C++.

14.6.2 Troubleshoot Communication Problems

When you submit an application to an enterprise server through an override of the master business function set in Object Configuration Manager, you might experience communication problems with the enterprise server. The business function then runs locally on the client workstation. JD Edwards EnterpriseOne displays a window to inform you that the business function is running in a new location.

To troubleshoot communication problems:


Note:

Use this procedure if JD Edwards EnterpriseOne displays a window to inform you that a business function is running in a new location.

  1. Check the jde.ini on the workstation to make sure the JDENET service name (port number) is correct and valid.

    This port number must match the settings in the server jde.ini file, and the JD Edwards EnterpriseOne server must be running to successfully submit reports or to run business logic on a server. Security services and transaction management services also require the JD Edwards EnterpriseOne server to be running:

     [JDENET]
    
    serviceNameListen=service name
    
    serviceNameConnect=service name
    

    If serviceNameListen=service name specifies the communications service port on the TCP/IP network, JD Edwards EnterpriseOne uses this port address to listen for requests on the network. Using a file called services, you can associate the port number with a unique name. The default value is jde_server (port number 6003).

    If serviceNameConnect=service name specifies the communications service port on the TCP/IP network, JD Edwards EnterpriseOne uses this port address to connect to the network. Using a file called services, you can associate the port number with a unique name. The default value is jde_server (port number 6003).

  2. On the workstation, exit JD Edwards EnterpriseOne and turn logging on in the jde.ini.

  3. Run the application on the server again, and then check the jde.log file to see if any of these errors are logged:

    • JDENET_SendMsg Failed Error=8

      This error can mean you are not using the correct TCP/IP service port or that the enterprise server does not have that JDENET listing.

    • JDENET_SendMsgFailed Error=5, 11, or 12

      These errors can mean that the message is being sent to the correct port, but the enterprise server JDENET is down.

  4. From within Server Manager, change the port address to determine if both the workstation and server are using the same port.

  5. Check the services file on the workstation (located in the operating system directory\System32\drivers\etc for Windows).

    Ensure that a blank line exists at the end of the file and that you have the service name mentioned in Step 1 (for example, jde_server) going to the correct port address on the server. Verify the port address with the server administrator.

  6. If you receive a Communication Failure message, try resubmitting the application.

    A time-out may have occurred.

     [JDENET]
    
    netTrace=0/1 (disabled/enabled)
    
  7. Look in the log file for this message:

    Could not find symbol in the <BSFN dll name>
    

14.6.3 Troubleshooting Server Map Problems

If you change the Object Configuration Manager or the Data Source Master files in the Server Map data source, you can test the changes using the PORTTEST program. This test is designed to validate the environments.

See the section specific to the platform type for more information about the PORTTEST program.

14.7 Troubleshooting the Enterprise Server Processes

This section provides an overview of resource utilization and performance and discusses how to evaluate JD Edwards EnterpriseOne server performance.

14.7.1 Understanding Resource Utilization and Performance

This section discusses:

  • Requirements

  • Configuration Setup

The EnterpriseOne Kernel can sometimes encounter certain complex issues which have proved intractable to resolve. Some of these intractable issues are Kernel Crashes, Deadlocked UBEs, or OutMemory conditions that require specialized code to determine the root cause. In addition, the kernel and batch processes utilize resources and place demands on memory and the CPU and execute in the context of other processes that also demand memory and CPU resources. Each process has its own level of impact on the system, and the cumulative effect of all processes currently running will impact performance. Appropriate data can be captured and used with measurement tools to evaluate overall performance as well as the impact of individual processes. When utilization or performance exceeds certain thresholds, it is critical to have tools that can diagnose which process is creating the resource overload in order to correct the problem and restore the performance to normal levels before the system crashes.

A new administration tool called Kernel Resource Management (KRM) has been added to Server Manager to enable you to isolate and determine root causes of CPU and Memory issues, increase system stability and simplify the troubleshooting process. Graphs allow you to quickly identify processes with high resource consumption and recycling allows the ability to reclaim system resources.

There are graphs for the following:

  • Summary Graphs for entire Enterprise Server that displays memory and CPU usage.

  • At Enterprise Server level, there are graphs that display the Top 10 Processes by Memory and CPU.

  • At the Individual Process Level there are graphs for CPU, Memory, caches and DB connections.

New diagnostics allows you to quickly identify root cause of resource consumption issues. For Diagnostics, information about the current resource usage is written to the jdedebug.log:

Cache information:

  • Cache name

  • Number of records in the cache

  • Indices

Database Transactions:

  • Commitment type

  • User

  • Application

KRM enables you to monitor kernel and batch processes and to diagnose CPU and memory usage issues.

14.7.1.1 Requirements

Kernel Resource Management requires JD Edwards EnterpriseOne 8.98.2.0 to be able to capture the diagnostic information. Server Manager 8.98.2.0 or above is required to display the diagnostic information.

If an older Server Manager version is used to monitor a newer Enterprise Server, the new diagnostic data will be captured but will not be viewable from Server Manager. Similarly, if a newer Server Manager version is used to monitor an older Enterprise Server, then the new diagnostic data will not be captured nor be viewable from Server Manager.

14.7.1.2 Configuration Setup

The Kernel Resource Management includes several new graphs of different attributes of the Enterprise Server instance. The interval of the data in these graphs is defined by Server Manager monitors. By default, each monitor collects up to 1440 data points. In the monitor configuration, the user can specify at what interval these data points will be collected. By default, the collection interval is 60 seconds. This default value allows the collection of 24 hours worth of data points. These are two graphs used to present the data for all CPU or memory processes. These graphs can be accessed by selecting an enterprise server in Server Manager.

If a less granular data set is desired, you can increase the collection interval. If more granular data set is desired, you can lower the collection interval. However, it is not recommended to set the collection interval less than 20 seconds. The embedded Server Manager agents (in the Enterprise Server, for example) are designed to collect runtime metrics every 20 seconds. Setting the monitor collection interval to less than 20 seconds will result in duplicate (or stale) data points as well as higher CPU usage on the Enterprise Server.


Note:

When the Server Manager Console (SMC) services are stopped and restarted, the collection of data for these monitors is reset. Also, any changes made to the collection interval and to the number of data points are NOT maintained and the default value of 60 seconds is used.


Note:

If there are mandatory multiple EnterpriseOne instances, one may want to reduce the number of collection data points and increase the collection frequency. For more information please refer to the solution document on My Oracle Support titled:

E1: SVM: Server Manager Console running out of memory with java.lang.OutOfMemory exception. 1082765.1. (Doc ID 1082765.1).


Overhead on Server Manger Console

The data for graphs is saved in XML format in <install_location>/jde_home/data. The XML files are relevant for graphical display purposes until the SMC is bounced. The stale XML files (from a previous run) may be purged or archived. Previously saved XML graph files cannot be viewed.

Server Manager Security Permission Role

A new server manager security permission called enterpriseServerDeveloper is available which will allow you to create memory, CPU and all diagnostics. This security permission will also allow you to start, dump, parse and stop JADE. The buttons used in the JADE section will be disabled if the Server Manager user does not have the enterpriseServerDeveloper Server Manager security permission. This security permission is always assigned to the jde_admin user.

Figure 14-1 Permissions for Server Groups

Surrounding text describes Figure 14-1 .

14.7.2 Evaluating EnterpriseOne Server Performance

Kernel Resource Management is a set of diagnostic tools implemented in Server Manager 8.98.2.0 that utilizes historical data captured at specific intervals. You can use KRM to drill down through different levels of detail information and isolate the process, user, and attribute to determine the critical decision-making factors when diagnosing and troubleshooting memory problems and CPU issues. KRM functions as a central dashboard regardless of the platform that it is running on.

In order to evaluate JD Edwards EnterpriseOne server performance, you will need to follow a process that will isolate the problem. In this process you will:

  • Determine if the CPU or memory is abnormal

  • Identify the abnormal process

  • Evaluate the individual process

  • Get the memory or CPU diagnostics

  • Log off or recycle

  • Use Advanced Profiling

This is a flow chart of the process using KRM to diagnose the root cause of a problem:

Figure 14-2 Evaluating Server Performance

Description of Figure 14-2 follows

14.7.2.1 Determine if CPU or Memory is Abnormal

To help you determine what constitutes "abnormal" memory usage, new functionality has been added to the server command-line program porttest. This new functionality will simulate a memory leak until the process can no longer allocate memory. The output of the program will be the number of bytes that the porttest program was able to allocate before failure. This number can be used by the administrator to estimate when an EnterpriseOne process may fail due to excessive memory consumption.

The porttest program can be run in two modes: single-threaded (simulates runbatch and subsystem UBE's) and multi-threaded (simulates CallObject kernels). Since the memory model on the IBM i platform is single-level store, a maximum-limit cannot be determined in this way.


Note:

If you are running EnterpriseOne Services on the IBM i platform, please work with your IBM representative to determine the maximum temporary storage that a job can use before failure.

Automatic Method for Memory Limit

To calculate the memory limits:

  • Stop the EnterpriseOne server by clicking the Stop button.

  • Click the Calculate Memory Limit button.

  • Start the EnterpriseOne server by clicking the Start button.

Figure 14-3 General and Instance Properties section - before calculating memory limit

Surrounding text describes Figure 14-3 .

Figure 14-4 Instance Properties section - after calculating memory limit

Surrounding text describes Figure 14-4 .

What constitutes a normal CPU consumption is entirely dependent on the vendor sizing of the EnterpriseOne instance. As a rule of thumb, high sustained CPU usage could indicate under-sized hardware. Determining abnormal CPU usage is challenging because it depends on the load on the server and average usage patterns. For example, it may be normal for the CPU usage to drop below 10% overnight on an application server when no interactive users are on the system. However, if the server is used for nightly batch runs, then dropping below 10% overnight when the batch ube jobs are running might be abnormal. Likewise, it would probably be abnormal for the CPU usage to drop below 10% during the middle of the day on an application server. However, it might be normal if this occurred during lunch hour for most interactive users.

What is "normal" and "abnormal" will be different for each customer and the administrator may need to monitor their EnterpriseOne server usage for a month or so to get a feel for what their normal usage pattern is.

Runtime Metrics Section

Two metrics have been added to the Runtime Metrics section to provide information on Instance-level CPU and memory. The new metrics are:

MetricDescription
Instance-level CPU (%)The total CPU usage of all processes running in this enterprise server instance.
Instance-level Memory (MB)The total Memory usage of all processes running in this enterprise server instance.

Figure 14-5 Runtime Metrics Section

Surrounding text describes Figure 14-5 .

Instance-Level Summary Page

The instance-level summary page is used to evaluate instance-level data and has a new section called Resource Charts - Sum of All EnterpriseOne Processes. The instance level summary graphs are used to determine if the CPU or Memory have exceeded normal thresholds.

These are the navigation steps to access the instance-level summary page:

  • Select the enterprise server instance in server manager.

  • You should see the <EnterpriseOne Enterprise Server> instance.

  • Make sure that the server is up and running.

The instance-level summary page has the following sections:

  • General and Instance Properties (not modified).

  • Resource Charts - Sum of All Instance Level EnterpriseOne Processes (New).

  • Available Log Files (not modified).

In the Resource Charts - Sum of All Processes section, the instance level summary graph displays the sums of CPU Usage - Percent and Memory Usage - in MB for all processes in the EnterpriseOne Server instance. The time-frame of the data collected is indicated along the x-axis of the graphs. How much data is represented depends on when the Server Manager Console services were started and the collection intervals for the monitors that were specified (refer to Configuration Setup).

Figure 14-6 Resource Charts - Sum of All Instance Level EnterpriseOne Processes

Description of Figure 14-6 follows

If you want to get more information about processes in the EnterpriseOne Server instance and see where a likely problem might be, you can click on the "Process Detail" link on the navigation pane on the left-ehand side of the Server Manager screen.

14.7.2.2 Identify Abnormal Process

The Enterprise Server Processes page is used to identify abnormal processes through evaluating kernel-level data.

These are the navigation steps to access the enterprise server process page:

  • Select the enterprise server instance in server manager.

  • You should see the <EnterpriseOne Enterprise Server> instance.

  • Make sure that the server is up and running.

  • Go to the <Runtime Metrics> section.

  • Click on the <Process Detail> link.

  • You should see the <Enterprise server Processes> page.

The enterprise server process has the following sections:

  • Process and Batch Summary (not modified).

  • Resource Charts – Top EnterpriseOne Processes (New).

  • Processes (modified).

This page has a new section called Resource Charts - Top EnterpriseOne Processes and a modified section called Process List. The enterprise server process detail page will have the top ten individual processes for percent CPU usage and memory usage (in MB) designated in graph format. The top ten processes are chosen from all currently running EnterpriseOne Server processes. The time-frame of the data collected will be indicated along the x-axis of the graphs. How much data is represented will depend on when the Server Manager Console services were started and the collection intervals for the monitors that were specified (refer to Configuration Setup).

This graph enables the administrator to visually determine which process to troubleshoot, by providing an easy reference for the top memory or CPU consuming processes. The Process ID can be identified and then used to identify the process entry in the table in the Process List section to access more detail.

Figure 14-7 Resource Charts -Top EnterpriseOne Processes

Description of Figure 14-7 follows

Next on this page is a table of all Enterprise Server processes. Six columns have been added to this table that can be sorted on. This is the Process List section:

Figure 14-8 The Process List section.

Description of Figure 14-8 follows

The columns in the Process List are:

FieldDescription
Process NameThe name of the kernel process. The name indicates which kernel definition the kernel belongs to.
Process TypeThe description of the Enterprise Server process type.
Process IDThe operating system assigned process identifier for the kernel process.
Process StatusThe current state of the processes. May be RUNNING, STOPPED, or ZOMBIE.
JDE Log File SizeThe size of the error log file commonly referred to as jde.log for the enterprise server process. The size is specified in bytes.
Debug Log SizeThe size of the debug log file commonly referred to as jdedebug.log for the enterprise server process. The size is specified in bytes.
Connected UsersThe number of users that are currently connected to this kernel. This is applicable to security and callobject kernels only; other kernels do not maintain persistent connections with a particular user.
Total RequestsThe total number of JDENET messages that have been processed by the process.
Outstanding RequestsThe number of JDENET messages 9requests) that are queued up for the kernel process.
Memory (MB)* (applies to all E1 processes)The virtual memory usage in megabytes for the process. An increase in this value over time could indicate a leak that needs to be analyzed.
CPU %* (applies to all E1 processes)The amount of %CPU consumed by EnterpriseOne server process. The %CPU is reported directly for SUN and HP platform and is a calculated value in WINDOWS, DB2 for IBM i, AIX and LINUX platform. For example, on a 4-processor machine, a process using all of 1 CPU might be reported as using 25% or 100%.
Threads* (applies to all E1 processes)The number of OS threads stared in the EnterpriseOne server process including any Java threads if the process loads a JDEJVM.
JDE Caches* (does not apply to jdenet_n processes)The cache count for the process. This is the total number of JDE Caches in the EnterpriseOne server process which are opened by calling jdeCacheInit API. These caches are generally created by EnterpriseOne Business Functions. They are necessary for Business Functions to do their work. But an increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call jdeCacheTerminate API in business function code to fix the JDECache leak.
Total Open JDB Transactions* (does not apply to jdenet_n processes)The total number of open JDB transactions which includes both AUTO and MANUAL transaction. This resource is opened by calling JDB_InitUser API which is either called with JDEDB_COMMIT_AUTO or JDEDEB_COMMIT_MANUAL. An increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call JDB_FreeUser API in business function code to fix the JDB Transactions leak.
Manual Open JDB Transactions* (does not apply to jdenet_n processes)The number of MANUAL open JDB transactions are opened by calling JDB_InitUser API with JDEDEB_COMMIT_MANUAL. The number of manual open JDB transactions is directly linked with manual-commit database connections. This number should be zero in a normal environment. If this number is growing then it may result in database connection leaks and may cause the enterprise database to reach the maximum number of connections which will bring the entire EnterpriseOne environment (enterprise server and JAS servers) to a halt and consequently no EnterpriseOne user can get their work done. The application developer should call JDB_FreeUser API in business function code to fix the JDB Transactions leak.
Database Connections**The total number of open Database Connections includes AUTOcommit, Select For Update (SFU) and MANUAL-commit connections. An increase in this value over time could indicate a leak that needs to be analyzed. The AUTO and SFU connections have a small maximum limit whereas the MANUAL commit connections have no limit and can grow really high and will eventually hit the maximum global connections available in the database server. The manual commit open Database Connections are tied with the number of open manual commit jdb transactions. The next step should be to capture Memory Diagnostics or All Diagnostics from the server manager process detail page. The JDB transactions for different user sessions logged in the process should be reviewed and all of the open manual JDB transactions should be reviewed for a suspect where the apps BSFN code or tools code has called JDB_InitUser with MANUAL COMMIT MODE but has not called the JDB_FreeUser. The JDB transactions has the file name, line number and function name which should help the developer to locate the code faster and review if the specific code does not call JDB_FreeUser at all or does not call when the code returns with an error or exception path.
JDE Cache Records**This is the total number of JDE Cache Records in the EnterpriseOne server process for the specific user which is created by calling the jdeCacheAdd API, for example. These cache records are generally created by EnterpriseOne Business Functions. They are necessary for Business Functions to do their work. But an increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call the jdeCacheDelete (to delete cache records) or jdeCacheTerminate (to remove the entire cache) API in business function code to fix the JDE Cache Record leak.


Note:

The items with an * have been added in the 8.98.2.0 release.

The items with an ** are new in the 8.98.3.0 release.


All of the columns in the table are sortable. To sort rows in the table based on a particular column, simply click the column header. Clicking the column header again will sort the rows in the table in the reverse order. Using the sort capability, the administrator can identify EnterpriseOne Server processes that are using an "abnormal" amount of memory, CPU, JDE caches, or open JDB transactions (manual-commit OR total).

If there is a process that the administrator wants to analyze in more detail, they should click on the link for the process (in the "Process Name" column) to be taken to the Individual Process page.

14.7.2.3 Evaluate Individual Processes

The individual process pages are used to evaluate user-level data to drill down further in order to diagnose and isolate issues.

These are the navigation steps to access the individual enterprise server process page:

  • Select the enterprise server instance in server manager.

  • You should see the <EnterpriseOne Enterprise Server> instance.

  • Make sure that the server is up and running.

  • Go to the <Runtime Metrics> section.

  • Click on the <Process Detail> link.

  • You should see the <Enterprise server Processes> page.

  • Select the link for specific process under the <Process Name> column.

  • This will present you the <ProcessID> page.

The individual process page has the following sections:

  • General Information (modified).

  • Resource Charts (New).

  • Connected Users (modified).

  • Diagnostics and Recycling (New).

  • Logging and Configurations (not modified).

  • Thread Details (not modified).

General Information Page

The enterprise server will have an individual process page for all E1 processes. There are several new data items as displayed in the graphic and table below.

The information is collected every 20 seconds. However, new data is presented only when the screen is refreshed.

The individual process page begins with a General Information section. The relevant information for the process selected is presented.

Figure 14-9 General Information section

Description of Figure 14-9 follows

The items in the General Information section are:

FieldDescription
Process NameThe name of the kernel process. The name indicates which kernel definition the kernel belongs to.
Process TypeThe description of the Enterprise Server process type.
Kernel RangeThe kernel definition index. The Enterprise Server is composed of kernels that process messages from other servers and clients. There are more than thirty different types of kernels. The range index indicates which kernel group this kernel belongs to.
Process IDThe operating system assigned process identifier for the kernel process.
Process Index In Shared MemoryAn internal identifier used to locate the process's position in the shared memory resources that track kernel and network processes.
Start TimeThe time the process was created.
Last Message TimeThe last time the kernel performed any activity such as processing incoming JDENET messages.
Messages ReceivedThe total number of messages (requests) that have been processed by the kernel process.
Outstanding RequestsThe number or requests that are queued and are waiting to be processed by the kernel process.
Parent Process IDThe operating system assigned process identifier of the parent process.
IBM i Job NumberThe job number of the process, valid on the IBM i platform only.
Process User ID (OS)The operating system user id under which the process is running.
OS Group IDThe group identifier of the os user running the process; valid only on unix based platforms.
OS UsernameThe operating system user name under which the process is running.
OS StatusThe status of the process as reported by the operating system:

0 = Sleeping

1 = Running

2 = Stopped

3 = Zombie

4 = Other

Memory (MB)* (applies to all E1 processes)The virtual memory usage in megabytes for the process. An increase in this value over time could indicate a leak that needs to be analyzed.
CPU %* (applies to all E1 processes)The amount of %CPU consumed by EnterpriseOne server process. The %CPU is reported directly for SUN and HP platform and is a calculated value in WINDOWS, DB2 for IBM i, AIX and LINUX platform. For example, on a 4-processor machine, a process using all of 1 CPU might be reported as using 25% or 100%.
Threads* (applies to all E1 processes)The number of OS threads stared in the EnterpriseOne server process including any Java threads if the process loads a JDEJVM.
JDE Caches* (does not apply to jdenet_n processes)The cache count for the process. This is the total number of JDE Caches in the EnterpriseOne server process which are opened by calling jdeCacheInit API. These caches are generally created by EnterpriseOne Business Functions. They are necessary for Business Functions to do their work. But an increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call jdeCacheTerminate API in business function code to fix the JDECache leak.
Total Open JDB Transactions* (does not apply to jdenet_n processes)The total number of open JDB transactions which includes both AUTO and MANUAL transaction. This resource is opened by calling JDB_InitUser API which is either called with JDEDB_COMMIT_AUTO or JDEDEB_COMMIT_MANUAL. An increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call JDB_FreeUser API in business function code to fix the JDB Transactions leak.
Manual Open JDB Transactions* (does not apply to jdenet_n processes)The number of MANUAL open JDB transactions are opened by calling JDB_InitUser API with JDEDEB_COMMIT_MANUAL. The number of manual open JDB transactions is directly linked with manual-commit database connections. This number should be zero in a normal environment. If this number is growing then it may result in database connection leaks and may cause the enterprise database to reach the maximum number of connections which will bring the entire EnterpriseOne environment (enterprise server and JAS servers) to a halt and consequently no EnterpriseOne user can get their work done. The application developer should call JDB_FreeUser API in business function code to fix the JDB Transactions leak.
Data Pointers* (does not apply to jdenet_n processes)This reports the number of data pointer slots out of 1000 slots which are used by the current EnterpriseOne server job. The business function code calls jdeStoreDataPtr API to allocate a data pointer slot. The slot index starts at 1001 and goes till a maximum of 2000 for any enterprise server process. The data pointer leak should be fixed by the application developer in the business functions by calling jdeRemoveDataPtr API other wise they will eventually receive the hard error where the process will no not create any new data pointers.
Tables/Views* (does not apply to jdenet_n processes)This report the number of JDB Table handles or JDB View handles opened in the EnterpriseOne server job. This resource is opened by calling JDB_OpenTable and JDB_OpenView API. The application developer should call JDB_CloseTable API to fix the table and view handle leaks. An increase in this value over time could indicate a leak that needs to be analyzed.
JDB Table Caches* (does not apply to jdenet_n processes)This reports the number of JDB Table records cached in the EnterpriseOne server manager. The tables' records are cached when the table is registered in F98613 table using P98613 application or the application BSFN code called JDB_AddTableToCache API to cache the table records. If you are seeing lot of records cached then you might have a high memory usage issue in the EnterpriseOne server job. You should review the F98613 table and make sure you do not have any table which is added for caching by mistake. Also you should review if you have any new BSFN code which is calling the JDB_AddTableToCache API.
Database Connections**The total number of open Database Connections includes AUTOcommit, Select For Update (SFU) and MANUAL-commit connections. An increase in this value over time could indicate a leak that needs to be analyzed. The AUTO and SFU connections have a small maximum limit whereas the MANUAL commit connections have no limit and can grow really high and will eventually hit the maximum global connections available in the database server. The manual commit open Database Connections are tied with the number of open manual commit jdb transactions. The next step should be to capture Memory Diagnostics or All Diagnostics from the server manager process detail page. The JDB transactions for different user sessions logged in the process should be reviewed and all of the open manual JDB transactions should be reviewed for a suspect where the apps BSFN code or tools code has called JDB_InitUser with MANUAL COMMIT MODE but has not called the JDB_FreeUser. The JDB transactions has the file name, line number and function name which should help the developer to locate the code faster and review if the specific code does not call JDB_FreeUser at all or does not call when the code returns with an error or exception path.
JDE Cache Records**This is the total number of JDE Cache Records in the EnterpriseOne server process for the specific user which is created by calling the jdeCacheAdd API, for example. These cache records are generally created by EnterpriseOne Business Functions. They are necessary for Business Functions to do their work. But an increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call the jdeCacheDelete (to delete cache records) or jdeCacheTerminate (to remove the entire cache) API in business function code to fix the JDE Cache Record leak.


Note:

The items with an * have been added in the 8.98.2.0 release.

The items with an ** are new in the 8.98.3.0 release.


Resource Charts

The enterprise server process ID page has a new section called Resource Charts. The charts are available for all actively running EnterpriseOne server processes. The time-frame of the data collected will be indicated along the x-axis of the graphs. How much data is represented will depend on when the Server Manager Console services were started and the collection intervals for the monitors that were specified (refer to Configuration Setup).

Figure 14-10 Resource Charts –Process ID: 21037.

Description of Figure 14-10 follows

The following two enterprise resource charts are applicable for all EnterpriseOne server process including JDENET_N, JDENET_K, RUNBATCH, PORTTEST etc.

ChartDescription
Eone Process: Process ID (CPU Usage - Percent)This chart reports the percent CPU used by this EnterpriseOne server process. If you see that a certain EnterpriseOne process is taking a lot of CPU over time like a CallObject kernel, you should then take CPU diagnostics to see if there is any looping pattern in a specific business function. It is normal for a RUNBATCH process to a take an entire CPU, so you should not bother about RUNBATCH unless the RUNBATCH process takes more than the normal execution time. If the percent CPU is low for a RUNBATCH process, it might be a hung RUNBATCH process and you should take CPU diagnostics to review if any specific business function is hung.
Eone Process: Process ID (Memory - MB)This chart reports the memory used in megabytes by this EnterpriseOne server process. If you see an increasing trend in memory usage, then the process might be leaking memory.

The following two enterprise resource charts are applicable to only non-jdenet_n EnterpriseOne server processes like JDENET_K, RUNBATCH, PORTTEST etc.

ChartDescription
Eone Process: Process ID (Open JDB Transactions)This chart reports the number of open JDB Transactions in the EnterpriseOne server process. If you see increasing number of open JDB Transactions then the process might be running business function code which is leaking JDB Transactions.
Eone Process: Process ID (JDE Cache Count)This chart reports the number of open JDE Cache handles in the EnterpriseOne server process. If you see increasing number of open JDE Cache handles then the process might be running business function code which is leaking JDE Cache handles.

Connected Users Section

The Connected Users section provides data for any users associated with the kernel process.

Figure 14-11 Connected Users section

Description of Figure 14-11 follows

The following three attributes are the existing attributes of user session for both CallObject kernel and Security kernel:

FieldDescription
User NameThe name of the EnterpriseOne user who is signed on to the kernel process.
Originating MachineThe machine name from where the user signed in. For web client user, this will be the JAS server name.
SignOn TimeThe time EnterpriseOne user signed on to this process.

The connected user section has been modified to have eight new attributes only for CallObject kernel process:

FieldDescription
EnvironmentThis reports environment of the logged in User in the CallObject kernel. This information will be useful to debug an issue which is specific to a path code or is specific to an environment.
Last Active TimeLast time the user performed any work on the CallObject kernel process. This will determine the staleness of user session and is a good metric when an EnterpriseOne user is logged for day probably from a third party integration system using EnterpriseOne Java connector, COM connector.
JDE CachesThis reports the number of JDE Caches opened by the specific user. If this number is high for this user compared to other users, then you should collect the memory diagnostics and review the JDE Caches opened by this user. The application developer should fix the business function code to free the JDECache leaks.
JDE Cache Records**This is the total number of JDE Cache Records in the EnterpriseOne server process for the specific user which is created by calling the jdeCacheAdd API, for example. These cache records are generally created by EnterpriseOne Business Functions. They are necessary for Business Functions to do their work. But an increase in this value over time could indicate a leak that needs to be analyzed. The application developer should call the jdeCacheDelete (to delete cache records) or jdeCacheTerminate (to remove the entire cache) API in business function code to fix the JDE Cache Record leak.
Total Open JDB TransactionsThis reports the total number of open JDB Transactions for the specific user. If this number is high for this user compared to other users, then you should collect the memory diagnostics and review the JDB Transactionsopened by this user. The application developer should fix the business function code to free the JDB Transaction leaks.
Manual Open JDB TransactionsThis reports the total number of open Manual-Commit JDB Transactions for the specific user. If this number is high for this user compared to other users, then you should collect the memory diagnostics and review the JDB Transactions opened by this user. The application developer should fix the business function code to free the JDB Transaction leaks.
Data PointersThis reports the number of Data Pointers used by the specific user. If this number is high for this user compared to other users, then you should collect the memory diagnostics and review the Data Pointers opened by this user. The application developer should fix the business function code to free the Data Pointer leaks.
Tables/ViewsThis reports the number of JDB Tables or JDB Views opened by the specific user. If this number is high for this user compared to other users, then you should collect the memory diagnostics and review the JDB Tables or JDB Views opened by this user. The application developer should fix the business function code to free the JDB Tables or JDB Views leaks.

14.7.2.4 Get Memory / CPU Diagnostics

The enterprise server process ID page is used to evaluate on-demand diagnostics and has a new section called Diagnostics and Recycling.

Figure 14-12 Diagnostics section

Description of Figure 14-12 follows

The Diagnostics section is only applicable to CallObject Kernels, RUNBATCHprocesses, and Subsystem UBE's.

The diagnostics section allows the collection of the following four types of diagnostics:

  1. Memory diagnostics - Once the User clicks this, the system will write the in-memory EnterpriseOne objects diagnostics data to the EnterpriseOne server process JDEDEBUG log. This should be used to debug EnterpriseOne Object leaks causing EnterpriseOne process memory growth. The diagnostics data has the following structure.

    • Process OS data

      1. Memory (megabytes)

      2. CPU (percent)

      3. Threads (number of threads)

    • Memory data

    1. Process level data shared by all user sessions.

      1. Environment data

      2. JDB Table Cache data

      3. Database Connection data

    2. User Sessions

      1. Open JDB Transactions

      2. Open Tables or Views

      3. Open JDECaches

      4. Open Data Pointers

  2. CPU Diagnostics - Once the User clicks this, the system will write the in-memory business function call stack(s) to the EnterpriseOne server process JDEDEBUG log (whether or not debug logging has been enabled). This should be used to debug hanging (low CPU) or looping (high CPU) EnterpriseOne processes. The following data will be displayed in the CPU diagnostics.

    • Process OS data

      1. Memory (megabytes)

      2. CPU (percent)

      3. Threads (number of threads)

    • CPU Diagnostics

      1. BSFN Call Stacks

        1. BSFN call stack for thread 1

        2. BSFN call stack for thread 2 (thread BSFN call stacks beyond the first thread are only applicable to CallObject Kernel processes)

        3. etc.

      2. OS Call Stacks

        1. OS call stack for thread 1

        2. OS call stack for thread 2 (thread OS call stacks beyond the first thread are only applicable to CallObject Kernel processes)

        3. etc.

  3. All Diagnostics - Once the user clicks this, the system will generate a combination of Memory AND CPU diagnostics. The following data will be displayed in All diagnostics.

    • Process OS data

      1. Memory (megabytes)

      2. CPU (percent)

      3. Threads (number of threads)

    • Memory data

      1. Process level data shared by all user sessions.

        1. Environment data

        2. JDB Table Cache data

        3. Database connection data

      2. User Sessions

        Open JDB Transactions

        Open Tables of Views

        Open JDECaches

        Open Data Pointers

    • CPU Diagnostics

      1. BSFN Call Stacks

        1. BSFN call stack for thread 1

        2. BSFN call stack for thread 2 (thread BSFN call stacks beyond the first thread are only applicable to CallObject Kernel processes)

        3. etc.

      2. OS Call Stacks

        1. OS call stack for thread 1

        2. OS call stack for thread 2 (thread OS call stacks beyond the first thread are only applicable to CallObject Kernel processes)

        3. etc.

  4. JADE -

    • Start button will begin collection of memory usage

      JADE can be set up statically in jde.ini. The functionality is similar to BMD with levels 1, 2, and 3 available (see dvanced Profiling). The default setting is JADE level 2.

    • Stop button will dump current usage and then stop collection

    • Dump button will dump current usage and then stop collection

    • Parse JADE button will bring up the log file after dumping or stopping JADE diagnostics.

After the diagnostics have been collected for Memory Diagnostics, CPU Diagnostics, or All Diagnostics, then click on the click here to view the debug log file link to view the diagnostics.

Here is a sample All Diagnostics:

Apr 5 16:31:22.423254 jdb_utl1.c13553 - 5504/5 WRK:JDE_000BDB60_P4310 User initiated process dump
(CPU Diagnostics):
********** Begin OS Data **********
Memory Usage = 257MB
CPU Usage = 1%
Number of Threads = 7
********** End OS Data **********
********** Begin Detailed CPU Data **********
********** Begin BSFN Call Stacks **********
CALLSTACK,5,WRK:JDE_000BDB60_P4310,JDE,*ALL,JPD812,NONE,P4310,denicsn5,ZJDE0001
libCDIST.so/UNKNOWN/F4311EndDoc
********** End BSFN Call Stacks **********
********** Begin OS Call Stacks **********
5504: jdenet_k 6014
----------------- lwp# 2 / thread# 2 --------------------
fc340408 lwp_park (0, 0, 0)
fc33a49c cond_wait_queue (24e8d0, bd298, 0, 0, 0, 0) + 28
fc33aa1c cond_wait (24e8d0, bd298, 0, 0, 20, 0) + 10
fc33aa58 pthread_cond_wait (24e8d0, bd298, 0, 0, 20, 1) + 8
fe0f3db8 psthread_cond_wait (24e6c8, bd088, 1, 1, 1, fe10d810) + 274
fe352da4 ps_blocking_queue_dequeue (24e4a0, f637ff24, bd088, 0, fe10d7d8, 20) + 224
fe354214 psthread_pool_worker_function (24e4a0, 0, d5cd4, d5cc8, fe10d7b8, fe367de8) + 4a8
fe0f48fc threadFunctionWrapper (c3548, 204, 0, c4, c354b, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)
----------------- lwp# 5 / thread# 3 --------------------
fc341850 waitid (0, 15c9, f58e6ab0, 3)
fc334758 waitpid (15c9, f58e6c04, 0, 0, f58e6c5c, faa82740) + 60
fc327eec system (1b3360, fc36ff74, 20000, 1, fc368288, f58e6c5c) + 2ec
fd9e6350 jdeSystem (f58e6db8, 6a, 0, 1b3360, 4b, f58e6db8) + 50
ff30f6bc logCallStackOnUnix (1580, 0, f58e7694, f58e74b1, 24fc, 2500) + 130
ff30fb0c allocCallStackUnix (0, f58e81e4, ff316d56, 0, 2518, 2400) + 88
ff30fd7c jdeAllocCallStack (1580, f58e81e4, f58e83ec, 8c00, 50e598, f58e83ec) + 20
fed27dd8 logProcessDumpData (2, 0, 0, ffffffff, 810060, 8c00) + e04
f6571310 doQueryDiagnostics (238, 810060, 0, f74bb544, 234, 0) + 3d8
f656eaf0 performRequestInternal (82f3e0, 1, 0, ae6f88, ff0ed1c0, 0) + 51c
f656e46c dballPerformRequest (82f3e0, 8303d0, 0, 8303d0, 8303d3, 3) + 3e4
feb937a4 JDB_DBPerformRequest (aeaad8, 82f3e0, ae6f88, 18a268, 18a340, 18a268) + e4
fe13a894 TM_DBPerformRequest (65be18, 0, ae6f88, 8ab250, 7d70c0, 5) + 41c
fec083fc InsertTable (8ab250, 7d70c0, 0, ae6f88, f58eb1f0, 0) + 392c
fec0bf74 JDB_InsertTable (8ab250, f32d3854, 0, f58ed714, 0, ff338dfc) + 208
f214177c IXT4311Z1_EndDocWriteNewOrderDetail_2 (f32d3818, 7d0868, 675720, a53750, f58f4c28,
f58f6bfc) + dd4
f213efbc IXT4311Z1_EndDocProcessCurrentDetailLine (3e5d48, 7d0868, 675720, f58f770c, a53750,
f58f62e0) + 1338
f2139694 F4311EndDoc (7d0868, 675720, a53750, 31, 0, 1) + 16d4
fefb88f8 jdeCallObjectV2 (1b8df8, 7d0868, 506be0, 1, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (1b8df8, 0, 7d0868, 0, fe963658, f58feea4) + 38
fe79f4dc JDEK_ProcessCallRequest (f58fef58, 6e1018, bdb60, 3e5d48, 7d0868, 20) + 3d30
JD Edwards EnterpriseOne Tools 8.98 Update 3
Kernel Resource Management
Copyright © 2010, Oracle. All rights reserved 22
fe79a5e8 JDEK_StartCallRequest (f58ffc40, 6e1018, 0, 3e5d48, bdb60, 0) + f74
fe77db24 runBusinessFunction (94ef0, 0, 0, 7174, ff338dff, fe93c6ec) + 328
fe77dea8 runCallObjectJob (94ef0, 0, 94f00, 94f00, 94f00, 20) + 5c
fe354394 psthread_pool_worker_function (0, 0, 74, d5cc8, fe10d7b8, fe367de8) + 628
fe0f48fc threadFunctionWrapper (c34c8, 204, 0, c4, c34cb, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)
********** End OS Call Stacks **********
********** End Detailed CPU Data **********
Apr 5 16:32:06.733801 jdb_utl1.c13485 - 5504/3 WRK:Free Remote Env User initiated process dump
(Memory Diagnostics):
********** Begin OS Data **********
Memory Usage = 264MB
CPU Usage = 1%
Number of Threads = 7
********** End OS Data **********
********** Begin Detailed Memory Data **********
********** Begin Process Data **********
ENVIRONMENT,Ptr=0026fbd8,Env=JPD812,PathCode=PD812
JDBTABLECACHE,Ptr=005a5250,Name=JDB_BV_1270506634JPD812F4009,#Records=1
JDBTABLECACHE,Ptr=005ae618,Name=JDB_BV_1270506634JPD812F40203,#Records=2
JDBTABLECACHE,Ptr=005b8fb0,Name=JDB_BV_1270506634JPD812F40205,#Records=1
JDBTABLECACHE,Ptr=005eb458,Name=JDB_BV_1270506634JPD812F41001,#Records=2
JDBTABLECACHE,Ptr=00184f10,Name=JDB_BV_1270506637JPD812F41002,#Records=8
JDBTABLECACHE,Ptr=00647ae8,Name=JDB_BV_1270506637JPD812F7306,#Records=1
JDBTABLECACHE,Ptr=0065c138,Name=JDB_BV_1270506637JPD812F99410,#Records=2
JDBTABLECACHE,Ptr=0067c3a0,Name=JDB_BV_1270506637JPD812F0004,#Records=25
JDBTABLECACHE,Ptr=00685f60,Name=JDB_BV_1270506637JPD812F0005,#Records=27
JDBTABLECACHE,Ptr=0068b8d0,Name=JDB_BV_1270506637JPD812F0006,#Records=1
JDBTABLECACHE,Ptr=006cf0f0,Name=JDB_BV_1270506637JPD812F0008,#Records=1
JDBTABLECACHE,Ptr=006d7bc8,Name=JDB_BV_1270506637JPD812F0010,#Records=2
JDBTABLECACHE,Ptr=003c1a38,Name=JDB_BV_1270506638JPD812F1609,#Records=1
OCIDBCONN,Ptr=00426850,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=AutoInUse,Comm
itMode=A,RefCount=39
OCIDBCONN,Ptr=006e2780,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Co
mmitMode=M,RefCount=1
OCIDBCONN,Ptr=0052fc50,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualAvailable,C
ommitMode=M,RefCount=0
OCIDBCONN,Ptr=00871ec0,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Co
mmitMode=M,RefCount=1
OCIDBCONN,Ptr=00abf430,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Com
mitMode=M,RefCount=1
********** End Process Data **********
********** Begin Session Data **********
SESSION,Ptr=000bdb60,User=JDE,Env=JPD812,Role=*ALL,Machine=denicsn5,SignOnTime= 4/ 5/2010
16:30:38,LastActiveTime= 4/ 5/2010 16:32:06
OPENJDBTRANSACTION,Ptr=001819c0,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File
=jdb_ctl.c,Function=JDB_LoadEnv,Line=5829
TABLE,Ptr=0048d0a0,Name=F0013,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0013Ro
wUsingCurrencyCode,Line=73
TABLE,Ptr=00aa41f0,Name=F0010,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0010Ro
wUsingCompanyNumber,Line=246
OPENJDBTRANSACTION,Ptr=007e88a0,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File
=jdb_ctl.c,Function=CallStartupBusinessFunction,Line=8551
JDECACHE,Ptr=0071d1e0,Name=1XT4311Z1A,#Cursors=1,#Records=0,#Indices=1,#References=1,File=x
t4311z1.c,Function=F4311InitializeCaching,Line=23018
JDECACHE,Ptr=00743aa8,Name=1XT4311Z1B,#Cursors=1,#Records=0,#Indices=2,#References=1,File=x
t4311z1.c,Function=F4311InitializeCaching,Line=23027
JDECACHE,Ptr=008d28c0,Name=1XT4311Z1C,#Cursors=1,#Records=0,#Indices=1,#References=4,File=x
t4311z1.c,Function=IXT4311Z1_InitiateOrderCache,Line=5758
JDECACHE,Ptr=009426b0,Name=1B4302570Cache,#Cursors=1,#Records=0,#Indices=1,#References=2,F
ile=b4302570.c,Function=ApprovalsFieldConstants,Line=158
JDECACHE,Ptr=006801f0,Name=1F45UI73,#Cursors=1,#Records=0,#Indices=2,#References=4,File=b450
0200.c,Function=F4573GetNextFreeGood,Line=100
JD Edwards EnterpriseOne Tools 8.98 Update 3
Kernel Resource Management
Copyright © 2010, Oracle. All rights reserved 23
JDECACHE,Ptr=009399d8,Name=1B3201470213088,#Cursors=1,#Records=0,#Indices=7,#References=3,
File=b3201470.c,Function=I3201470_CreateInitCache,Line=732
JDECACHE,Ptr=008c87d0,Name=1B3201470213090,#Cursors=1,#Records=0,#Indices=7,#References=3,
File=b3201470.c,Function=I3201470_CreateInitCache,Line=732
********** End Session Data **********
********** End Detailed Memory Data **********

Contextual Diagnostics

Please note that each of the memory objects listed in the Memory and All Diagnostics file will show the File, Function, and Line number for JDECACHE, TABLE/VIEW, OPENJDBTRANSACTION, and DATAPOINTER objects. For example:

JDECACHE,Ptr=0071d1e0,Name=1XT4311Z1A,#Cursors=1,#Records=0,#Indices=1,#References=1,File=x
t4311z1.c,Function=F4311InitializeCaching,Line=23018
TABLE,Ptr=01eb8a48,Name=F0013,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0013RowUsingCurrencyCode,Line=73
OPENJDBTRANSACTION,Ptr=02d05328,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File
=jdb_ctl.c,Function=JDB_LoadEnv,Line=5845

In order to get all of the added contextual information in 8.98.3.0 and higher releases on Windows Platform, please ensure that /Oy- is there under OptimizationFlags and /MAP is there under LinkFlags in [BSFN BUILD] section.

[BSFN BUILD]
OptimizationFlags=/FD /Gz /O2 /Zi /MD /W4 /EHs /Gy /Oy-
LinkFlags=/DLL /DEBUG /SUBSYSTEM:windows /FORCE:MULTIPLE
/FORCE:UNRESOLVED /INCREMENTAL:YES /VERBOSE /MAP /WARN:3

Note:

The columns with an * are new columns that have been added in the 8.98.3.0 release.

14.7.2.5 Corrective Actions

Cache or Recycling actions are available in the Corrective Actions section.

Clear Cache

The Clear Cache button is now available to clear internal tools caches for the process that has been selected. This should recuce the memory footprint of the process and may cause some performance impact while the caches are being rebuilt.

Recycle Kernel

You can now recycle an individual kernel which prevents a single process from impacting or bringing down the entire system. It also prevents new users from being associated with the kernel and possibly being impacted if the kernel zombies. This allows the system to gracefully shut down the kernel and reclaim resources.

There is a new button called Recycle Kernel that is used to begin recycling CallObject kernel processes on demand. The purpose of the recycling button is to allow administrators to gracefully shut down a process that appears to have problems.

Figure 14-13 Clear Cache and Recycle Kernel corrective actions

Surrounding text describes Figure 14-13 .

Previously, the only options for an administrator were to allow the process to continue running or to kill the process from the OS. If the process were allowed to continue, it could become attached to new user sessions, which may be detrimental to those sessions, and which may make the perceived problems within the kernel process even worse than what they might have been. On the other hand, if the process were killed manually, the applications that were currently running would be ungracefully stopped, which would prevent the applications from completing, and would force any open transactions to be rolled back.

The recycling option tries to avoid both of those issues. When a kernel process begins recycling, there will be no additional user sessions attached to it. But, the kernel is not stopped immediately, which allows the current users to complete their processing. When all users have completed their processing, then that kernel will be shut down. Before KRM, kernel recycling was only available based on JDE.INI settings. The CallObject kernels could be recycled at a scheduled time. With the new KRM "Recycle Kernel" button, a selected kernel process can begin recycling on demand. Because runbatch and subsystem processes cannot be recycled, the Recycle Kernel button is not available for these processes.

There are additional JDE.INI settings that can affect how the kernels are recycled. After the time to begin recycling has passed, the state of the kernel goes into a "pending recycling" state. While recycling is pending, the kernel accepts no new user sessions. When all existing user sessions have logged off the kernel will shut down. There is a JDE.INI setting that specifies the length of a period of inactivity, before each user session is considered inactive. When that is set, and there are only inactive user sessions, the kernel will also shut down. The default time for the inactivity period is six hours. Another JDE.INI setting is the length of time before a forced termination occurs. When that period expires, the kernel will shut down, even if there are active users at that time. The assumption is that those user sessions have some reason why they will never initiate their own session logoff. For instance, the user could be stuck in a deadlock, or the user could be stuck in a loop that it cannot exit. There could also be users that are intentionally never logged off (there are some use cases for this with Interop user sessions). The default time for the forced termination is twelve hours.

Within the context of the KRM Recycle Kernel button, those JDE.INI recycling parameters will apply, even if scheduled kernel recycling is not set. The beginning of the recycling period will be when the Recycle Kernel button is pressed.

14.7.2.6 Inline Corrective / Diagnostic Actions

Call Object or Runbatch Crash due to Memory Corruption

CallObject may go to a Zombie or Crashed state when it encounters a bad memory in the business function code. The same behavior is to be expected for a Runbatch process. This crash will produce an extra log file with .dmp.log as its extension. Viewing the .dmp file for a crashed CallObject will show all the threads which were running at the time of the crash. On System-i enterprise server, there will not be any .dmp file. Instead the callstacks for all threads will be logged in jde.log.

The thread which encountered the bad memory and crashed will be highlighted in "red" color and often times will serve as a good starting point for investigation of the bug.

Figure 14-14 Log .dmp files highlighted in red.

Surrounding text describes Figure 14-14 .

When analyzing the .dmp file, begin by looking for the thread which contains the jdeLogCallStack function, as this is the thread which initiated the crash.

This thread may not always be the root cause of the problem, as it could be a victim of another thread which caused memory corruption but did not crash itself. Crashes of this kind will most likely have a message from the given Operating System in their corresponding jde.logs such as "ACCESS VIOLATION".

This is a dmp.log for a crash due to Memory Corruption:

*****************************************
Tue Mar 30 17:27:28 MDT 2010
*****************************************
Generating call stacks for PID 28774
*****************************************
28774: jdenet_k 6014
----------------- lwp# 1 / thread# 1 --------------------
fc342d74 msgsys (2, 34000023, 13f2d58, 200c, 0, 0)
fc333b84 msgrcv (34000023, 13f2d58, 200c, 0, 0, 0) + 68
ff23e7b4 receiveMessage (5, 34000023, 200c, 0, 0, 0) + 1dc
ff21d73c ipcGetQueueEntry (92d60, ffbfc0c4, ffbfc0c8, ffbfe0d4, 5, 13f2d58) + 334
ff139a24 getExternalQueueEntry (0, 5, 1, ffbff28c, fb3a00ab, ff1d1b58) + 35c
ff195c60 getKernelQueueEntry (0, 8fd68, ffbff28c, 92d60, 8fd54, 8fd58) + 49c
ff19606c processKernelQueue (ffbff28c, fb3a0000, 0, 0, 0, ff1cd2c8) + 300
ff16e250 JDENET_RunKernel (20, 8fd68, 1, ff1cd2c8, 0, 5) + 428
00011cc0 main (0, 0, 4c, 0, 2218c, 0) + 6bc
000111d4 _start (0, 0, 0, 0, 0, 0) + 108
----------------- lwp# 2 / thread# 2 --------------------
fc340408 lwp_park (0, 0, 0)
f6667034 kpuexec (f8e9d800, f1aa34, f14ce0, 0, 0, 18814c) + 2b8
f65c5e50 OCIStmtExecute (188118, f1aa34, 0, 0, 0, 0) + 2c
f657e348 BFOCIStmtExecute (188118, f1aa34, f14ce0, 0, 0, 0) + 28
f656eacc performRequestInternal (116d930, 0, 116d938, 116ca98, ff0ed1c0, 0) + 4f8
f656e46c dballPerformRequest (116d930, 116e920, 0, 116e920, 116e923, 1000) + 3e4
feb937a4 JDB_DBPerformRequest (93bc18, 116d930, 116ca98, 181240, 181318, 181240) + e4
fe13a894 TM_DBPerformRequest (17d050, 1, 116ca98, a6f318, 1b3ab8, 5) + 41c
feba75b4 SelectKeyed (a6f318, 17d050, f635eecc, 1, 1, 1) + 1ec8
febb3c00 FetchKeyed (0, 1, a7cb68, 116ca98, feddd4dc, 0) + 286c
febb114c JDB_FetchKeyed (a6f318, 1, a7cb68, ff338dfc, f636128c, 0) + 214
ee688ab4 EditSystemExistenceF99410 (a7cb68, 689800, f6367910, 3, ff976770, 110c6e0) + 30c
fefb88f8 jdeCallObjectV2 (f1f3d5ec, d38030, a73c40, 3, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1f3d5ec, 0, d38030, 0, 0, 0) + 38
f0b6b804 I4500250_GetGrowerSystemConstant (d38030, a9be40, f6367a80, f6367912, ff990790, 0) + e8
f0b65e50 CalculatePurchasePrice (d38030, a9be40, f6370b3c, f6367a84, ff98bfa8, f6370bda) + 220
fefb88f8 jdeCallObjectV2 (f1ff38fc, d38030, e1af50, 2, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1ff38fc, 0, d38030, 0, 0, 0) + 38
f0f500cc IXTF4311Z1_CalcPurchasePrice (a9be40, f63765ce, 1243948, 1243688, f6376ce8, f63756f0) +
15d8
f0f39fd0 IXT4311Z1_F4311EditLineInternalFunctions (d38030, a9be40, 1243688, f6376f38, 0, f63756f0) +
23b8
fefb88f8 jdeCallObjectV2 (6f7a20, d38030, d28008, 1, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (6f7a20, 0, d38030, 0, fe963658, f637eea4) + 38
fe79f4dc JDEK_ProcessCallRequest (f637ef58, f076b0, 7d9d08, a80f90, d38030, 20) + 3d30
fe79a5e8 JDEK_StartCallRequest (f637fc40, f076b0, 0, a80f90, 7d9d08, 0) + f74
fe77db24 runBusinessFunction (c44eb8, 0, 0, 7174, ff338dff, fe93c6ec) + 328
fe77dea8 runCallObjectJob (c44eb8, 0, c44ec8, c44ec8, c44ec8, 20) + 5c
fe354394 psthread_pool_worker_function (0, 0, 74, d5cc8, fe10d7b8, fe367de8) + 628
fe0f48fc threadFunctionWrapper (c3548, 204, 0, c4, c354b, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)
----------------- lwp# 3 / thread# 3 --------------------
fc340408 lwp_park (0, 0, 0)
fc33a49c cond_wait_queue (2c2350, 2fc040, 0, 0, 0, 0) + 28
fc33aa1c cond_wait (2c2350, 2fc040, 0, 0, 20, 0) + 10
fc33aa58 pthread_cond_wait (2c2350, 2fc040, 0, 0, 20, 1) + 8
fe0f3db8 psthread_cond_wait (2c2148, 2fbe30, 1, 1, 1, fe10d810) + 274
fe352da4 ps_blocking_queue_dequeue (2c1f20, f5ffff24, 2fbe30, 0, fe10d7d8, 20) + 224
fe354214 psthread_pool_worker_function (2c1f20, 0, d5cd4, d5cc8, fe10d7b8, fe367de8) + 4a8
fe0f48fc threadFunctionWrapper (c3588, 204, 0, c4, c358b, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)
----------------- lwp# 4 / thread# 4 --------------------
fc340408 lwp_park (0, 0, 0)
f6667034 kpuexec (f8e9d800, f84e4c, f4e190, 0, 0, 18814c) + 2b8
f65c5e50 OCIStmtExecute (188118, f84e4c, 0, 0, 0, 0) + 2c
f657e348 BFOCIStmtExecute (188118, f84e4c, f4e190, 0, 0, 0) + 28
f656eacc performRequestInternal (11c2750, 0, 11c2758, 11c0b10, ff0ed1c0, 0) + 4f8
f656e46c dballPerformRequest (11c2750, 11c3740, 0, 11c3740, 11c3743, 1000) + 3e4
feb937a4 JDB_DBPerformRequest (a6fa80, 11c2750, 11c0b10, 181240, 181318, 181240) + e4
fe13a894 TM_DBPerformRequest (3511d8, 1, 11c0b10, c93e90, 1b3ab8, 5) + 41c
feba75b4 SelectKeyed (c93e90, 3511d8, f58deecc, 1, 1, 1) + 1ec8
febb3c00 FetchKeyed (0, 1, a7ce68, 11c0b10, feddd4dc, 0) + 286c
febb114c JDB_FetchKeyed (c93e90, 1, a7ce68, ff338dfc, f58e128c, 0) + 214
ee688ab4 EditSystemExistenceF99410 (a7ce68, 689800, f58e7910, 3, ff976770, 500e90) + 30c
fefb88f8 jdeCallObjectV2 (f1f3d5ec, 112a060, a73e48, 3, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1f3d5ec, 0, 112a060, 0, 0, 0) + 38
f0b6b804 I4500250_GetGrowerSystemConstant (112a060, 7aa228, f58e7a80, f58e7912, ff990790, 0) + e8
f0b65e50 CalculatePurchasePrice (112a060, 7aa228, f58f0b3c, f58e7a84, ff98bfa8, f58f0bda) + 220
fefb88f8 jdeCallObjectV2 (f1ff38fc, 112a060, f07708, 2, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1ff38fc, 0, 112a060, 0, 0, 0) + 38
f0f500cc IXTF4311Z1_CalcPurchasePrice (7aa228, f58f65ce, a9a898, a9a5d8, f58f6ce8, f58f56f0) + 15d8
f0f39fd0 IXT4311Z1_F4311EditLineInternalFunctions (112a060, 7aa228, a9a5d8, f58f6f38, 0, f58f56f0) + 23b8
fefb88f8 jdeCallObjectV2 (b81968, 112a060, 928860, 1, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (b81968, 0, 112a060, 0, fe963658, f58feea4) + 38
fe79f4dc JDEK_ProcessCallRequest (f58fef58, 13e3c58, 8a7968, 7471c8, 112a060, 20) + 3d30
fe79a5e8 JDEK_StartCallRequest (f58ffc40, 13e3c58, 0, 7471c8, 8a7968, 0) + f74
fe77db24 runBusinessFunction (1116ff8, 0, 0, 7174, ff338dff, fe93c6ec) + 328
fe77dea8 runCallObjectJob (1116ff8, 0, 1117008, 1117008, 1117008, 20) + 5c
fe354394 psthread_pool_worker_function (0, 0, 74, d5cc8, fe10d7b8, fe367de8) + 628
fe0f48fc threadFunctionWrapper (c35c8, 204, 0, c4, c35cb, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)
----------------- lwp# 5 / thread# 5 --------------------
fc341850 waitid (0, 7170, f555c420, 3)
fc334758 waitpid (7170, f555c564, 0, 0, 0, f7fe0c00) + 60
ff30f39c logCallStackOnUnixSigSafe (0, ff316748, f555c581, 24dc, 7170, ff3351f4) + b8
ff310038 jdeLogCallStack (7066, ff338e64, 2400, ff338dfc, 0, ff3351f4) + 1e8  Start Here
ff1470ec krnlSignalHandler (b, 1000, 7066, ff1d217c, 3000, 1154) + 4e0
fc340494 __sighndlr (b, 0, f555ca38, ff146c0c, 0, 1) + c
JD Edwards EnterpriseOne Tools 8.98 Update 3
Kernel Resource Management
Copyright © 2010, Oracle. All rights reserved 27
fc33558c call_user_handler (b, 0, 0, 0, f7fe0c00, f555ca38) + 3b8
f66304ac kpuhhalp (f74bb544, 1774, 16c00, f73eb320, 8048, 16800) + 8ec
f708b174 ttcrbur (182c28, d6784, f662fbc0, 24, f753ac5c, d6898) + 1104
f708b6f8 ttcbur (182c28, d6784, d8b60, 24, 185, 1026) + fc
f6664740 kpuexCallback (182c28, d86e8, f753d1b8, d6784, 1, d8be8) + 1030
f69b36e8 ttcdrv (d86e8, 1894e8, d6784, 182c28, 0, ecb88) + 1da4
f6770b6c nioqwa (0, 189490, f69b1944, d86e8, d67ac, 0) + 40
f65e6f18 upirtrc (d6784, 5e, 0, 182c28, 1, 0) + 544
f66b6380 kpurcsc (188118, 0, 0, d86e8, d93bc, 0) + 6c
f6665c80 kpuexecv8 (188118, 5ad2f8, 5ad344, 17790, 0, f74bb544) + 1390
f66682c0 kpuexec (0, 5ad2f8, f85200, 0, 0, 1000) + 1544
f65c5e50 OCIStmtExecute (188118, 5ad2f8, 0, 0, 0, 0) + 2c
f657e348 BFOCIStmtExecute (188118, 5ad2f8, f85200, 0, 0, 0) + 28
f656eacc performRequestInternal (1257408, 0, 1257410, 11ce838, ff0ed1c0, 0) + 4f8
f656e46c dballPerformRequest (1257408, 12583f8, 0, 12583f8, 12583fb, 1000) + 3e4
feb937a4 JDB_DBPerformRequest (116ec18, 1257408, 11ce838, 181240, 181318, 181240) + e4
fe13a894 TM_DBPerformRequest (9e2d28, 1, 11ce838, f40f18, 4a7e48, 5) + 41c
feba75b4 SelectKeyed (f40f18, 9e2d28, f5564be4, 0, 1, 1) + 1ec8
feba3ed4 JDB_SelectKeyed (f40f18, 7, 0, a000, a118, feddd4dc) + 20c
fe1c969c RTK_CER_FIOSelect (f40f18, 7, 7, f5567620, af7a9c, 8) + ac
f0d5cab4 DetermineIfBlanketPOExists (928a28, c47588, f5571780, 0, f5571814, 24000) + 1934
fefb88f8 jdeCallObjectV2 (f1ff2c98, 928a28, 13fee98, 2, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1ff2c98, 0, 928a28, 0, 0, 0) + 38
f0f420c4 IXTF4311Z1_EditLineMultipleBlanketRelease (928a28, c47588, e5fc28, f5576f38, e5feb6,
f55756f0) + 7c0
f0f39be4 IXT4311Z1_F4311EditLineInternalFunctions (928a28, c47588, e5fc28, 53, 0, f55756f0) + 1fcc
fefb88f8 jdeCallObjectV2 (b81788, 928a28, 1106270, 1, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (b81788, 0, 928a28, 0, fe963658, f557eea4) + 38
fe79f4dc JDEK_ProcessCallRequest (f557ef58, dda5b8, 5a7e68, 9e2ae8, 928a28, 20) + 3d30
fe79a5e8 JDEK_StartCallRequest (f557fc40, dda5b8, 0, 9e2ae8, 5a7e68, 0) + f74
fe77db24 runBusinessFunction (c59d88, 0, 0, 7174, ff338dff, fe93c6ec) + 328
fe77dea8 runCallObjectJob (c59d88, 0, c59d98, c59d98, c59d98, 20) + 5c
fe354394 psthread_pool_worker_function (0, 0, 74, d5cc8, fe10d7b8, fe367de8) + 628
fe0f48fc threadFunctionWrapper (c3478, 204, 0, c4, c347b, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)
----------------- lwp# 6 / thread# 6 --------------------
fc340408 lwp_park (0, 0, 0)
f6667034 kpuexec (f8e9d800, f1492c, 5ad6ac, 0, 0, 18814c) + 2b8
f65c5e50 OCIStmtExecute (188118, f1492c, 0, 0, 0, 0) + 2c
f657e348 BFOCIStmtExecute (188118, f1492c, 5ad6ac, 0, 0, 0) + 28
f656eacc performRequestInternal (d05080, 0, d05088, d03440, ff0ed1c0, 0) + 4f8
f656e46c dballPerformRequest (d05080, d06070, 0, d06070, d06073, 1000) + 3e4
feb937a4 JDB_DBPerformRequest (93bc50, d05080, d03440, 181240, 181318, 181240) + e4
fe13a894 TM_DBPerformRequest (9e2a20, 1, d03440, 116e990, 1b3ab8, 5) + 41c
feba75b4 SelectKeyed (116e990, 9e2a20, f385eecc, 1, 1, 1) + 1ec8
febb3c00 FetchKeyed (0, 1, 1562d8, d03440, feddd4dc, 0) + 286c
febb114c JDB_FetchKeyed (116e990, 1, 1562d8, ff338dfc, f386128c, 0) + 214
ee688ab4 EditSystemExistenceF99410 (1562d8, 689800, f3867910, 3, ff976770, 618700) + 30c
fefb88f8 jdeCallObjectV2 (f1f3d5ec, 13741c8, a6fb20, 3, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1f3d5ec, 0, 13741c8, 0, 0, 0) + 38
f0b6b804 I4500250_GetGrowerSystemConstant (13741c8, b86dd8, f3867a80, f3867912, ff990790, 0) + e8
f0b65e50 CalculatePurchasePrice (13741c8, b86dd8, f3870b3c, f3867a84, ff98bfa8, f3870bda) + 220
fefb88f8 jdeCallObjectV2 (f1ff38fc, 13741c8, 117a878, 2, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (f1ff38fc, 0, 13741c8, 0, 0, 0) + 38
f0f500cc IXTF4311Z1_CalcPurchasePrice (b86dd8, f38765ce, 1265f00, 1265c40, f3876ce8, f38756f0) + 15d8
f0f39fd0 IXT4311Z1_F4311EditLineInternalFunctions (13741c8, b86dd8, 1265c40, f3876f38, 0, f38756f0) + 23b8
fefb88f8 jdeCallObjectV2 (6f7908, 13741c8, eb79e8, 1, ff0c36fc, 20) + a3d0
fefae518 jdeCallObject (6f7908, 0, 13741c8, 0, fe963658, f387eea4) + 38
fe79f4dc JDEK_ProcessCallRequest (f387ef58, 13e3c78, bdb60, 9e2768, 13741c8, 20) + 3d30
fe79a5e8 JDEK_StartCallRequest (f387fc40, 13e3c78, 0, 9e2768, bdb60, 0) + f74
fe77db24 runBusinessFunction (14c288, 0, 0, 7174, ff338dff, fe93c6ec) + 328
fe77dea8 runCallObjectJob (14c288, 0, 14c298, 14c298, 14c298, 20) + 5c
fe354394 psthread_pool_worker_function (0, 0, 74, d5cc8, fe10d7b8, fe367de8) + 628
fe0f48fc threadFunctionWrapper (36cdb8, 204, 0, c4, 36cdbb, fe353d6c) + f4
fc340368 _lwp_start (0, 0, 0, 0, 0, 0)

Analysis of Call Object Crash - CallStacks (for above .dmp file)

  1. We start by looking at the thread which contains jdeLogCallStack() function as this is the thread which encountered the error first.

  2. From that point in the callstack please traverse down to the businessfunction which is being invoked by looking top -> bottom until one hits jdeCallobjectV2() in this example its DetermineIfBlanketPOExists.

  3. Check for any MEM SAR fix for this Bsfn and note the ESU.

  4. As mentioned earlier - this may not be the root cause of the crash - it could be a victim of some other thread/ bsfn corrupting the memory before it.

  5. Search for other active business functions in other threads for this callobject. Use the same methodology:

    1. Evaluate from top to bottom.

    2. Keep going until you hit the jdeCallObjectV2() Function.

    3. The BusinessFunction right above jdeCallObjectV2() is the one closest the point in time when the crash occurred.

  6. In our example these are:

    1. No running BSFN in Thread1. Main thread is waiting for work.

    2. EditSystemExistenceF99410 in Thread2.

    3. No running BSFN in Thread3. Thread is waiting for work.

    4. EditSystemExistenceF99410 in Thread4.

    5. DetermineifBlanketPOExists in Thread 5 (This is the thread which initiated the crash).

    6. EditSystemExistenceF99410 in Thread6.

So from this example, we see that the thread running DetermineifBlanketPOExists initiated a process crash, but there were three instances of EditSystemExistenceF99410 running in three other threads. Therefore, one should look for SARs containing fixes for these two business functions and apply those ESUs.

It's also possible that the corruption in this crashed CallObject was caused by some other business function which was no longer running at the point of crash. Therefore, it is helpful to analyze a few CallObject crash .dmp files so that an overall pattern of suspect business functions appear and we can then use these to select a narrow range of ESUs to apply. This method of analysis is quite focused and presents one with a given set of fixes to apply rather than choose wide swathes of possible ESUs.

Call Object or RunBatch Crash due to Out of Memory

CallObjects or Runbatch processes may also crash when they are unable to allocate memory. This can happen for two reasons:

  1. If this process hits the 'per-process' memory limit for the given OS. This may happen due to the process leaking memory or consuming excessive memory.

  2. General lack of memory in the machine environment where it is running. This is usually due to an undersized box or a side effect of leaking processes on other sibling processes.

Similar to memory corruption, out of memory also produces a .dmp.log file. But in this case, it produces a Memory Dump which contains the list of all EnterpriseOne objects in the process memory at the time of crash. If the crash is due to raw allocation of memory or a third party leak, then this memory diagnostic dump will not show any large quantities of EnterpriseOne objects.

This is a dmp.log for a crash due to Out of Memory:

Apr 5 17:31:27.459991 DEBUG INIT0 - 6329 **** jdeDebugInit -- output disabled in INI file.
Apr 5 17:31:27.461443 jdemem.c131 - 6329 BMD OFF - Not running BSFN MEMORY
DIAGNOSTICS v8.98.2.0 level 0
Apr 5 17:59:03.229258 jdb_utl1.c13485 - 6329/2 MEMORY ALLOCATION FAILURE
Apr 5 17:59:03.229365 jdb_utl1.c13485 - 6329/2 File: jdb_rq1.c Line: 192
********** Begin OS Data **********
Memory Usage = 4281MB
CPU Usage = 0%
Number of Threads = 7
********** End OS Data **********
********** Begin Detailed Memory Data **********
********** Begin Process Data **********
ENVIRONMENT,Ptr=00652d78,Env=JPD812,PathCode=PD812
JDBTABLECACHE,Ptr=007ccec8,Name=JDB_BV_1270510706JPD812F4009,#Records=1
JDBTABLECACHE,Ptr=003e6f38,Name=JDB_BV_1270510706JPD812F40203,#Records=2
JDBTABLECACHE,Ptr=003ed418,Name=JDB_BV_1270510706JPD812F40205,#Records=1
JDBTABLECACHE,Ptr=004fb430,Name=JDB_BV_1270510706JPD812F41001,#Records=2
JDBTABLECACHE,Ptr=00501078,Name=JDB_BV_1270510706JPD812F41002,#Records=3294
JDBTABLECACHE,Ptr=0051ead0,Name=JDB_BV_1270510706JPD812F7306,#Records=1
JDBTABLECACHE,Ptr=00319358,Name=JDB_BV_1270510706JPD812F99410,#Records=2
JDBTABLECACHE,Ptr=00338690,Name=JDB_BV_1270510706JPD812F0004,#Records=25
JDBTABLECACHE,Ptr=00342d40,Name=JDB_BV_1270510706JPD812F0005,#Records=27
JDBTABLECACHE,Ptr=00346cf8,Name=JDB_BV_1270510706JPD812F0006,#Records=1
JDBTABLECACHE,Ptr=00378de1,Name=JDB_BV_1270510706JPD812F0901,#Records=948722
JDBTABLECACHE,Ptr=00349ca0,Name=JDB_BV_1270510706JPD812F0008,#Records=1
JDBTABLECACHE,Ptr=0034e6a8,Name=JDB_BV_1270510706JPD812F0010,#Records=2
JDBTABLECACHE,Ptr=006454d8,Name=JDB_BV_1270510707JPD812F1609,#Records=1
OCIDBCONN,Ptr=0012e530,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=AutoInUse,Comm
itMode=A,RefCount=196
OCIDBCONN,Ptr=0082ee18,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Co
mmitMode=M,RefCount=1
OCIDBCONN,Ptr=006aca68,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Co
mmitMode=M,RefCount=1
OCIDBCONN,Ptr=00a46d08,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Co
mmitMode=M,RefCount=1
OCIDBCONN,Ptr=00880b98,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualInUse,Co
mmitMode=M,RefCount=1
OCIDBCONN,Ptr=015f64c0,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualAvailable,C
ommitMode=M,RefCount=0
OCIDBCONN,Ptr=01b150c8,DBServer=densun28,DBUser=JDE,TNSDB=orcl,ConnState=ManualAvailable,
CommitMode=M,RefCount=0
********** End Process Data **********
********** Begin Session Data **********
SESSION,Ptr=000bdb60,User=JDE,Env=JPD812,Role=*ALL,Machine=denicsn5,SignOnTime= 4/ 5/2010 17:38:27,LastActiveTime= 4/ 5/2010 17:58:55
OPENJDBTRANSACTION,Ptr=0014eb28,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdb_ctl.c,Function=JDB_LoadEnv,Line=5829
TABLE,Ptr=00a2bac0,Name=F0013,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0013RowUsingCurrencyCode,Line=73
TABLE,Ptr=013f0830,Name=F0010,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0010RowUsingCompanyNumber,Line=246
OPENJDBTRANSACTION,Ptr=007f4538,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdb_ctl.c,Function=CallStartupBusinessFunction,Line=8551
OPENJDBTRANSACTION,Ptr=004299c0,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdekinit.c,Function=JDEK_ProcessInitUserRequest,Line=356
OPENJDBTRANSACTION,Ptr=00783a08,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdekinit.c,Function=JDEK_ProcessInitUserRequest,Line=356
JDECACHE,Ptr=000fabe8,Name=2XT4311Z1A,#Cursors=1,#Records=0,#Indices=1,#References=1,File=xt4311z1.c,Function=F4311InitializeCaching,Line=23018
JDECACHE,Ptr=005ce150,Name=2XT4311Z1B,#Cursors=1,#Records=0,#Indices=2,#References=1,File=xt4311z1.c,Function=F4311InitializeCaching,Line=23027
JDECACHE,Ptr=00ef3390,Name=2XT4311Z1C,#Cursors=1,#Records=1,#Indices=1,#References=5,File=xt4311z1.c,Function=IXT4311Z1_InitiateOrderCache,Line=5758
JDECACHE,Ptr=014397a8,Name=2B4302570Cache,#Cursors=1,#Records=0,#Indices=1,#References=2,File=b4302570.c,Function=ApprovalsFieldConstants,Line=158
JDECACHE,Ptr=014f8000,Name=2F45UI73,#Cursors=1,#Records=0,#Indices=2,#References=4,File=b4500200.c,Function=F4573GetNextFreeGood,Line=100
JDECACHE,Ptr=00beae30,Name=2B3201470213107,#Cursors=1,#Records=0,#Indices=7,#References=3,File=b3201470.c,Function=I3201470_CreateInitCache,Line=732
JDECACHE,Ptr=00b65350,Name=2B3201470213144,#Cursors=1,#Records=0,#Indices=7,#References=3,File=b3201470.c,Function=I3201470_CreateInitCache,Line=732
JDECACHE,Ptr=004d1438,Name=2B4302180F632910,#Cursors=1,#Records=1,#Indices=1,#References=19,File=b4302180.c,Function=CacheProcessPOHeaderCache,Line=1173
JDECACHE,Ptr=01876570,Name=2213190PricingDecimals,#Cursors=2,#Records=2,#Indices=1,#References=1,File=b4504500.c,Function=CreateDataMapCDIST,Line=229
JDECACHE,Ptr=006d05d0,Name=2213190DataMapCDISTCache,#Cursors=1,#Records=3,#Indices=1,#References=1,File=b4504500.c,Function=InitDataMapCacheCDIST,Line=2108
JDECACHE,Ptr=01765910,Name=2213190PricingHistory,#Cursors=2,#Records=1,#Indices=1,#References=1,File=b4504500.c,Function=CreateDataMapCDIST,Line=229
JDECACHE,Ptr=017ed260,Name=2213190PricingCatCodes,#Cursors=2,#Records=1,#Indices=1,#References=1,File=b4504500.c,Function=CreateDataMapCDIST,Line=229
JDECACHE,Ptr=0104aaf0,Name=2B4302180G632910,#Cursors=1,#Records=6,#Indices=2,#References=12,File=b4302180.c,Function=CacheProcessPODetailCache,Line=1510
JDECACHE,Ptr=015b0138,Name=2B4302180H632910,#Cursors=1,#Records=0,#Indices=3,#References=6,File=b4302180.c,Function=CacheProcessBlanketCache,Line=1848
JDECACHE,Ptr=013c0960,Name=2F40UI74_213190,#Cursors=1,#Records=6,#Indices=3,#References=1,File=b4504610.c,Function=F40UI74_Init,Line=719
JDECACHE,Ptr=013b0f80,Name=2F40UI70-213190,#Cursors=1,#Records=0,#Indices=5,#References=18,File=b4500720.c,Function=ProcessPriceAdjustmentListCache,Line=335
SESSION,Ptr=00811f78,User=JDE,Env=JPD812,Role=*ALL,Machine=denicsn5,SignOnTime= 4/ 5/2010 17:38:44,LastActiveTime= 4/ 5/2010 17:58:56
OPENJDBTRANSACTION,Ptr=0084a660,CommitMode=Auto,Owner=InitUser,AppName=UNKNOWN),File=jdb_ctl.c,Function=JDB_LoadEnv,Line=5829
TABLE,Ptr=00d4a3b8,Name=F0013,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0013RowUsingCurrencyCode,Line=73
TABLE,Ptr=0142e000,Name=F0010,CommitStatus=Active,File=jdb_curr.c,Function=JDB_RetrieveF0010RowUsingCompanyNumber,Line=246
OPENJDBTRANSACTION,Ptr=0084a968,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdb_ctl.c,Function=CallStartupBusinessFunction,Line=8551
OPENJDBTRANSACTION,Ptr=00822b00,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdekinit.c,Function=JDEK_ProcessInitUserRequest,Line=356
OPENJDBTRANSACTION,Ptr=00878840,CommitMode=Auto,Owner=InitUser,AppName=(UNKNOWN),File=jdekinit.c,Function=JDEK_ProcessInitUserRequest,Line=356
JDECACHE,Ptr=0085a448,Name=5XT4311Z1A,#Cursors=1,#Records=0,#Indices=1,#References=1,File=xt4311z1.c,Function=F4311InitializeCaching,Line=23018
JDECACHE,Ptr=00a3a360,Name=5XT4311Z1B,#Cursors=1,#Records=0,#Indices=2,#References=1,File=xt4311z1.c,Function=F4311InitializeCaching,Line=23027
JDECACHE,Ptr=0104ea50,Name=5XT4311Z1C,#Cursors=1,#Records=1,#Indices=1,#References=5,File=xt4311z1.c,Function=IXT4311Z1_InitiateOrderCache,Line=5758
JDECACHE,Ptr=00e868a8,Name=5B4302570Cache,#Cursors=1,#Records=0,#Indices=1,#References=2,File=b4302570.c,Function=ApprovalsFieldConstants,Line=158
********** End Session Data **********
********** End Detailed Memory Data **********

Analysis of Memory Dumps (for preceding .dmp file)

  1. Look for the memory usage at the point of the crash. If this number is much lower than the "per-process" memory limit as previously determined in SM Console, then it means that the system as a whole is running low on memory and this process is a victim of low memory available to it.

  2. If the process crashed at memory utilization close to the "per-process" memory limit, then we need to evaluate the likely suspects which might be excessively consuming the memory in the process.

  3. Look at the global Process level objects such as JDBTABLECACHE or Database connections for any extreme numbers.

  4. After that, analyze the perSession objects such as JDBTRANSACTIONS(manual) or JDECACHEs or DATAPOINTERs or JDBRequests(TABLE/VIEW) in each session.

  5. In our example above, the culprit is the JDB Caching of F0901 Table which has lead to caching of close to a million (948,722) data rows in memory, leading to a "memory exhaustion" condition . This is easily solved by either Dynamically Clearing Cache from Server Manager or removing this table from JDB Cache from P98613 Application.

Out of Threads

A Callobject can crash if it consumes an excessive number of threads. Usually this limit is twice the number of threadpoolsize as set in jde.ini. This will also produce a .dmp.log file which will contain a list of all threads and their callstacks - this will help in determining where the source of the threads. On System-i enterprise server, there will not be any dmp file. Instead the callstacks for all threads will be logged in jde.log.

Query Exceeding a Threshold

To determine which DB queries are taking an excessive amount of time to execute, the following setting is available in Server Manager:

Figure 14-15 Query Execution Time Threshold

Surrounding text describes Figure 14-15 .

Setting this value greater than 0 will start a timer for each DB query. If the amount of time taken to execute the DB query equals or exceeds this value, two messages will be written to the jde log for the E1 process. The first line will contain the text indicating that the DB query threshold has been exceeded. This line will also contain the E1 user and DB proxy user that executed the query. The second line will contain the actual DB query that exceeded the threshold.

This is a sample of these messages:

859026/452 MAIN_THREAD Tue Apr 20 16:41:26.044816
dbdrv_log.c196
OS400AG016 - doQueryDiagnostics: The following SQL query took 5 seconds which is equal to or greater than QueryExecutionTimeThreshold (1 seconds) for E1User(JOESMITH) with DBProxyUser(JDE).
859026/452 MAIN_THREAD Tue Apr 20 16:41:26.044960
dbdrvag.c1394
SELECT * FROM SVM812/F986110 WHERE ( JCJOBSTS = 'P' AND JCFUNO = 'UBE' AND JCPRTQ = '6003' AND JCEXEHOST = 'JDESERVER1' ) ORDER BY JCEXEHOST ASC,JCJOBNBR ASC

Terminating HTML User Sessions

An administrator can terminate user sessions on EnterpriseOne HTML servers. This can be used in conjunction with the Recycle Kernel button, to stop a user session that appears to be out of control, while allowing other user sessions on the same CallObject kernel to complete normally.

User sessions can be found using Server Manager, by selecting the view Search for User Resources from the main Management Dashboard page.

Figure 14-16 Search for User Activity

Surrounding text describes Figure 14-16 .

The search list can be narrowed by specifying user names and environments. Clicking on the link HTML Server Session will bring up a page where those users on that same HTML server instance can be selected for termination. An alternative way to get to the same page is to select the link to User Sessions in the Runtime Metrics block of the HTML server instance main page. On that page, user sessions can be selected by check box. The CNC admin can send a message to the user that their session will be terminated. Then the CNC admin can terminate the selected user sessions.

For a CallObject kernel that has already begun recycling, that kernel will shut down when all of its user sessions have either logged off or been terminated by an administrator.

14.7.2.7 Logging and Diagnostics

Logging Improvements

At the time of user signout, all EnterpriseOne related memory structures should be freed. If they are not, then the three new settings listed in the Error and Debug Logging section can help isolate the value and origin of these outstanding memory objects. These memory objects are gracefully removed when a user signs out. However, these represent a potential buildup of objects in processes that do not represent a problem in long running processes such as subsystem jobs, long running batch jobs, or if an interactive user does not sign out for a long time (such as interop jobs).

Error and Debug Logging section

Three new fields have been added to the Error and Debug Logging section:

FieldDescription
Log memory diagnostics at signoffINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - DEBUG

INI Entry - logMemDiagsAtSignoff

Default Value - FALSE

Allowed Values:

  • TRUE

  • FALSE

This setting specifies whether or not memory diagnostics will be logged when a CallObject Kernel user session is ended or a UBE process ends. The memory diagnostics will be written to the jdedebug log.

Log JDE Cache leaks at signoffINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - DEBUG

INI Entry - logCacheLeaksAtSignoff

Default Value - FALSE

Allowed Values:

  • TRUE

  • FALSE

This setting specifies whether or not JDE Cache leaks will be logged when a user session is freed in an E1 Server process. Details about the leaked JDE Caches will be written to the jde log.

Log Data Pointer leaks at signoffINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - DEBUG

INI Entry - logDPLeaksAtSignoff

Default Value - FALSE

Allowed Values:

  • TRUE

  • FALSE

This setting specifies whether or not Data Pointer leaks will be logged when a user session is freed in an E1 Server process. Details about the leaked Data Pointers will be written to the jde log.


14.7.2.8 Advanced Profiling

The advanced Profiling section discusses:

  • JDEHEAP Advanced Diagnostics Engine (JADE)

  • Business Function Memory Diagnostics (BMD)

JDEHEAP Advanced Diagnostics Engine (JADE)

This section discusses:

  • Description of JDEHEAP Advanced Diagnostics Engine (JADE)

  • JADE Standard Mode

  • JADE Advanced Mode

  • JDEHEAP ADVANCED DIAGNOSTICS ENGINE (JADE) Configuration

Description of JDEHEAP Advanced Diagnostics Engine (JADE)

JADE ( JDEdwards Heap Advanced Diagnostic Engine) and BMD ( Business Function Memory Diagnostic) are two advanced profiling tools which work cross-platform with the production level builds to diagnose memory leak issues.

These Profilers are to be used when the normal memory diagnostics do not yield adequate information.

BMD and JADE have a common problem domain of finding the source of memory consumption or leak within JDEdwards Enterpriseone Kernel Space. However, they specialize in different use cases:

  • BMD Level 1 gives and overall idea of memory consumption.

  • BMD Level 2 and 3 provide growth of memory as a function of business functions.

Thus, BMD helps isolate which business functions are likely candidates for a memory consumption or leak.

On the other hand, JADE is a finer diagnostic tool and it works by collecting all memory allocations from the given Enterprise Server Kernel.

All memory that is left unallocated at the end of the run can be considered as a memory leak or excessive consumption - if start and stop points are chosen judiciously.

JADE Standard Mode

JDEHEAP ADVANCED DIAGNOSTICS ENGINE (JADE) provides a method to identify the location of JdeHeap memory leaks. Note: do not use these settings unless investigating a "Tools-level" problem, as system performance may be affected.

Configuration settings for JADE are accessed by selecting Logging and Diagnostics in the Configuration section.

Figure 14-17 Configuration section

Surrounding text describes Figure 14-17 .

For memory investigations within the scope of BSFNs, use the buttons on the Server Manager process screen instead of these INI settings. JADE tracks memory usage of all jdeHeap functions (jdeAlloc, jdeCalloc, jdeRealloc, and jdeFree). The JADE JDE.INI settings take affect whenever a process starts. They will be ignored and deactivated whenever using a JADE button on the Server Manager process screen.

All JADE logging is placed in the jdedebug.log files, even if jdedebug logging is turned off in the JDE.INI.

Use Case 1

If an Application is known to have a memory leak:

  1. Launch the Application to the App Entry point.

  2. Associate the Application to a given CallObject by correlating under "Remote Env" section of HTML WebSessions.

  3. Drill into the Callobject Kernel and click on "Start JADE" Button.

  4. Execute the pre-defined transactions on the application.

  5. When done, click on "Dump JADE" Button.

  6. Exit the Application and click on on "Stop JADE" Button.

  7. Click "Parse JADE" to see the possible leak locations.

In the previous use case we can determine if there is any unallocated memory at the end of Application's run. If yes, then it can be determined from where it is being allocated.

Use Case2

If a running process, such as RunBatch, has a runaway memory leak:

Figure 14-18 Top memory usage identified by graph and by sorting on Memory column.

Surrounding text describes Figure 14-18 .
  1. Drill into the known process.

    Figure 14-19 Press Start JADE button.

    Surrounding text describes Figure 14-19 .
  2. Enable JADE by pressing on "Start JADE".

  3. Let the process run for representative period of leak.

  4. Press "Stop JADE" Button.

  5. Click "Parse JADE" to see the possible leak locations.

    Figure 14-20 Click Download JADE Parse of Log File.

    Surrounding text describes Figure 14-20 .
  6. Download JADE Parse file.

    Figure 14-21 Parsed JADE Log File

    Surrounding text describes Figure 14-21 .
  7. Open the downloaded Parse file in favorite CSV reader and analyze memory allocation patterns which may suggest the location of the leaks.

JADE Advanced Mode

JADE Advanced Mode provides a deeper level of information for analysis of situations when Standard Mode is not able to resolve the issue. For example, if one is working to resolve an issue of high memory usage, but doesn't see any corresponding rise in memory of any known EnterpriseOne objects either in analyzing the graphs or using the Diagnostic buttons, then Advanced Mode is needed.

Three levels of JADE logging are available:

  • JADE level 1 logs a summary of memory usage.

  • JADE level 2 logs the summary, plus detail lines for each BSFN-scoped memory pointer.

  • JADE level 3 logs the summary, plus detail lines for all jdeHeap memory pointers.

There is an option to start JADE memory tracking based on specified BSFN triggers, and also an option to turn on Debug logging when the BSFN trigger is met. JADE data is dumped to the log file based on a minimum time interval. The INI-initiated JADE tracking is terminated whenever a JADE button on the Server Manager process screen is used.

JDEHEAP Advanced Diagnostics Engine (JADE) Configuration

JADE can be configured by accessing the JDEHEAP Advanced Diagnostics Engine (JADE) Configuration section.

To access this section:

  1. In Server Manager, select the EnterpriseOne server.

  2. Select Logging and Diagnostics in the Configuration Section.

Figure 14-22 JDEHEAP ADVANCED DIAGNOSTICS ENGINE (JADE) Configuration section

Surrounding text describes Figure 14-22 .

The fields used to configure JADE are:

FieldDescription
Track JdeHeap Memory UsageINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - trackMemUsage

Default Value - 0

Allowed Values:

• False - Do Not Begin JADE Memory Tracking (0)

• True - Begin JADE Memory Tracking At Process Start (1)

Track jdeHeap memory usage by JADE. The tracking will start with the first jdeHeap usage of the process. It will terminate when the process shuts down and when any of the JADE buttons on the Server Manager process screen are used.

Logging LevelINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - logLevel

Default Value - 2

Allowed Values:

• Level 1 - Summary of JdeHeap Memory Usage (1)

• Level 2 - Summary plus BSFN-Scoped Memory Details (2)

• Level 3 - Summary plus All JdeHeap Memory Details (3)

Level of logging the JADE diagnostics. Level 1 logs a summary of BSFN-scoped pointers and of all pointers. Level 2 logs the summary, plus detail lines for each BSFN-scoped jdeHeap usage. Level 3 logs the summary, plus detail lines for all jdeHeap usage.

Logging Level (in seconds)INI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - logInterval

Default Value - 0

Logging interval (in seconds) between dumping of JADE data to the debug log file. This is a minimum interval, not an exact interval. No dumping will be done if there has been no jdeHeap activity since the last dumped data. This interval-based dumping will be terminated if any of the JADE buttons on the Server Manager process screen are used.

Use BSFN Trigger to start JADEINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - bsfnTriggerUseTrigger

Default Value - 0

Allowed Values;

• False - Do Not Use Specified Conditions To Begin JADE (0)

• True - Use Specified Conditions To Begin JADE (1)

Use BSFN Trigger to begin JADE memory tracking. The BSFN-related trigger conditions are given in this section of the INI file. When the trigger conditions are met, JADE memory tracking begins. The trigger does not cause any JADE data to be dumped to the log files.

Memory Threshold (MB)INI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - bsfnTriggerMemThresholdMB

Default Value - 100

Memory threshold (in megabytes) to begin JADE tracking of jdeHeap memory usage. This can be combined with a specified BSFN name and level to trigger when teacking starts.

BSFN NameINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - bsfnTriggerBsfnName

Business Function name. When combined with the BSFN level and memory threshold, triggers the JADE tracking.

BSFN LevelINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - bsfnTriggerBsfnLevel

Default Value - 0

Business Function level. When combined with the BSFN name and memory threshold, triggers JADE tracking. Not used when set to zero.

Enable Debug LoggingINI Filename - /u01/jdedwards/e812/ini/JDE.INI

INI Section Name - JADE

INI Entry - bsfnTriggerEnableDebug

Default Value - 0

Allowed Values:

• False - Do Not Change Debug Logging (0)

• True - Turn On Debug Logging When JADE Is Triggered (1)

Option to turn on debug logging. If selected, debug logging will be dynamically turned on when trigger conditions for JADE are met. This does not change the debug logging settings of JDE.INI.


Business Function Memory Diagnostics (BMD)

This section discusses:

  • Business Function Memory Diagnostics (BMD)

  • Logged Values in BMD

  • Configuration of BMD

  • BMD Parsing

Description of Business Function Memory Diagnostics (BMD)

The KRM system enables you to engage BMD Profiling and includes BMD (BSFN Memory Diagnostics) in an easy-to-use format. BMD is a memory profiler which can track and isolate memory leaks to a particular business function and provides output of memory in .csv format. The BMD is considered a last resort to identify the cause of memory problems.

There are three levels of BMD:

  • The first level provides memory usage through the lifetime of all processes, to help narrow down where the problem is occurring.

  • The second level provides information about Business Functions (BSFNs) (for BSFN levels 1 and 2) after the kernel memory exceeds a given threshold.

  • The third level provides information about BSFNs (all BSFN levels) after the kernel memory exceeds a given threshold within a specified BSFN running at a specified level.

The first level is sampled memory logging that can be used for all types of kernel processes. The second and third levels are BSFN-specific memory logging. The types of kernel processes that run BSFNs are CallObject kernels, UBEs, and Subsystems.

The BMD data is written to the debug log file, even if debug logging is not turned on. The trigger for the third BMD level can also be used to activate full debug logging, to provide a detailed context around the memory problems.

Waiting to turn on debug logging until after the trigger conditions are met can eliminate huge debug-log files, which might take a lot of analysis to identify the portion of the log file that is related to the actual problem.

Logged Values in BMD

BMD Level 1 - collected at the allocation frequency specified in the BMD configuration - Allocation Frequency:

  • Current CPU percent

  • Current total process memory being used

BMD Level 2 - collected at the exit point of each Business Function after the specified Memory Threshold is hit for Business Functions at Level 1 and 2 only:

  • Current CPU percent

  • Current total process memory being used

  • Change in the memory during the BSFN (delta-memory)

  • BSFN name

  • BSFN level

BMD Level 3 - collected at the exit point of each Business Function after the specified Threshold of Memory AND Business Function Name AND Business Function Level (any level) is hit:

  • Current CPU percent

  • Current total process memory being used

  • Change in the memory during the BSFN (delta-memory)

  • BSFN name

  • BSFN level

  • Debug Logging (Optional)

Configuration of BMD

These are the navigation steps to access the configuration of BMD:

  • Select the enterprise server instance in server manager.

  • You should see the <EnterpriseOne Enterprise Server> instance.

  • Make sure that the server is up and running.

  • Go to the <Configuration> section.

  • Click on the <Logging and Diagnostics> link.

  • Find the BSFN Memory Diagnostics (BMD) Configuration section.

The BMD JDE.INI settings specify the BMD level, and then the trigger conditions within each level. The settings are found in the JDE.INI in a block called "[BSFN MEMORY DIAGNOSTICS]". They are found in Server Manager in the configuration link called "Logging and Diagnostics".

The primary BMD setting is the BMD level, called "bmdLevel". That can be 0 (BMD off), or 1, 2, or 3 (BMD level).

For BMD level 1, the trigger condition is based on the allocation frequency (called "allocFrequency"). That is a count of all calls to the system-level allocation functions (malloc, calloc, and realloc). The default setting is 15000, with a minimum of 7000. At 15000, for active CallObject kernels, this can result in memory-level logging several times per minute.

Figure 14-23 BSFN Memory Diagnostics (BMD) Configuration section – Level 1

Surrounding text describes Figure 14-23 .

For BMD level 2, the trigger condition is passing a specified memory threshold (called "memThresholdMB"). After that memory threshold is first passed, there will be BMD logging each time a BSFN level 1 or 2 exits.

Figure 14-24 BSFN Memory Diagnostics (BMD) Configuration section – Level 2

Surrounding text describes Figure 14-24 .

For BMD level 3, the trigger is based on a combination three conditions: a specified memory threshold (called "memThresholdMB", same as BMD level 2), a specified BSFN name (called "bsfnName"), and a specified BSFN level (called "bsfnLevel"). After those three conditions are met, there will be BMD logging each time a BSFN (all BSFN levels) exits. BMD level 3 has the option of turning on full debug logging starting when the trigger conditions are met. The optional setting is called "enableDebug", with possible values of 0 (debug logging unchanged) or 1 (debug logging turned on if it had been off).

Figure 14-25 BMD Configuration section – Level 3, Enable Debug Logging = False (debug off)

Surrounding text describes Figure 14-25 .

Figure 14-26 BMD Configuration section – Level 3, Enable Debug Logging = True (debug on)

Surrounding text describes Figure 14-26 .

The EnterpriseOne services must be re-started for any changed BMD settings to take affect. For Runbatch, each new UBE will use any BMD values that are changed before that UBE starts.

14.7.2.9 BMD Parsing

These are the navigation steps to access BMD Parsing:

  • Select the enterprise server instance in server manager.

  • You should see the <EnterpriseOne Enterprise Server> instance.

  • Make sure that the server is up and running.

  • Go to the <Available Log Files> section.

  • Select a BMD parsing option link.

The BMD feature also includes an easy parsing system that is set up through links on the Server Manager log file screen.

Figure 14-27 Log File Viewer

Surrounding text describes Figure 14-27 .

For level 1 BMD data, there is one parsing option that puts all of the data in the CSV format. For levels 2 and 3, there are two parsing options. One brings all BMD data for the BSFNs into the CSV format. The other excludes those BMD data rows which have a zero delta. The second option presumably keeps the most interesting BMD data, while reducing the CSV file size substantially.

Figure 14-28 BMD Parsing Option Links

Surrounding text describes Figure 14-28 .

For CallObject kernels, the corresponding jdedebug_pid.log file contains the BMD information.

If a UBE is still running, the corresponding jdedebug_pid.log file contains the BMD information. If the UBE has completed, the log file is moved to the /printqueue folder. Copy the UBE-BMD log manually from the /printqueue folder to the /log folder so that the log file can be processed by BMD parsing within Server Manager.

The BMD data is parsed and retrieved in a CSV format. That parsed data can be saved to a file on the local machine, or it can be entered directly into a spreadsheet tool, such as Microsoft® Excel or OpenOffice Calc. Within Microsoft® Excel, the BMD data is easily searched and graphed.

Figure 14-29 BMD data parsed and retrieved in a CSV format

Surrounding text describes Figure 14-29 .

14.8 Troubleshooting the IBM i Enterprise Server

This section provides an overview of IBM i enterprises server troubleshooting and discusses how to:

  • Troubleshoot IBM i enterprise server installation.

  • Troubleshoot multiple release setup.

  • Troubleshoot JDBNET.

  • Troubleshoot interprocess communications.

  • Troubleshoot jde.ini file.

14.8.1 Understanding IBM i Enterprise Server Troubleshooting

This subsection explains how to troubleshoot problems that can occur on an IBM i enterprise server. When troubleshooting, follow these guidelines:

  • Try to narrow the definition of any problem that you have, particularly when communicating the issue to someone, such as JD Edwards Worldwide Customer Support Services.

    For example, rather than reporting that the batch application failed, explain how the batch application failed. The more specific the information, the faster the problem can be solved. Rather than reporting that "The report had the wrong data," say that "The batch status is E."

  • When communicating an error message to someone, be sure to include all parts of the error message exactly as they appear in the log file or on the screen.

    Parts of the message that might not seem important might actually hold the key as to why an error occurs. Also, distinguish between characters that might be misinterpreted, for example, the capital letter "O" and the numeral zero.

  • As soon as you notice an error, examine the log files.

    Messages near the end of the log files sometimes reveal the most important information about the cause of the error.

  • Before you restart JD Edwards EnterpriseOne on the server, either delete or move all the files from the log directories. Refer to the JDE.INI file for the locations of the log files.

  • When you first try to get JD Edwards EnterpriseOne running, verify that you have logging turned on. Examine the jde.log and jdedebug.log files carefully.

  • Carefully examine the JOBLOGs and jde.log files of the JD Edwards EnterpriseOne jobs to ensure that authorities and OCM are set correctly. Look for messages such as these in the jde.log files:

    JDB3100011 - Failed to get location of table F983051 for environment PD900
    Look for messages similar to these in the JOBLOGs:
    File F98306 not found in library PRODDTA.
    

You might want to temporarily modify the job description of the JD Edwards EnterpriseOne user profile to always write the joblog until you are satisfied that all setup is correct.


Note:

To complete the resolutions provided for this issues, you must sign on to the enterprise server using an account that has administrative privileges.

14.8.2 Troubleshooting IBM i Enterprise Server Installation

This section explains topics that might create issues during the installation of an IBM i enterprise server.

14.8.2.1 Troubleshooting: Library Installation Verification

IssueResolution
You want to verify that the correct libraries and data dictionary items are installed on the IBM i.See the list of libraries and data dictionary items and descriptions of their contents.

14.8.2.2 Troubleshooting: Database Table Configuration

IssueResolution
Strange database results or errors imply that Object Configuration Manger (OCM) is not set up correctly. For example, you see these message in the jde.log file:

Databases: IBM i:table configuration problems IBM i

JDB3300011 - Failed to get location of table F983051 for environment PD900

  • Verify that environments set up in the OCM are correct.
  • Review the description of how OCM is used by JD Edwards EnterpriseOne in JD Edwards EnterpriseOne Initialization.

  • Run the VerifyOCM program to ensure that the OCM tables are set up correctly. You must have one valid environment available to run VerifyOCM.


14.8.2.3 Troubleshooting: Setting up the IBM i .INI File

IssueResolution
You cannot find the .INI fileFind it in IFS. The file should be located in the /<release>/ ini directory. For example, /E900sys/ini/JDE.INI.
You need more information on using the IBM i .INI fileReview the notes and descriptions of .INI settings.

14.8.2.4 Troubleshooting: You Cannot Find the Log Files

The logging is performed to the IBM i Integrated File System (IFS). The naming convention is similar to that of the UNIX enterprise servers. That is, the default names of the files are JDE_AS400JobNumber.log, JDEDEBUG_AS400JobNumber.log, and JDETS.LOG, where AS400JobNumber is the IBM i Job Number of the job that generated the file. The system creates these files automatically, but the path to the files must exist before logging begins. The created log file directory should match the JOBLOG and JDELOG settings in the JDE.INI file.

The path to the log files stored in the IFS can be created by performing successive calls to the IBM i command MKDIR. For example, to create the path /PSFT900/LogFiles, enter this command:

MKDIR DIR('/PSFT900') DTAAUT(*RWX) OBJAUT(*ALL)

Followed by:

MKDIR DIR('/PSFT900/LogFiles') DTAAUT(*RWX) OBJAUT(*ALL)

Logging might be turned off in the .INI. Activate logging in the .INI using these settings in the [DEBUG] section:

[DEBUG]

LogErrors=1

Output=FILE

Where variable names and descriptions are as follows:

LogErrors values are:

0 = Do not generate logs.

1 = Create logs.

Output values (always in upper case) are:

NONE = Do not write debug messages to any output device.

FILE = Write messages to log files.

14.8.2.5 Troubleshooting: Not Enough Relevant Information Is Written to the Log Files

Additional logging information may need to be turned on in the .INI. Set these keys in the .INI for additional information to be output to the log files:

[JDENET]

netTrace=1

[JDEIPC]

ipcTrace=1

[DEBUG]

TAMTraceLevel=1

[UBE]

UBEDebugLevel=6

[TCEngine]

TraceLevel=10

Where variable names and descriptions are as follows:

netTrace values are:

0 = Do not generate JDENet error messages (that is, communication between platforms).

1 = Generate JDENet error messages.

ipcTrace values are:

0 = Do not generate Interprocess Communication (IPC) error messages (that is, communication between processes on a single platform).

1 = Generate IPC error messages.

TAMTraceLevel values are:

0 = Do not generate Table Access Management (TAM) error messages (that is, regarding specification files).

1 = Generate TAM error messages.

UBEDebugLevel values are:

0 = Do not generate batch application error messages.

1-6 = Generate increasingly detailed error messages (1 indicates the least specific message; 6 indicates the most detailed message).

TraceLevel values are:

0 = Do not generate Table Conversion (TC) error messages.

1-10 = Generate increasingly detailed error messages (1 indicates the least specific message; 10 indicates the most detailed message).


Note:

Because NetTrace and ipcTrace messages are written to the debug log associated with that job, the [DEBUG] section of the jde.ini file requires the Output=FILE setting.

14.8.2.6 Troubleshooting: Testing with PORTTEST

In general, activate logging when running the PORTTEST program. Review the jde.log and jdedebug members generated by running the PORTTEST program. Also review the IBM i job log generated by running the PORTTEST program. These logs provide valuable information about the JD Edwards EnterpriseOne IBM i configuration and setup.

IssueResolution
An error with OCM occurred.Verify that the OCM is correct for the environment. Disable the security server in the JDE.ini file and make sure that porttest runs successfully. For this work, you must log on with a User ID that has administrative privileges.
An error with the security server occurred.The JD Edwards EnterpriseOne network might not be running. Clear the Interprocess Communication (IPC) structures using the JD Edwards EnterpriseOne IBM i CLRIPC command and restart JD Edwards EnterpriseOne. If you have different versions of JD Edwards EnterpriseOne running, make sure that they are on different ports and have different values for startIPCKeyValue. In the [JDEIPC] section of the JDE.INI file. Also, note that the different versions of JD Edwards EnterpriseOne should have different JD Edwards EnterpriseOne libraries, database files, and IFS directories

Successful running of CLRIPC should result in the appearance of no messages on the screen. If messages appear as a result of CLRIPC, one or more jobs (including an interactive job that ran the PORTTEST program) might have locked some of the IPC shared memory. Determine which job locked shared memory and end it. Try logging off of a session in which you ran the PORTTEST program and running CLRIPC. If all attempts fail, you may change the .INI setting [JDEIPC] startIPCKeyValue to at least 1000 more or less than the current setting. Log off and back on again to ensure the new value is read. Attempt CLRIPC again, and restart JD Edwards EnterpriseOne if CLRIPC is successful.

An error with the security server occurred.The JD Edwards EnterpriseOne network might be running as a service under one library list and you are trying to run the PORTTEST program under another library list. Display all the libraries in the current library list and correct the list if the displayed library list is wrong. Then run the PORTTEST program.

If the library list is correct, the problem could be because the activation group under which the job is running on the IBM i may retain some of the information from previous attempts. Log off, log on, and run the PORTTEST program again.

An error with the security server occurred.The supplied user name or password might not match any names or passwords in the JD Edwards EnterpriseOne security table. Try one of these:
  • Run the PORTTEST program with a valid user name and password.

  • Add the given user name and password to the JD Edwards EnterpriseOne security table.

You get these message on the screen:

Invalid parms PORTTEST <USER> <PWD> <ENV>

You might not have included the correct number of arguments in the PORTTEST program. Use these arguments:

User - A valid JD Edwards EnterpriseOne user ID.

Password - Password for the JD Edwards EnterpriseOne user ID.

Environment - A valid JD Edwards EnterpriseOne environment.

Fewer than 99 F0902 records are written to the screen by PORTTEST.A possible PORTTEST program failure. Examine the log files.
  • Fewer than 99 records might exist in the F0902 table. This is not an error, but you should review the log files for any errors.

  • The F0902 database table might not be accessible. Verify that you can query the F0902 table using SQL. Use the STRSQL command on the IBM i.

An error initializing the environment occurs in the log file.The environment might not be set up correctly. Any errors in the affected .INI keys or database tables could cause the JD Edwards EnterpriseOne initialization to fail. The environment that the PORTTEST program uses is passed as a command line argument.

14.8.2.7 Troubleshooting: Running JDENET

IssueResolution
NETWORK dies immediately.IPCs might not have been cleared before starting JD Edwards EnterpriseOne (that is, starting JDENET using the JD Edwards EnterpriseOne IBM i command STRNET). End JD Edwards EnterpriseOne (ENDNET). Clear IPCs (using the CLRIPC command) and restart JD Edwards EnterpriseOne.

The startIPCKeyValue in the .INI file could be used by another version of JD Edwards EnterpriseOne. Try one of these:

  • Change the startIPCKeyValue and restart the software. This problem is not easily evident by examining the log files or reviewing error messages. Symptoms of the problem include:

  • You attempt to run more than one version of JD Edwards EnterpriseOne on the IBM i.

  • One environment can be successfully started by itself. A second environment cannot be successfully started (that is, the JDENET_N job ends almost immediately after starting) for the second version.

  • Look in the jde_xxx and jdedebug_xxx log files for specific error messages.

  • Determine if the PORTTEST program runs correctly.

    If not, correct those problems, and then try restarting JD Edwards EnterpriseOne using STRNET.

  • The configuration for the local host name, local domain name, and IP address might be incorrect. In the command line, enter CFGTCP to access the Configure TCP/IP form. Select option 12 (Change local domain and host names) and verify the settings for the local domain name and the local host name (for example, YOURCOMPANY.COM and SRVR1 respectively). Then select option 10 (Work with TCP/IP host table entries) and verify that two names exist in connection with the IP address for the IBM i. One name is a combination of the local host name and the local domain name (for example, SRVR1.YOURCOMPANY.COM). The other name is just the local host name (for example, SRVR1).

  • Verify that the Relational Database Directory name is set up correctly. Use the WRKRDBDIRE command to verify that the name of the *LOCAL database is the same as the server. If they are different, refer to the IBM i Configuration guide to determine how to set this up correctly.

An error initializing the environment occurs in the log file.
  • Examine the issues in this section about the PORTTEST program.
  • Determine if the PORTTEST program runs correctly. If not, correct those problems, and then try restarting JD Edwards EnterpriseOne using STRNET.


14.8.2.8 Troubleshooting: Testing JD Edwards EnterpriseOne by Submitting a Report

IssueResolution
You get these message:

Communication Failure with <server name>

You might see a message referencing an error of 11, indicating a time out occurred because the server was started after the client was run. Try resubmitting the report.

A time out might have occurred because of heavy network traffic or server load. Increase the time out value for the JDENETTimeout setting in the [NETWORK QUEUE SETTINGS] section of the jde.ini file on the workstation.

The wrong communications port might have been used. Verify that the serviceNameListen value in the [JDENET] section of the jde.ini file on the workstation matches the serviceNameConnect value in the [JDENET] section of the jde.ini on the server. In addition, the serviceNameConnect value in the client jde.ini must match the serviceNameListen in the jde.ini on the server.

Other communications problems might exist. Run SERVERADMINISTRATIONWORKBENCH.exe (found in the system\bin32 directory on the workstation). This program displays only the machines on the specified port (also known as service) that are running JD Edwards EnterpriseOne (either client or server). Use this information to track down the problem:

  • If the remote machine is visible, a time-out probably occurred.

    Rerun the report.

  • If the remote machine is not visible, try to ping the remote machine using the name of the machine.

  • If the ping fails, try to ping the remote machine using its IP address.

  • With this information, determine if the client and server agree on the IP address for the server.

  • If none of these steps identify the problem, a general network error probably occurred (for example, the network is down or a machine is disconnected). Track it down.

The report does not display any data.No data might exist in the database for the report that you are running, or you do not have access to the data. Try these:
  • Select a different report to verify that some reports do produce data.

  • Verify the database contains data that should be included in the report. Add data if necessary.

  • Change the processing options for the report.

  • Change the OCM and data sources to reference the correct library.

  • If the report is launched on the server, make sure that the vertical tables in the server OCM match those of the OCM for the workstation.

If no data is found, it could be because:

  • No data exists.

  • The processing options are incorrect.

  • The OCM for either the client or server is pointing to the wrong data source.

  • The data sources for either the client or server are pointing to the wrong database.

  • The SQL statement is incorrect (possibly due to a program bug).

  • The database drivers are out of date.

The report does not display any data.An error might have occurred with the report. Review the jdedebug.log and jde.log files for errors.
An error initializing the environment occurs in the log file.The environment might not be set up correctly:
  • Look for errors in .INI keys or database tables that can cause an initialization failure.

  • Stop JD Edwards EnterpriseOne and determine if the PORTTEST program runs correctly. If not, correct the problems, and then rerun JD Edwards EnterpriseOne manually.

You get this message:

Communication Failure with <server name>

This error occurs sometimes on the workstation

Restarting JDENET_N sometimes gets rid of the error

You can ping the server from the workstation

The server might have two network cards, which can confuse JDENET when the net communications are initialized between the client and server. One machine tries to connect using one network card, and the other machine connects using the other network card.

The hosts file on the server should list two different IP addresses for the server: one for each network card. The solution for the error involves setting the NetHostName field in the [JDENET] section of the JDE.INI to one of the names for the server given in the hosts file. JDENET then uses the IP address associated with the given network card.


14.8.2.9 Troubleshooting: Shutting Down JDENET

Running the IBM i command CLRIPC immediately after shutdown (that is, after running the IBM i command ENDNET) each time you shut down will help you avoid most restart problems.

14.8.2.10 Troubleshooting: Email and PPAT

IssueResolution
The batch application, server package installation, or table conversion log file (in the PrintQueue directory) displays the message:

PPAT:troubleshooting IBM i

XE Email:troubleshooting: IBM i

DoSendMessage Error: User 5600427 does not exist in the address book file (F0101).

The particular user may not be found in the F0101 table. Add the user to the F0101 table.

14.8.3 Troubleshooting Multiple Release Setup

This table explains how to troubleshoot problems that can occur with multiple releases on the IBM i:

IssueResolution
When you try to run multiple releases of JD Edwards EnterpriseOne at the same time, conflicts seem to occur between each release.Each installed release of JD Edwards EnterpriseOne may not have its own unique set of keys in the .INI. Change these keys in one or both .INI files:

[JDEIPC]

startIPCKeyValue

[JDENET]

serviceNameListen

serviceNameConnect

Variable names and descriptions:

startIPCKeyValue

An integer value that indicates an arbitrary starting memory offset for interprocess communications. For multiple instances of JD Edwards EnterpriseOne server, be sure that the differences between these values are 1000 or more. The default value is 5000.

Note: IBM Opti-Connect and Opti-Mover products use the IPC shared memory address 9999. Avoid setting the jde.ini file setting IPCStartKey to a starting value using the range of 9000 to 9999.

serviceNameListen

Port through which JDENet listens for communications attempts. The default is jde_server (translated using the services file). Each instance of the JD Edwards EnterpriseOne server needs to communicate with JD Edwards EnterpriseOne clients through different ports.

serviceNameConnect

Port through which JDENet tries to initialize connections with other platforms. The default is jde_server (which is translated using the services file). Each instance of JD Edwards EnterpriseOne server needs to communicate with JD Edwards EnterpriseOne clients through different ports.

Also, verify that each version of JD Edwards EnterpriseOne has a unique set of libraries and database files. This is done using the ApplicationPathAddendum setting in the JDE.INI file.


14.8.4 Troubleshooting JDBNET

This table explains how to troubleshoot problems that can occur with JDBNET:

IssueResolution
You do not know how JDBNET is used.JDBNET processes database requests using a client and server. It can also be configured to process server-to-server requests. This is, one server functions as a JDBNET client and the other as a JDBNET server.

JDBNET eliminates the need for database-specific network software. All database requests are transported to the JDBNET server, processed in a local database, and the results are transported back to the JDBNET client.

You get an error that the data source on the JDBNET server is not found.The correct data source on the JDBNET server may not exist. Create a data source on the server that will be used by JDBNET. This is a normal configuration for a server data source that can be accessed by JDENet running on that server. Note the data source name (OMDATP) that will be used for the JDBNET client configuration.
You get an error that the data source on the JDBNET client is not found.The correct data source on the JDBNET client may not exist. Use the P98611 application to create a JDBNET data source in the F98611 table using this information:
  • Data source name (OMDATP field) is used to access tables as specified in the F986101 table.

  • Server name (OMSRVR field) identifies the JDBNET server.

  • Database name (OMDATB field) matches exactly the data source name (that is, the OMDATP field) to be used by the JDBNET server.

  • All other columns must match the values in the corresponding columns of the server data source. Set this data source as an active override in the F986101 table for all tables that will be accessed through JDBNET.

JDBNET does not transfer any dataThe network may not be running. End JD Edwards EnterpriseOne, clear IPC (using the IBM i CLRIPC command), and restart JD Edwards EnterpriseOne.
JDBNET does not transfer any dataThe JDBNET server and client may not be using the same server port number. Modify the serviceNameListen and serviceNameConnect fields in the [JDENET] section of both the JDBNET jde.ini files on the server and on the workstation. These values must match on both the JDBNET server and JDBNET client.

14.8.5 Troubleshooting Interprocess Communications

This subsection explains how to troubleshoot problems that can occur with Interprocess Communication (IPC).

IssueResolution
JD Edwards EnterpriseOne jobs cannot communicate with one another with these symptoms:
  • The PORTTEST program fails.

  • The security server on the IBM i fails.

  • UBE submissions fail.

If you activated ipcTrace in the [JDEIPC] section of the server jde.ini file, an error similar to this should appear in the JDEDEBUG.log:

IPC2100017 createIPC Msgq (name Port6005) failed, errno=3484: A damaged object was encountered

This could be because the IBM i release is pre-V4R2. In these releases, damaged IPC message queues might result when you end JD Edwards EnterpriseOne jobs using the command ENDJOB* IMMED.
  • Use the *CNTRLD option to end an IBM i job.

    Note: You might still have damaged IPC message queues if the IBM i-controlled ending times out.

  • Run these program to verify whether a damaged message queue exists. You must have V4R1 PTF# SF45946.

CALL QPOZIPCS PARM('-aqE')

This program generates a spool file called IPCS that contains information about message queues on the system. Look for these output:

KEY MODE

0x00000000 --------

0x00000000 --RW-------

0x00000000 --RW-------

0x00000000 --RW--------

0x00001234 D-RW----RW-

In this example, the message queue 0x00001234 is damaged. To fix, stop, and restart JDENET using these commands:

ENDNET

CLRIPC

STRNET

Also, if the ipcTrace setting in the [JDEIPC] section of the jde.ini file on the server is not set, activate the setting and run the PORTTEST program to determine whether any message queues are damaged. Look for the word damage in the JDEDEBUG.log file.

Note: Some of the message queues might be damaged even if the JDEDEBUG.log file does not indicate that any damage exists.


14.8.6 Troubleshooting the JDE.INI File

This section explains how to troubleshoot problems that can occur with the JDE.INI file. These notes apply to the .INI file in the E900SYS library:

  • It is composed of several sections.

    The section names are enclosed in square brackets, for example [JDENET].

  • Within each section are one or more keys or settings.

    The key name is on the left side of the equals sign, and the value of the key is on the right side.

  • Do not include spaces in the names or values of the keys unless you know that a space is required.

    Do not include spaces immediately before or after the equals sign.

  • Keys may be commented out by adding a semicolon (;) at the start of the key name.

  • We recommend that you place any incidental comments on a separate line adjacent to the key to which the comment applies.

    Be sure to include a preceding semicolon. Comments can be included at the end of the key's values, but these comments can be wrongly interpreted if they are not separated from the keys' values by enough white space. Because the amount of white space needed between the keys' values and the comments is not strictly defined, we recommend that you do not place comments after the values of the keys.

  • The section and key names are not case sensitive.

  • Many key values are case sensitive.

  • Although all of the following values may be used to turn a feature on, they may not be interchangeable as values in the .INI. Use a value that is comparable to the default value provided in the original .INI. Also, many values are case sensitive. If you have any questions about values, contact JD Edwards Global Support Center.

    • YES

    • ON

    • TRUE

    • 1

Likewise, these values may be used to turn a feature off. They are not necessarily interchangeable as values in the .INI.

  • NO

  • OFF

  • FALSE

  • NONE

  • 0

If you are told by JD Edwards Worldwide Customer Support Services to modify a key that does not exist, you can add the key. Just be sure that it is in the correct section.

14.9 Troubleshooting the UNIX/Linux Enterprise Server

This section provides an overview for UNIX/Linux enterprise server troubleshooting and discusses how to:

  • Troubleshoot the jde.ini file.

  • Troubleshoot JD Edwards EnterpriseOne file copying to a server.

  • Troubleshoot database table configuration.

  • Troubleshoot printer setup.

  • Troubleshoot email.

  • Troubleshoot multiple release setup.

  • Troubleshooting report file output location.

  • Troubleshoot JDBNET server not found.

  • Troubleshoot JD Edwards EnterpriseOne testing.

14.9.1 Understanding UNIX/Linux Enterprise Server Troubleshooting

This section discusses some typical problems that you might encounter and their solutions. When troubleshooting, follow these guidelines:

  • Check the logs.

    Many times, the logs point to the problem. As soon as you notice an error, examine the log files. Messages near the end of the log files will probably reveal the most important information about the cause of the error.

  • Try to narrow down the definition of any problem that you may have, particularly when communicating the issue to someone, such as JD Edwards Worldwide Customer Support Services.

    For example, rather than reporting that the batch application failed, explain how the batch application failed. The more specific the information, the faster the problem can be solved. For example, rather than reporting that "The report had the wrong data," say that "The batch status is E."

  • When communicating an error message to someone, include all parts of the error message exactly as they appear in the log file or on the screen.

    Parts of the message that may not seem important may actually hold the key as to why an error occurred. Also, distinguish between characters that might be misinterpreted, such as the capital letter O and the numeral zero (0).

  • Before you restart JD Edwards EnterpriseOne on the server, either delete or move the jde_xxx.log and jdedebug_xxx.log files (where xxx is a number).

    Do not rename the log files because it is easier to work with logs that use the standard naming convention (jde_xxx.log and jdedebug_xxx.log). If you need to save the log files until the problem is solved, then create a temporary directory and move the files.

  • Clear the log directory regularly to avoid filling the file system.

    If the file system fills up, then the specification files can become corrupted.

  • Always keep a backup of the specification files handy in case they become corrupted.

    Specification files should be backed up regularly for easy recovery of specification installs. If spec files have to be replaced, all specification installations will be lost if backups are not kept.

  • To find problems that occur due to server failure, go to the system/bin32 directory:

    grep -n failed *log* > problems.txt

    The file problems.txt will contain a list of errors with the file and line number.

  • Remember that UNIX is case-sensitive: jde.ini is not the same file as JDE.INI.


    Important:

    To complete the resolutions provided for this issues, you must sign on to the UNIX enterprise server using an account that has administrative privileges.

14.9.2 Troubleshooting the JDE.INI File

To locate the JDE.INI file, search in the system/bin32 subdirectory. For example, /u01/JDEdwards/E900/ini/JDE.INI. These notes apply to the JDE.INI:

  • It is composed of several sections.

    The section names are enclosed in square brackets; for example, [JDENET].

  • The environment variable $JDE_BASE should contain the location of the JDE.INI file.

  • If you copy the JDE.INI file to other directories (for example, the $SYSTEM/bin32 directory), the JD Edwards EnterpriseOne programs could read the wrong JDE.INI file.

    This error occurs because some programs might look for the JDE.INI file in the current directory before looking at the JDE_BASE environment variable.

  • Each section contains one or more keys.

    The key name is on the left side of the equal sign, and the value of the key is on the right side.

  • Do not include spaces in the key names or key values unless you know that a space is required.

    Do not include spaces immediately before or after the equal sign.

  • Keys can be commented out by adding a semicolon (;) at the start of the key name.

  • We recommend that you place incidental comments on a separate line adjacent to the key to which the comment applies.

    Be sure to include a preceding semicolon. Comments can be included at the end of the key value, but these comments can be incorrectly interpreted if they are not separated from the values of the keys by sufficient white space. Because the amount of white space between the values of the keys and the comments is not strictly defined, we recommend that you do not place comments after the values of the keys.

  • Section and key names are not case sensitive.

  • Many key values are case sensitive.

  • Although all of the following values activate a feature, they may not be interchangeable as values in the JDE.INI.

    Use a value that is comparable to the default value provided in the original JDE.INI. Also, many of these values are case sensitive. If you have any questions about values, contact JD Edwards Worldwide Customer Support Services.

    • YES

    • ON

    • TRUE

    • 1

These values turn a feature off. They are not necessarily interchangeable as values in the JDE.INI.

  • NO

  • OFF

  • FALSE

  • NONE

  • 0

If you are told by JD Edwards Worldwide Customer Support Services to modify a key that does not exist, you can add the key. Ensure that the key is in the correct section and entered with the correct spelling and case.

14.9.3 Troubleshooting JD Edwards EnterpriseOne File Copying to a Server

If you cannot copy files from the deployment server to the temporary directory on the enterprise server, this could be because ftp cannot connect. See the system administrator.

14.9.4 Troubleshooting Database Table Configurations

If results or errors occur that imply that OCM is not set up correctly, review the description in this guide of how OCM is used by JD Edwards EnterpriseOne.

14.9.5 Troubleshooting Printer Setup

If reports do not print from a server, verify the name of the default printer. Send a simple text file to the default printer using the lp command. If you get an error similar to these, then the printer is not configured on the server or is not online:

"lp: destination aPrinter non-existent"

Contact the system administrator for assistance.

For Linux, do not set up a print queue that translates files to postscript. The Linux print queues that are used by JD Edwards EnterpriseOne should generally be "raw" print queues that simply redirect the output of the file to the printer.

14.9.6 Troubleshooting Email

If the report, server package installation, or table conversion log file (in the PrintQueue directory) displays the message DoSendMessage Error: User 5600427 does not exist in the address book file (F0101), the particular user might not be found in the F0101 table. Add the user to the F0101 table.

14.9.7 Troubleshooting Multiple Release Setup

Each installed release of JD Edwards EnterpriseOne has its own JDE.INI in its ini directory. Point the user entries in the JDE.INI files to the directories of the log and other files. If the log files do not go to separate directories, change the appropriate keys in one or both JDE.INI files to point to unique directories for each installed instance of JD Edwards EnterpriseOne.

14.9.8 Troubleshooting Report File Output Location

If you cannot find the report output files, consider this information:

  • The location is specified as the OutputDirectory key of the [NETWORK QUEUE SETTINGS] section in the JDE.INI on the server.

    If this key is not found, the location is the PrintQueue subdirectory of the JD Edwards EnterpriseOne base directory (for example, /u01/JDEdwards/E900SYS/PrintQueue).

  • The JDE.INI file on the workstation may have the SaveOutput key of the [NETWORK QUEUE SETTINGS] section set to FALSE.

    This is because a problem after the report has been printed. After the report is printed, then the record will be deleted, as will the .PDF file. Change the value of the SaveOutput key of the [NETWORK QUEUE SETTINGS] section in the JDE.INI on the workstation to TRUE.

14.9.9 Troubleshooting JDBNET Server Not Found

If you get an error that the data source on the JDBNET server is not found, the correct data source on the JDBNET server might not exist. Create a data source on the server that will be used by JDBNET. This is a normal configuration for a server data source that can be accessed by JDENet running on that server. Note the data source name (OMDATP) that will be used for the JDBNET client configuration.

If you get an error that the data source on the JDBNET client is not found, the correct data source on the JDBNET client might not exist. Create a JDBNET data source in the F98611 table using this information:

  • Data source name (OMDATP field).

    Used to access tables as specified in the F986101 table.

  • Server name (OMSRVR field).

    Identifies the JDBNET server.

  • Database name (OMDATB field).

    Matches exactly the data source name (that is, the OMDATP field) to be used by the JDBNET server.

  • Shared library name (OMDLLNAME field).

    Identifies the JDBNET client .DLL. (libjdbnet.sl on HP-UX, libjdbnet.so on AIX).

  • All other columns must match the values in the corresponding columns of the server data source.

Set this data source as an active override in the F986101 table for all tables that will be accessed through JDBNET.

14.9.10 Troubleshooting JD Edwards EnterpriseOne Testing

If the PORTTEST program does not run successfully after startup:

  • If you have Oracle or UDB running on the enterprise server and the database and JD Edwards EnterpriseOne services are set to start automatically at system startup, JD Edwards EnterpriseOne services may start before the database is running completely.

    You must ensure that the database software is running before starting any JD Edwards EnterpriseOne processes.

  • If JD Edwards EnterpriseOne loses the connection to the database because either the network or database went down, you should see some sort of network or database error in the log files.

  • Stop the JD Edwards EnterpriseOne services, clear the logs, and then restart the JD Edwards EnterpriseOne services to see if the problem is resolved.

14.10 Troubleshooting the Microsoft Windows Enterprise Server

This section provides an overview of Microsoft Windows enterprise server troubleshooting and discusses how to:

  • Troubleshoot JD Edwards EnterpriseOne account setup.

  • Troubleshoot JD Edwards EnterpriseOne file copying to a server.

  • Troubleshoot database table configuration.

  • Troubleshoot printer setup.

  • Troubleshoot jde.ini file setup.

  • Troubleshoot finding the log files.

  • Troubleshoot testing with the PORTTEST program.

  • Troubleshoot running JD Edwards EnterpriseOne manually.

  • Troubleshoot finding report files.

  • Troubleshoot testing JD Edwards EnterpriseOne by submitting a report.

  • Take ownership of a printer.

  • Stop all JD Edwards EnterpriseOne processes.

  • Stop all JD Edwards EnterpriseOne processes without rights.

  • Troubleshoot email.

14.10.1 Understanding Microsoft Windows Enterprise Server Troubleshooting

This section discusses some typical problems that you might encounter and their solutions. When troubleshooting, follow these guidelines:

  • Narrow the definition of any problem that you might have, particularly when communicating the issue to someone, such as JD Edwards Worldwide Customer Support Services.

    For example, rather than reporting that the batch application failed, explain how the batch application failed. The more specific the information, the faster the problem can be solved. For example, rather than reporting that "The report had the wrong data," say that "The batch status is E."

  • When communicating an error message to someone, be sure to include all parts of the error message exactly as they appear in the log file or on the screen.

    Parts of the message that may not seem important may actually hold the key to why an error occurs. Also, distinguish between characters that might be misinterpreted (for example, the capital letter O and the number 0).

  • As soon as you notice an error, examine the log files.

    Messages near the end of the log files sometimes reveal the most important information about the cause of the error.

  • Before you restart JD Edwards EnterpriseOne on the server, either delete or move the jde_xxx.log and jdedebug_xxx.log files (where xxx is a number).

    Do not rename the log files; it is easier to work with logs that use the standard naming convention (jde_xxx.log and jdedebug_xxx.log). If you need to save the log files until the problem is solved, create a temporary directory and move the files there.

  • Clear the log directory regularly to avoid filling the file system. If the file system fills up, the specification files become corrupt.

  • Always keep a backup of the specification files in case they become corrupt.

    Specification files should be backed up regularly for easy recovery of spec installs. If specification files have to be replaced, all specification installations are lost unless backups are kept.


    Note:

    To complete the resolutions provided for this issues, you must sign on to the Microsoft Windows enterprise server using an account that has administrative privileges.

14.10.2 Troubleshooting JD Edwards EnterpriseOne Account Setup

If you cannot set up any accounts in the User Manager program, the account you are logged into in Microsoft Windows may not have the privileges to modify or add accounts. Log out of Microsoft Windows and log back on under the Administrator account or an account in the Administrators group.

14.10.3 Troubleshooting JD Edwards EnterpriseOne File Copying to a Server

If you cannot copy files from the CD to the JD Edwards EnterpriseOne directory on the enterprise server, verify that the CD is in the CD-ROM drive. Another cause is that one or more of the files to be copied is currently open on the CD:

  • Close any files on the CD that are open.

  • Close any applications that may have files open on the CD.

If one or more of the files that will be overwritten in the target directory is open:

  • Close any files in the target directory that are open.

  • Close any applications that may have files open in the target directory.

If the target disk is full:

  • Delete or move files from the target disk.

  • Copy JD Edwards EnterpriseOne to a different disk.

14.10.4 Troubleshooting Database Table Configuration

If the OCM is not set up correctly and errors occur, run the VerifyOCM program to ensure that the OCM tables are set up correctly.

14.10.5 Troubleshooting Printer Setup

If you cannot set up a printer:

  • The printer may not be attached (local printer) or the print server may not be available (network printer).

    Attach to the local printer or determine why the print server is not available.

  • The printer drivers may not be installed.

    Install the correct printer drivers.

14.10.6 Troubleshooting jde.ini File Setup

If you cannot find the jde.ini file:

  • Search in the system\bin32 subdirectory in the JD Edwards EnterpriseOne tree. For example, z:\JDEdwards\E900\ddp\system\bin32\ jde.ini.

  • Make sure you have access rights to the system\bin32 directory by logging on to Microsoft Windows as a user who has administrative rights.

14.10.7 Troubleshooting Finding the Log Files

If you cannot find the log files:

  • Log files are listed in the DebugFile and JobFile keys in the [DEBUG] section of the jde.ini.

    If there are no paths, the logs are in the system\bin32 directory. The log files are named according to these scheme:

    An underscore (_) and the process ID of the process that creates the log file are inserted before the period for example, jde_123.log or jdedebug_123.log for a process with an ID of 123.

    The log file associated with the DebugFile key contains the sequence of JD Edwards EnterpriseOne events. The default value for this key is jdedebug.log. The log file associated with the JobFile key contains error messages that occur in JD Edwards EnterpriseOne. The default value for this key is jde.log.

  • When a batch application is run and the jde.ini on the workstation has [NETWORK QUEUE SETTINGS] SaveOutput=TRUE, the jde_xxx.log and jdedebug_xxx.log files for the runbatch that processed the batch application is copied to a file in the PrintQueue directory.

    The root name of the files are the same as the name of the PDF file. The extension is .jde.log and .jdedebug.log. The duplication of these log files does not occur if the batch application runbatch.exe dies before duplication.

  • Verify that logging in the jde.ini is turned on using these settings in the [DEBUG] section:

    [DEBUG]
    
    LogErrors=1
    
    Output=FILE
    
    Variables and their descriptions:
    
    LogErrors
    
    0 = Do not generate logs.
    
    1 = Create logs.
    
    Output
    
    NONE = Do not write messages to any output device.
    
    AUX = Write messages to a console window.
    
    FILE = Write messages to log files.
    
    BOTH = Write messages to log files and console window.
    

If not enough relevant information is written to the log files, this could be because additional logging information needs to be turned on in the jde.ini. Set these keys in the jde.ini for additional output to the log files:

[JDENET]
netTrace=1
[JDEIPC]
ipcTrace=1
[DEBUG]
TAMTraceLevel=1
[UBE]
UBEDebugLevel=6
[TCEngine]
TraceLevel=10

These are the variables that you use to set logging options::

  • netTrace

  • 0 = Do not generate JDENet error messages (that is, communication between platforms).

  • 1 = Generate JDENet error message.

  • ipcTrace

  • 0 = Do not generate Interprocess Communication (IPC) error messages (that is, communication between processes on a single platform).

  • 1 = Generate IPC error messages.

  • TAMTraceLevel

  • 0 = Do not generate Table Access Management (TAM) error messages (that is, regarding specification files).

  • 1 = Generate TAM error messages.

  • UBEDebugLevel

  • 0 = Do not generate batch application error messages.

  • 1 = Generate increasingly detailed error messages (1 gives the least specific messages, whereas 6 gives the most detailed messages).

  • TraceLevel

  • 0 = Do not generate Table Conversion (TC) error messages.

  • 1-10 = Generate increasingly detailed error messages (1 gives the least detail, whereas 10 gives the most detail).

14.10.8 Troubleshooting Testing with the PORTTEST Program

If an error with the security server occurred:

  • Verify the JD Edwards EnterpriseOne network is running either as a service or started from a command prompt.

  • If the security server is inactive, or if it is active on a server and port that is different from the ones the PORTTEST program uses, perform one of these tasks:

    Start JD Edwards EnterpriseOne net on the server and port where the PORTTEST program is being run. The security server key in the [SECURITY] section of the jde.ini specifies the security server, and the serviceNameListen and serviceNameConnect settings in the [JDENET] section specify the ports.

    Change the name of the security server or the names of the ports, or both, in the jde.ini file to point to the correct security server.

  • Make sure that the JD Edwards EnterpriseOne network and the PORTTEST program are running under the same account:

    To determine under which account PORTTEST is running, press the Control, Alt, and Delete keys at the same time. If the JD Edwards EnterpriseOne network is running as a service, determine under which account it is running. To do this, select the service in Microsoft Windows Control Panel, then go to Services and click Startup.

    For initial testing, you can stop the JD Edwards EnterpriseOne network service, open a Windows command prompt, cd to the system\bin32 directory, run jdenet_n without any parameters, and rerun the PORTTEST program. When finished, stop jdenet_n from the Microsoft Windows Task Manager.

    To run the PORTTEST program under the same account as the JD Edwards EnterpriseOne network service, log out of Windows, log into the same account under which the service is running, open a Microsoft Windows command prompt, cd to the system\bin32 directory, and rerun the PORTTEST program.

  • To make sure the supplied user name and password, or both, match names and passwords, or both, in the JD Edwards EnterpriseOne security table:

    Run the PORTTEST program with a valid user name and password. Add the given user name and password to the JD Edwards EnterpriseOne security table.

If you get the message Invalid parms PORTTEST: <USER> <PWD> <ENV>, the correct number of arguments to PORTTEST may not have been included. Use these arguments:

  • User - A valid JD Edwards EnterpriseOne account name.

  • Password - Password for the JD Edwards EnterpriseOne account.

  • Environment - A valid JD Edwards EnterpriseOne environment.

  • Fewer than 99 records are written to the screen by PORTTEST.

If PORTTEST failed, examine the log files.

If fewer than 99 records exist in the F0902 table, this is not an error. You should review the log files for errors.

If the F0902 table is not accessible, verify that you can query the F0902 table using SQL.

If an error initializing the environment occurs in the log file, the environment may not have been set up correctly. See the chapter Understanding the JD Edwards EnterpriseOne Initialization for Windows in this guide for more information about how JD Edwards EnterpriseOne programs use OCM. Any errors in the affected jde.ini keys or database tables could cause the JD Edwards EnterpriseOne initialization to fail. The environment that PORTTEST uses is passed as a command line argument.

14.10.9 Troubleshooting Running JD Edwards EnterpriseOne Manually

  • If the JD Edwards EnterpriseOne network is not running, start the JD Edwards EnterpriseOne network service.

  • Verify the JD Edwards EnterpriseOne network is running by doing these:

    • The JD Edwards EnterpriseOne network should either be running as a service or from a Windows command prompt.

    • If it is running as a service, determine under which account it is running.

      To do this, select the JD Edwards EnterpriseOne network service in Microsoft Windows Control Panel, select Services, and then select Startup. Note the account name. If you are using Microsoft Windows 2000, select the JD Edwards EnterpriseOne network service in the Windows Control Panel, select Services, and then select Properties.

    • If it is run from a command prompt, the network is running under the Microsoft Windows account you signed on to.

      When you log off Microsoft Windows, network processes started from a command prompt and all child processes will terminate.

  • If the setup of some part of JD Edwards EnterpriseOne, such as the jde.ini file or OCM, is incorrect, determine if PORTTEST runs correctly.

    If not, correct those problems and then try running JD Edwards EnterpriseOne manually.

If an error initializing the environment occurs in the log file, the setup for some part of JD Edwards EnterpriseOne, such as the jde.ini file or OCM, may be incorrect. Examine the applicable problems in the "Testing with the PORTTEST Program" section in this chapter. Determine if the PORTTEST programs runs correctly. If not, correct those problems, and then try running JD Edwards EnterpriseOne manually.

14.10.10 Troubleshooting Finding the Report Files

If you cannot find the report output files:

  • Check the OutputDirectory key of the [NETWORK QUEUE SETTINGS] section in the jde.ini file on the server.

    If there is no location, listed, the files are in the PrintQueue directory of the JD Edwards EnterpriseOne base directory. For example, z:\JDEdwards\E900\ddp\PrintQueue.

  • Verify that SaveOutput in the [NETWORK QUEUE SETTINGS] section in the jde.ini file on the workstation is TRUE.

14.10.11 Troubleshooting Testing JD Edwards EnterpriseOne by Submitting a Report

  • If a time-out occurred because the JD Edwards EnterpriseOne server was started after the client, resubmit the report.

  • If a time-out occurred due to heavy network traffic or server load, increase the time-out value in the jde.ini file on the workstation and resubmit the report.

    Use the JDENETTime-out setting in the [NETWORK QUEUE SETTINGS] section.

  • If the wrong communications port is being used, perform one of these tasks:

    • Verify that the serviceNameListen value in the [JDENET] section of the jde.ini file on the workstation matches the serviceNameConnect value in the [JDENET] section of the jde.ini file on the server.

      In addition, the serviceNameConnect value in the jde.ini file on the workstation must match serviceNameListen in the jde.ini file on the server. If the values of these keys are strings, the numeric value is retrieved from the services file in the c:\winnt\system32\drivers\etc directory (Microsoft Windows: client or server).

    • The services file contains a list of strings and their corresponding port numbers.

      If the port that you are interested in is on the last line of the services file, be sure to include a return at the end of the line or else the string will not be translated to the corresponding port number.

  • If the client is using Dynamic Host Configuration Protocol (DHCP) and the server does not have an entry for itself in its hosts file in the c:\winnt\system32\drivers\etc directory, add an entry for the server in the hosts file on the server.

  • These situations can occur:

    • Communications failure error message on the workstation.

    • Restarting Network Service or jdenet_n sometimes gets rid of the error.

    • You can ping the server from the workstation.

    These issues can occur because the server has two network cards, which confuses JDENET when the net communications are initialized between the client and server. One machine tries to connect using one network card, and the other machine connects using the other network card.

    The hosts file on the server should list two different IP addresses for the server--one for each network card. Resolve the error by setting the NetHostName field in the [JDENET] section of the jde.ini to one of the names for the server given in the hosts file. JDENET then uses the IP address associated with the given network card.

  • For the error cannot connect to printer in the jde_xxx.log or the log file in the PrintQueue subdirectory:

    • If a general printing error occurred, try to print a text document from Notepad.

      Resolve any issues.

    • If no default printer is set up on the enterprise server, set up a printer using the task Add a new printer or Modify an existing printer in the JD Edwards EnterpriseOne Tools 8.94 Implementation Guide: System Administration.

    • If you do not have privileges to the printer, define the owner as a local or network account.

      The type of account depends on the type of printer. If the printer is a local printer, the owner could be either a local or network account but either type must have privileges to access the printer. If the printer is a network printer, the owner must be a network account with access privileges.

  • All jobs sent to this printer using the current server will conform to the selected orientation.

    Note that the report template or other programs may override this default orientation. If you cannot change the printer orientation, you may not have the right to change the orientation. Log on to Microsoft Windows in an account that has administrative rights for the printer. For a local printer, use an account that has administrative privileges. For a network printer, use an account given administrative privileges by a network administrator.

    If the report does not list any data, the data may not exist in the database for the report that you are running, or you do not have access to the data. Perform one or more of these tasks to resolve the data issue:

    • Select a different report.

    • Add data to the database.

    • Change the processing options for the report.

    • Change the OCM and data sources to point to the correct database.

  • If the report is launched on the server, verify the vertical tables in the server OCM match those in the workstation OCM.

    If you believe data should have been found, edit the report jdedebug.log found in the PrintQueue subdirectory.

    Search for the SQL select statement used to retrieve data from the database. You must have some idea what data is being read to do this.

    • Copy the SQL statement.

    • Open the specific database SQL command interface - for example, SQL Plus or ISQL_w.

    • Paste the SQL statement into the SQL command interface.

    • Submit the SQL statement.

  • If no data is found, one of these conditions may be true:

    • No data exists.

    • The processing options are incorrect.

    • The OCM for either the client or server is pointing to the wrong data source.

    • The data sources for either the client or server are pointing to the wrong database.

    • The SQL statement is incorrect (possibly due to a program bug).

    • The database drivers are out of date.

    • If an error occurred with the report, look in the jde_xxx.log for error messages.

  • If an error initializing the environment occurs in the log file, the environment may not be set up correctly.

    Stop JD Edwards EnterpriseOne and determine if the PORTTEST program runs correctly. If not, correct those problems and then run JD Edwards EnterpriseOne manually.

14.10.12 Taking Ownership of a Printer

To take ownership of a printer:

  1. From the Microsoft Windows Start menu, select Settings, Printers.

  2. Right-click the desired printer.

  3. Select Properties,, and then select the Privileges tab.

  4. Click Ownership and Take Ownership.

    If the printer drivers are not installed, see the section Database Driver Files in this guide for information about which drivers you need.

    If the report printouts are in portrait mode but should be in landscape mode (or vice versa), verify that the orientation specified in RDA for the report is correct.

    If the default printer is set to the wrong orientation, set the orientation using these task:

  5. From the Microsoft Windows Start menu, select Settings, Printers.

  6. Right-click the desired printer.

  7. Select Document Defaults.

  8. Select the desired default orientation.

  9. Click OK.

14.10.13 Stopping All JD Edwards EnterpriseOne Processes

If you need to stop the JD Edwards EnterpriseOne processes that you started from the command prompt, for example, jdenet_n, stop any of these processes that are running:

  • Jdenet_n.exe

  • Jdenet_k.exe

  • Runbatch.exe

  • ipcsrv.exe

These additional processes, such as jdenet_k and runbatch, are started by jdenet_n a-cnd queue kernel.

To stop all JD Edwards EnterpriseOne processes:

  1. Run the Microsoft Windows Task Manager.

  2. Select the Processes tab.

  3. Select one of the running processes.

  4. Click End Process.

  5. Repeat for each process to be stopped.

14.10.14 Stopping JD Edwards EnterpriseOne Processes Without Rights

Use this task if you do not have the rights to stop the processes.

To stop JD Edwards EnterpriseOne processes without rights:

  1. Log on to Microsoft Windows in an account that has rights to stop processes.

  2. Stop processes using Visual C++.

  3. Run the Microsoft Windows Task Manager.

  4. Select the Processes tab.

  5. Select one of the running processes.

  6. Click Debug Process.

    Visual C++ starts.

  7. Click the X in the upper right-hand corner to close Visual C++.

    Do not save the project workspace. This ends the runaway process.

  8. Repeat these steps for each runaway process.

    If they still do not end, reboot the machine.

14.10.15 Troubleshooting Email

If the report, server package installation, or table conversion log file in the PrintQueue directory displays the message DoSendMessage Error:

User 5600427 does not exist in the address book file (F0101).

This could be because the particular user is not found in the F0101 table. Add the user to the F0101 table.

14.11 Troubleshooting Web Servers

This section provides an overview of web server troubleshooting and discusses how to:

  • Troubleshoot IIS and IBM HTTP web servers.

  • Troubleshoot JAS.

  • Troubleshoot serialized database and generation issues.

  • Troubleshoot SQL server issues.

  • Troubleshoot problems using log files.

14.11.1 Understanding Web Server Troubleshooting

This section discusses some typical issues you might encounter when using WebSphere and Java Application Server (JAS). It also explains other issues you might encounter with web servers and how to track down problems by using the log files in Server Manager.

14.11.2 Troubleshooting IIS and IBM HTTP Web Servers

If you need to configure with IIS and an IBM HTTP Server, refer to the installation documentation.

If you receive the message Recursive error - page not found, you need to make sure IIS is running for a particular instance of JAS. IIS instances can be stopped easily, and the user may forget to restart them. To make sure IIS is running for the particular instance of JAS, verify IIS instance properties by selecting the appropriate instance, and then right-clicking and choosing Properties. Confirm that the correct paths are listed for the desired JAS code.

14.11.3 Troubleshooting JAS

If no logs appear, verify that the [LOGS] setting in the jas.ini has logging turned on and points the log files to reside in the desired location (for example, ;log=d:\E900\internet\jas.log or ;debuglog=d:\E900\internet\jasdebuglog). If the log file paths are not correctly stipulated, the logs may be writing to a file located elsewhere.

If JAS seems slow, check to see whether jdbcTrace is set to TRUE or FALSE. If tracing is turned on or set to TRUE, the additional logging will dramatically slow JAS performance.

14.11.4 Troubleshooting Serialized Database and Generation Issues

If you receive the message "Form is out of date...most likely needs to be regenerated," this error usually occurs because the specifications used to construct the serialized database do not match the JAS code. Ensure that the date the JAS code was written matches the date of the jdecom.dll that resides in the E900\system\bin32 directory of the generating machine.

Also be sure to register the jdecom.dll. After you run the regsvr32 jdecom.dll command, the eGenerator recognizes the jdecom.dll and uses it to fetch JD Edwards EnterpriseOne specs and convert them into Java serialized objects.

If the menu does not appear when the user signs on to JD Edwards EnterpriseOne, check for these conditions:

  • [JDBC URL] section in jde.ini is set correctly or [JDBC DRIVERS] is set correctly.

    The [JDBC URL] points to the serialized database (the one you just set up).

  • Bounce the WebSphere application server.

    Menus are cached, and by bouncing the server you clear the cached information.

  • Ensure that the host database for serialized objects is running.

14.11.5 Troubleshooting SQL Server Issues

If SQL Server process or Oracle process consumes excess CPU in a web server environment, the serialized objects for the web server are stored in either SQL server or the Oracle database. The web server must access these tables frequently when running an application. Indexes may be missing, which can cause severe performance problems.

Ensure that all existing JD Edwards EnterpriseOne indexes are created for tables F989998 and F989999. You should have one index for F989998 for columns WBJOBID and WBOID. You should also have one index for F989999 for columns WBUID, WBOID, WBLNGPREF. If these indexes do not exist in the database, generate them using Object Librarian.

Add a new index to the F989999. This index should include columns WBOID, WBUID, and WBJVER. Generate this index over the F9899999 table.

Update statistics on both tables as follows:

  • For Oracle, issue these commands in SQL *Plus:

    ANALYZE TABLE owner.F989999 COMPUTE STATISTICS
    
  • For SQL Server, issue these commands:

    UPDATE STATISTICS owner.F989999
    
    UPDATE STATISTICS owner.F989998
    

Improvements vary depending on the number of users accessing the serialized database.

14.11.6 Troubleshooting Problems Using Log Files

If you need to view logging information for the Java client, open the Java Console by choosing Java Console from the View menu in Internet Explorer. The Java Console displays all problems that the Java Virtual Machine on the client is having. Errors appear as uncaught exceptions in the console.


Note:

You must have the appropriate internet options turned on to view the Java Console.

To enable the Java Console in Internet Explorer, select Tools, and then select Internet Options. In Internet Options, click the Advanced tab, scroll down to the section titled Java VM, and select these options:

  • Java Console enabled.

  • Java logging enabled.

  • JIT compiler for virtual machine enabled.

If you need to troubleshoot errors in web applications:

  • Verify that the problem is only a problem on the web.

    Test the fat client version of the same application against the same enterprise server that the web is using. Make sure that you use the same JD Edwards EnterpriseOne accounts and environments.

  • Determine whether the problem happens in HTML, Java, or both.

    Since both Java and HTML use the Java runtime engine, they should behave the same. Some variation exists based on the inherent differences between the Portal, HTML page processing and Java interactive processing, but underlying functionality and processing should be the same.

  • Re-create the problem on the web server.

    The logs will work in the Portal, HTML, and Java.

  • Open a separate Internet Explorer browser and use it to access the Web Server Monitor for the web server being used.

  • Check the Standard Error Log (stderr.log) for errors.

    A common error you might see here is BSFN Failed. If you see this error, verify that the enterprise server is up and that the BSFN is not a T1 BSFN.

    T1 refers to Type 1 business functions, which are client-only business functions. They cannot run on a server.

  • Check the Standard Output Log (stdout.log) for more information.

    For example, you can view the time and date stamps from the errors found in both the Jas.log and the standard error log to find more detailed information about what was occurring at about the same time that the errors occurred.

If you need more information, enable Debug.log and set Net Trace, which you can do in the [LOGS] section of jas.ini file. Re-create the problem, view the Debug.log, and look for more information.

You can also use the Server Manager to monitor web servers.

Try to find SQL statement information. SQL statements can give you an idea of what values are being passed. Some common failures include:

  • Form Interconnects are passing incorrect information.

    Verify that the fat client is working correctly. Watch especially for null, blank, and zero problems, as well as special characters.

  • String is too big.

    Note carefully what you did to get this error.

  • Null values are being passed.

    The SQL statement information search will result in nothing being found. Check the SQL statements and make sure that correct values were passed. Determine where the failure occurred and make a note of it.

  • The application stops responding.

    Check logs for BSFN failures.

PK --PKƉZEOEBPS/backing_up_e1_tables.htm Backing Up JD Edwards EnterpriseOne Tables

10 Backing Up JD Edwards EnterpriseOne Tables

This chapter contains the following topics:

10.1 Understanding Backup Requirements for Servers

A well-planned backup strategy is essential to protect the enterprise information assets. Rigorously following the backup strategy will provide insurance against data lost by acts of nature, hardware or software failure, or human error. The backup strategy must balance the level of protection you need against the physical constraints of the system, such as information storage capacity.

We recommend that the backup strategy include these:

  • Perform a full system backup whenever data is at risk, such as when you are installing or upgrading software. In this circumstance, at least back up the database completely.

  • Each night, back up changed objects, such as tables and JD Edwards EnterpriseOne objects.

  • Each week, back up the deployment server, enterprise servers, and the full database.

When you perform a backup on a server, you can back up either the entire server or only the changed objects and data. You do not need to perform a complete backup of the server nightly. Only directories that change daily require daily backups.


Note:

You should outline and implement the backup strategy before you begin the Prototype phase of implementation.

10.1.1 Backing Up a Deployment Server

JD Edwards EnterpriseOne on the deployment server includes these items:

  • JD Edwards EnterpriseOne directory (all subdirectories and contents).

  • jde.ini file on c:\winnt.

  • Services file on c:\winnt\system32\drivers\etc.

  • Registry export file.

  • JD Edwards EnterpriseOne files in the root directory (c:\):

  • jdeapp.ddp

  • jdeapp.xdp

  • jdeauth.dda

  • jdeauth.xda

  • jdemod.ddm

  • jdemod.xdm

  • jdesec.dds

  • jdesec.xds

  • jdecode.ddm

  • jdecode.xdm

If you modify objects, build new packages, or update the Access database delivered during a workstation installation, create backups of the PD900, DV900, and PY900 directories. If you modify help files, create a backup of the HELPS directory. If the media objects reside on the deployment server, create a backup of the MEDIA OBJ directory.

If important data, such as system data, resides on the deployment server, create nightly backups of the JD Edwards EnterpriseOne data sources (Oracle or SQL Server). For example, if the central objects or Object Management Workbench resides on the deployment server, create a nightly backup.

10.1.2 Backing Up an Enterprise Server

JD Edwards EnterpriseOne on the enterprise server runs on the IBM i, UNIX, or Windows operating systems. You back up key libraries on the IBM i and key files on the UNIX and Windows operating systems.

IBM i

These JD Edwards EnterpriseOne IBM i libraries should be backed up:


Note:

Shut down the database before you create any backups.

  • All JD Edwards EnterpriseOne system libraries.

    • JDEOW

    • SYS900

    • E900SYS

    • SVM900

    • JD Edwards EnterpriseOne data dictionary library: DD900.

    • JD Edwards EnterpriseOne Object Management Workbench library: OL900.

  • All JD Edwards EnterpriseOne production libraries (This example is for pristine and production):

    • PD900

    • PY900

    • PRODDTA

    • PRSTDTA

  • All JD Edwards EnterpriseOne business data libraries:

    • PRODDTA

    • CRPDTA

    • PRSTDTA

    • TESTDTA

  • All JD Edwards EnterpriseOne control libraries:

    • PRODCTL

    • CRPCTL

    • TESTCTL

    • PRSTCTL

  • All JD Edwards EnterpriseOne versions libraries:

    • PD900DNT

    • PY900DNT

    • PS900DNT

    • DV900DNT

  • IFS (Integrated File System) libraries:

    • PD900

    • PY900

    • PS900

    • TS900

    • DV900

  • IBM libraries that require backups:

    • OCPA

    • OGPL

    • Central objects on the deployment server in Oracle or Microsoft SQL Server database.

UNIX

On a JD Edwards EnterpriseOne UNIX system, backup these database files:


Note:

Shut down the database before you create any backups using Backup Manager. If you export or import using Data Manager, you do not need to shut down the database.

  • System files

    Create backups of all host files under the JDEdwards/E900 directory. For example, /u03/JDEdwards/E900/*.

  • Database files

    Create backups of all data files that reside in the JD Edwards EnterpriseOne tablespaces.

    Use the Oracle Data Manager Tool on the deployment server to make a .dmp file of the desired database, and then back up the .dmp file on tape or hard disk.

Windows

On a JD Edwards EnterpriseOne Windows system, back up these database files:


Note:

Shut down the database before you create any backups.

  • System files.

    JDEdwards\ddp\E900 directory.

  • Oracle database files.

    Create backup files for all data files that reside in the JD Edwards EnterpriseOne tablespaces

    Use the Oracle Data Manager Tool on the deployment server to make a .dmp file of the desired database, and then back up the .dmp file on tape or hard disk.

  • Microsoft SQL Server database files.

    Create backup files for all tables that reside in the JD Edwards EnterpriseOne databases.

    Use the SQL Server Database/Object Transfer tool on the enterprise server to copy the desired tables or database (for example, PSFT900) to a backup database.


    Note:

    We recommend that you use the backup tool provided by the RDBMS vendor.

10.1.3 JD Edwards EnterpriseOne Tables and Object Owner IDs

These tables list JD Edwards EnterpriseOne tables by type and with the associated object owner IDs.


Note:

If any of the control table merges fail or if the specification merge fails, you might need to restore the tables to a pre-merge condition and run the merge again. Follow the restore instructions for the database.

System Tables

The Object Owner for System tables is sys900.

  • F00053

  • F000531

  • F000532

  • F0092

  • F00921

  • F00924

  • F0093

  • F0094

  • F00941

  • F00942

  • F00945

  • F00946

  • F00948

  • F00950

  • F00960

  • F99001

  • F986101

  • F98611

  • F986115

  • F986116

  • F98613

  • F986150

  • F986151

  • F986152

  • F98616

  • F986161

  • F986162

  • F986163

  • F986164

  • F986165

  • F98701

  • F98800D

  • F98900D

  • F9882

  • F98825

  • F9883

  • F9885

  • F9886

  • F9887

  • F9888

  • F98881

  • F98882

  • F98885

  • F98887

  • F9889

  • F98891

  • F98892

  • F98980

  • F98CONST

  • F98DRENV

  • F98DRLOG

  • F98DRPCN

  • F98DRPUB

  • F98DRSUB

  • F98EVDTL

  • F98EVHDR

  • F98MOQUE

  • F98OWSEC

  • F98TMPL

  • F98VAR

Object Management Workbench (OMW) Tables

The Object Owner for OMW tables is obj900.

  • F00165

  • F9860

  • F9861

  • F9862

  • F9863

  • F9865

Data Dictionary Tables

The Object Owner for the Data Dictionary tables is dd900.

  • F00165

  • F9200

  • F9202

  • F9203

  • F9207

  • F9210

  • F9211

Server Map Tables

The Object Owner for Server Map tables is svm900.

  • F986101

  • F98611

  • F986110

  • F986111

  • F986113

  • F98DRPCN

  • F98DRLOG

Control Tables

The Object Owners for the Control Tables are:

  • Control Tables - PROD: prodctl

  • Control Tables - CRP: crpctl

  • Control Tables - TEST: testctl

  • Control Tables - PS900: prstctl

The Control Tables are listed:

  • F0002

  • F00021

  • F0004

  • F0004D

  • F0005

  • F0005D

  • F0082

  • F00821

  • F00825

  • F00826

  • F0083

  • F0084

Versions Tables

The Object Owners of the Versions tables are:

  • Versions - PD900: PD900

  • Versions - PY900: PY900

  • Versions - DV900: DV900

  • Versions - PS900: PS900

The Versions tables are listed:

  • F983051

  • F98306

Central Objects

The Object Owners of the Central Objects tables are:

  • Central Objects - PD900: pd900

  • Central Objects - PY900: py900

  • Central Objects - DV900: dv900

  • Central Objects - PS900: PS900

The Central Objects tables are listed:

  • F980011

  • F980021

  • F983051

  • F98306

  • F98710

  • F98711

  • F98712

  • F98713

  • F98720

  • F98740

  • F98741

  • F98743

  • F98745

  • F98750

  • F98751

  • F98752

  • F98753

  • F98760

  • F98761

  • F98762

  • F98950

Business Data

The Object Owners of the Business Data tables are:

  • Business Data - PROD: proddta

  • Business Data - CRP: crpdta

  • Business Data - TEST: testdta

  • Business Data - PS900: prstdta

10.2 Backing Up JD Edwards EnterpriseOne Tables on Servers

This section discusses how to:

  • Create a backup for IBM i.

  • Creating a backup for Oracle on UNIX or Windows.

  • Creating a backup for SQL Server.

  • Restoring a backup file for Oracle on UNIX or Windows.

  • Restoring a backup file for IBM i.

  • Restoring a backup file for SQL Server.

  • Restoring a backup file for SQL Server on Windows.

10.2.1 Prerequisites

Before you complete the tasks in this section:

  • If you are using SQL Server or Oracle, verify that you have enough disk space for the backup copy before you begin the backup.

  • If you are using SQL Server, verify that the Select Into/Bulk Copy option on the Options form is turned on for the database into which you will transfer objects. Double-click the database in the tree structure to access the Options form.

10.2.2 Creating a Backup for IBM i

To create a backup for IBM i:

  1. On a tape drive, back up these libraries, depending on which path codes you have installed:

    Library nameDescription
    SYS900System library
    SVM900Server Map
    OL900Object Librarian
    DD900Data Dictionary
    COPY900Central Objects - Prototype
    COPS900Central Objects - PS900
    COPD900Central Objects - PROD
    CODV900Central Objects - DEV
    PRODDTAProduction Business Data
    PRODCTLProduction Control Tables
    CRPDTAPrototype Business Data
    CRPCTLPrototype Control Tables
    TESTDTATest Business Data
    TESTCTLTest Control Tables
    PRSTDTAPristine Business Data
    PRSTCTLPristine Control Tables
    PY900DNTVersions for CRP
    PD900DNTVersions for PROD
    PS900DNTVersions for PRST
    DV900DNTVersions for DEV
    E900SYSServer system library
    JDEOWJD Edwards Installation
    PY900Server modules - Prototype
    PY900FAPackage Library - Prototype
    PS900Server modules - PS900
    PS900FAPackage Library - PS900
    PD900Server modules - PROD
    PD900FAPackage Library - PROD
    DV900Server modules - DEV
    DV900FAPackage Library - DEV

  2. Back up these IFS structure with the subdirectories:

    Library nameDescription
    PSFT900Logging directory
    E900SYSKernel spec and XML
    PY900Spec files for Prototype
    PS900Spec files for PSFT
    PD900Spec files for PROD
    DV900Spec files for DEV
    JD EdwardsContains the spec files for each path code.

    \JDEdwards\PACKAGES\PY900FA\SPEC\*.*

    \JDEdwards\PACKAGES\PS900FA\SPEC\*.*

    \JDEdwards\PACKAGES\PD900FA\SPEC\*.*

    \JDEdwards\PACKAGES\DV900FA\SPEC\*.*


10.2.3 Creating a Backup for Oracle on UNIX or Windows

To create a backup for Oracle on UNIX or Windows:

  1. From the Oracle Enterprise Manager Tool, open Data Manager and from the Data menu, select Export.

  2. Type the name for the export utility .dmp file.

    Click the Browse button to select the directory where the .dmp file will reside.

  3. Click Next.

  4. On the Object Selection form, select the objects you want to back up, and then click Next.


    Note:

    Objects selected in the tree on the Data Manager form appear in the Selected Objects form. You can move objects between forms using the arrow buttons or by dragging and dropping.

    To export objects, expand the Available Objects tree and select the item to export. Use the arrows to move objects to and from the Selected Objects form.

  5. On the Tuning form, select generate a log file, if needed.

  6. Click Next.


    Note:

    Select the Generate Log File option and enter a log file name or use Browse to select a log file.

  7. On the Advanced Options form, take the default values or select the desired options, and click Next.

  8. On the Summary form, verify that all of the chosen objects and options are correct.

  9. Click Finish to begin exporting objects.

    A message window opens that displays information about the progress of the export process.

    When the export process is completed, you will receive these message: "Export terminated successfully without warnings."

  10. If errors or warnings exist, check the log file to review the export process.

10.2.4 Creating a Backup for SQL Server

To create a backup for SQL Server:

  1. From SQL Enterprise Manager, select Database/Object Transfer from the Tools menu.

  2. On the Database/Object Transfer form, select a destination server and database on which to create backup copies of the tables.


    Note:

    The source server and the destination server can be the same, but the database must be different.

  3. Keep all default settings and then click the Start Transfer button.

    The Database/Object Transfer tool moves the objects.

  4. Perform either of these tasks to verify whether the backup was successful:

    • When the process completes the transfer, click the View Logs button to review the transfer process.

    • Run a SELECT statement to verify that the backup tables transferred to the new database with data.

10.2.5 Restoring a Backup File for Oracle on UNIX or Windows

To restore a backup file for Oracle on UNIX or Windows:

  1. From the Oracle Enterprise Manager Tool, open Data Manager and from the Data menu, select Import.

  2. Type the name of the import utility .dmp file.

  3. Click Next.

  4. On the Object Selection form, select the objects you want to restore and click Next.

    The Importable Objects tree contains the objects that are importable in the file you specified. To move the object to the Selected Objects tree, select an object in the tree and click the down arrow.


    Note:

    When the .dmp file is on a remote machine, Data Manager uses the Console job and event system to retrieve the file before displaying the data through the Import Wizard. The Remote Import page of the Import Wizard has a status line at the top of the page that displays the progress of data retrieval. The Oracle Enterprise Manager Console must be running.

    Three conditions can be displayed: Job Submitted, Job Started, and Job Completed.


    Note:

    Data retrieval must complete successfully before beginning the import operation.

    The Selected Objects/Available Objects tree contains the objects to be imported. To remove an object from the list, select the object and use the up arrow or drag and drop.

  5. Click Next.

  6. On the Associated Objects form, accept the defaults and click Next.

  7. On the Tuning form, you can generate a log file, if needed.

  8. Click Next.


    Note:

    Select the Generate Log File options and enter a log file name or use Browse to select a log file.

  9. On the Advanced Options form, select the Increment Type. If you followed the instructions to create a backup, select None for Increment Type and click Next.

  10. On the Summary form, verify that all selected objects and options are correct.


    Note:

    You must drop the existing objects in the database that you want to restore or the import process will fail.

  11. Click Finish to begin importing objects.

  12. When the import process is completed, you will receive these message: "Process terminated successfully with no warnings."

    If errors or warnings exist, check the log file to review the export process.

  13. Perform a SELECT statement to verify that the backup tables are populated with data.

10.2.6 Restoring a Backup File for IBM i

To restore a backup file for IBM i:

Restore the libraries and IFS directories that you backed up from tape.

10.2.7 Restoring a Backup File for SQL Server

To restore a backup file for SQL Server:

  1. Verify that the Choose Into/Bulk Copy option on the Options form is turned on for the database into which you will transfer objects.

    Double-click the database in the tree structure to access the Options form.

  2. From SQL Enterprise Manager, select Database/Object Transfer from the Tools menu.

  3. On the Database/Object Transfer form, select a destination server and database from which to transfer backup copies of the tables.


    Note:

    The source server and the destination server can be the same, but the database must be different.

  4. Deselect the Transfer All Objects option, but keep all of the other default settings.

  5. Click the Choose Objects button, select the objects that you want to transfer, and then click OK to return to the Database/Object Transfer form.

  6. Click the Start Transfer button.

    The Database/Object Transfer tool moves the objects.

  7. Perform either of these to verify whether the backup was successful:

    • When the process completes the transfer, click the View Logs button to review the transfer process.

    • Run a SELECT statement to verify that the backup tables transferred to the new database with data.

10.2.8 Restoring a Backup File for SQL Server on Windows

To restore a backup file for SQL Server on Windows:

  1. Verify that the Select Into/Bulk Copy option on the Options form is turned on for the database into which you will transfer objects.

    Double-click the database in the SQL Enterprise Manager tree structure to access the Options form.

  2. Generate scripts for the tables you want to restore and then drop the tables.

  3. Use SQL to recreate the scripts for the tables.

  4. From the command line, type this command:

    bcp [[database_name.]owner.] table_name(in|out) datafile /n /u /p /s
    
  5. Perform a SELECT statement to verify that data populates the backup tables.

PK0oDԕʕPKƉZE OEBPS/monitoring_wsg_servers.htmKs Monitoring System Web Services Gateway (WSG) Servers from the Web

5 Monitoring System Web Services Gateway (WSG) Servers from the Web

This chapter contains the following topics:

5.1 Understanding Monitoring System Web Services Gateway (WSG) Servers from the Web

The System Web Services Gateway Server Monitor enables you to use the web to monitor a WSG Broker Server. The server-monitoring APIs for ActiveWorks are available in Java code, and JD Edwards EnterpriseOne uses them to provide the WSG Server Monitor.

5.2 Monitoring System Web Services Gateway (WSG) Servers from the Web

To monitor an WSG server, you must enter a valid host name and port number in the WSG Server Monitor workspace. From the dialog box in the workspace, you can select from five views:

  • Broker Summary

  • Event Types

  • Client Groups

  • Client States

  • Broker Logs

5.2.1 Broker Summary View

The Broker Summary view enables you to monitor information about one or more brokers running on the Broker Server. The broker provides essential system services, such as receiving, sending, and queuing events. Events are messages sent to and received by resources in the system, including client workstations and other servers.

To view broker summary information, enter a host name and port number in the WSG Server Monitor workspace, and then select Broker Summary from the dialog box and click the Monitor button.

The Broker Summary view appears.

The Broker Summary view contains a table with various parameters, the values of which provide information about one or more brokers running on the server. This table identifies the parameters and offers a brief explanation of each one:

Parameter in Table of Broker Summary ViewParameter Meaning
NumberThe number of the broker.
Broker NameThe name of the broker. The default name is Broker # 1.
Broker HostThe Broker Server on which the broker is running.
TerritoryA set of brokers that share information about event types and client groups.
DescriptionA full description of the broker, provided when the broker is installed on the server.
Event TypesTypes of messages received and sent by the broker.
Client StatesInformation about a client maintained by the broker. Clients connect to brokers.
Client GroupsA list of all client groups on the broker. A client group is a set of properties shared by broker clients.

The Event Types, Client States, and Client Groups parameter columns contain magnifying glass buttons you can click to view more detailed information about each one. Each of these parameters has its own view, which you can access from the dialog box in the Broker Summary view or in the WSG Server Monitor workspace.

The Broker Summary view also displays:

  • Number of non-SSL (Secure Sockets Layer) connections.

  • Highest number of non-SSL connections.

  • Number of SSL connections.

  • Highest number of SSL connections.

  • Server disk space, in megabytes.

You can view details about the server on which the broker is running by clicking the Server Statistics URL.

5.2.2 Event Types View

An event type defines the properties of an event, including the data fields that the event carries, the event's unique name, and a storage type, which defines how the broker stores the event.

The word events, when it is used in discussing the WSG Server Monitor, corresponds to the word messages, as that word is used in discussing the Enterprise Server Monitor. Events are messages exchanged by resources in the system. For example, an event might be processing a purchase order. To process a purchase order, the client and broker communicate.

When you select Event Types from the WSG Server Monitor workspace and click the Monitor button, the Event Types view appears.

The Event Types view contains a table with various parameters, the values of which provide information about the event types handled by the broker. This table identifies the parameters and offers a brief explanation of each one:

Parameter in Table of Event Types ViewParameter Meaning
Event NameThe unique name of the event.
DescriptionA description of the function of each event.
Storage TypeAn event attribute that determines how the event is stored in the broker. Storage types are:
  • Guaranteed, which means that events are stored on disk using a logged commit.

  • Persistent, which means that events are stored on disk using operating asynchronous input/output.

  • Volatile, which means that events are stored in memory.

Time to LiveThe amount of time that an event type can exist in the broker.
FieldsThe names and types of each data field within the event type.

You can view information about the data fields for each event type by clicking the magnifying glass button in the Fields column. The Event Types Fields view appears; it identifies each field name for the event type and the field type, such as string.

5.2.3 Client Groups View

A client group is a set of broker clients with particular properties. For example, a client group defines the server on which clients access the broker.

When you select Client Groups from the WSG Server Monitor workspace and click the Monitor button, the Client Groups view appears.

The Client Groups view contains a table with various parameters, the values of which provide information about the client groups that provide control of client access to the broker. This table identifies the parameters and offers a brief explanation of each one:

Parameter in the Client Groups ViewMeaning
Client Group NameThe name of the client group. Each group has a specific set of properties defined using the ActiveWorks Manager.
ACLThe Access Control List, which is a list of SSL certificates that define the entities with permission to access the broker or create a client within a client group.
Can PublishThe event types that a client group can publish.
Can SubscribeThe event types that a client group can subscribe to.
StatisticsAdditional statistics on the client group, such as how long the group has been on the server and how many events have been published by clients that belong to the group.

Click the magnifying glass in the ACL, Can Publish, Can Subscribe, and Statistics columns to view additional information about each of these parameters.

5.2.4 Client States View

A client state is information maintained by the broker about a client connected to the server. For example, the client group to which a client belongs is a client state.

When you select Client States from the WSG Server Monitor workspace and click the Monitor button, the Client States view appears.

The Client States view contains a table with various parameters, the values of which provide information about the clients connected to the server. This table identifies the parameters and offers a brief explanation of each one:

Parameter in the Client States ViewMeaning
IdentifierA unique identifier for the client connected to the server.
Client GroupThe client group to which the client belongs.
App. NameThe name of the application that describes the client's connection to the server.
Access LabelIndicates, if appropriate, the value of the access label required for a client to connect to the client group to which it belongs.
AuthenticatorThe name of the certification authority that issued the certificate if SSL is enabled for the client.
Can ShareIndicates whether state sharing is enabled. If state sharing is enabled, the number of sessions allowed for a client can be set.
High Seq.The highest published sequence number used by the client.
Max Shared ConnectionsThe maximum number of server connections that the client can share.
Owner NameThe client owner's user name.
SessionsInformation about a client session. Click the magnifying glass button in the Sessions column to view detailed session information.

5.2.5 Broker Log View

You can use the WSG Server Monitor to view a broker log containing information about events that have run on the server during a specified time. You can view all log messages, or you can limit the view to warnings, alerts, or information messages.

When you select Broker Log from the WSG Server Monitor workspace and click the Monitor button, the Broker Log view appears.

From the Broker Log, you can specify:

  • The starting date from which you want to view log files.

  • The maximum number of entries you want to view.

  • The type of file you want to view.

Click the View Log button to see the log file entries.

PKؑKKPKƉZEOEBPS/windows_server.htm Administering the Windows Server

4 Administering the Windows Server

This chapter contains the following topics:

4.1 Understanding Server Administration for Windows

The JD Edwards company supports Oracle's JD Edwards EnterpriseOne enterprise servers that run the Microsoft Windows Server. You can operate the enterprise server for Microsoft Windows in a logic or database server environment. You need to perform certain administration procedures on the enterprise server to ensure that the software runs properly.

This section discusses:

  • JD Edwards EnterpriseOne directory structure for Microsoft Windows.

  • JD Edwards EnterpriseOne architecture and process flow for Microsoft Windows.

  • JD Edwards EnterpriseOne Initialization for Microsoft Windows.

  • JDE.INI settings for starting batch queues on Microsoft Windows.

  • Active Directory.

4.1.1 JD Edwards EnterpriseOne Directory Structure for Windows

This table lists the directories that are copied to the Windows enterprise server when Oracle's JD Edwards EnterpriseOne is installed. They should be installed under the JD Edwards EnterpriseOne base directory (such as z:\JDEdwards\E900\ddp). Indented names indicate subdirectories of the directories.

DirectoryDescription
pathcodeThe main directory for the business function shared libraries, C header files, object files, source files, and specification (spec or TAM) files. Upon installation, this directory will be copied to the correct path codes, such as PD900 and DV900. These subdirectories are included:
  • bin32, which includes business function shared libraries.

  • spec, which includes specification files. These binary data files are in a JD Edwards proprietary format.

systemThe main directory for the system-level executables, shared libraries, C header files, libraries, and localization files. These subdirectories are included:
  • bin32, which includes system-level executables and shared libraries.

  • include, which includes system-level C header files.

  • includev, which includes system-level C header files provided by third-party vendors such as Vertex.

  • lib, which includes system-level shared libraries and export files.

  • libv32, which includes system-level shared libraries provided by third-party vendors.

PrintQueueThe directory to which all .PDF file output for reports is written.
logThe directory to which jde_xxx.log and jdedbug_ xxx.log files are written.
packagesThe server package installation base directory. Directories exist here only if a package has been installed. Under the package directory are subdirectories named for each package that has been installed. Located under each package are these subdirectories:
  • bin32, which includes business function shared libraries.

  • include, which includes business function header files.

  • obj, which includes business function object files. These are divided among lower-level subdirectories that correspond to each DLL in the bin32 directory.

  • source, which includes business function source files. These are divided among lower-level subdirectories that correspond to each DLL in the bin32 directory.

  • spec, which includes specification files. These binary data files are in a JD Edwards proprietary format.


4.1.2 JD Edwards EnterpriseOne Architecture and Process Flow for Windows

These host server processes perform the indicated actions:

Figure 4-1 Windows server processes

Description of Figure 4-1 follows

All communications between the client and the host server occur using sockets. The communications between jdenet_n and jdenet_k occur with shared memory. jdenet_n and queue kernel communicate using the Job Control Status Master database table (F986110).

This text explains the process flow:

  • During Windows system startup, jdesnet runs automatically, provided that it is installed to start automatically. Otherwise, it must be started manually.

  • This information applies to the JD Edwards network service:

    • The program is system\bin32\jdesnet.exe.

    • Each time that a new server or workstation connects to this server, jdesnet might start another jdenet_n until the number of jdesnet and jdenet_n jobs equals the value in the maxNetProcesses field in the [JDENET] section of the JDE.INI file.

  • Each time that a new request, such as a batch application or CallObj is submitted, jdesnet (and any jdenet_n processes) might start another jdenet_k process until the number of jdenet_k jobs equals value in the maxKernelProcesses field in the [JDENET] section of the JDE.INI file.

  • Jdenet_n can be run manually by running system\bin32\jdenet_n.

  • This information applies to the JD Edwards queue service:

    • The program is system\bin32\jdesque.exe.

    • The service runs the number of instances of queue kernels specified in the UBEQueues, PackageQueues, and SpecInstallQueues fields in the [NETWORK QUEUE SETTINGS] section of the JDE.INI.

  • When a user submits a batch application, jdesnet or jdenet_n (as part of the host server) communicates with the client as follows:

    • The host server programs are system\bin32\jdesnet.exe and system\bin32\jdenet_n.exe.

    • The client environment is initialized.

    • The client tells the host server (using a socket) to initialize its environment.

    • The host server (for example, jdenet_n) initializes its environment and gets environment and user handles.

    • The host server passes the environment and user handles to the client (using a socket).

    • The client launches the batch application and then sends data to the host server (using a socket).

    • If the maximum number of kernel (for example, jdenet_k; the k stands for kernel) processes has not been met, jdesnet or jdenet_n might start a new jdenet_k process.

    • If the maximum number of jdenet_k processes has been met, jdesnet or jdenet_n puts the message in a queue for a jdenet_k process.

    • The client frees the user environment.

    • The client tells the host server (using a socket) to free the user environment for the server.

    • The host server frees its user environment.

    • The client tells the host server (using a socket) to free the environment for the server.

    • The host server frees its environment.

  • When the UBE Jdenet_k (the kernel) writes to the database (batch application only), this occurs:

    1. The program is system\bin32\jdenet_k.exe.

    2. Jdenet_k adds a record in the F986110 database table. The record has a status of W (Waiting).

  • The Queue Kernel periodically checks the contents of table F986110 and launches a runbatch process.

  • When runbatch processes the batch application, this occurs:

    • The program is system\bin32\runbatch.exe.

    • The system changes the status stored in table F986110 to P (Processing).

    • The system starts the batch application.

    • If the batch application completes successfully, it changes the status in table F986110 to D (Done).

    • If the batch application does not complete successfully, it changes the status in table F986110 to E (Error).

  • Unlike the many processes that execute when a batch application is submitted, jdenet_k performs the processing when a user submits a CallObject and these actions occur:

    • Cannot start the service name service on the enterprise server.

    • Error 1069: The service did not start due to a logon failure.

4.1.3 JD Edwards EnterpriseOne Initialization for Windows

This initialization occurs when you start JD Edwards EnterpriseOne programs such as queue kernel, runbatch, and so on:

  • The environment is passed as a command line argument to the program (such as porttest, queue kernel) or retrieved by jdenet_k from the QEnv key in the [NETWORK QUEUE SETTINGS] section of the JDE.INI file.

  • This environment might be translated to a different environment, based on the settings in the [SERVER ENVIRONMENT MAP] section of the JDE.INI file.

  • The environment that is used must be a valid entry in the Library ListMaster File table (F0094) and must have a valid corresponding path code in the Environment Detail - OneWorld table (F00941).

  • These JDE.INI settings in the [DB SYSTEM SETTINGS] section specify where the JD Edwards EnterpriseOne server startup tables, such as the Data Source Master (F98611) and Object Configuration Master (F986101) tables, are located:

    • Base Datasource

    • Object Owner

    • Server

    • Database

    • Load Library

    • Type

  • Using this information, the F986101 table opens in the specified database on the server.

  • When an override exists for a given table, BSFN, or the current user, that data source (OMDATP field in the F986101 table) is used for the given object or user and environment. Otherwise, the data source in which OMOBNM=DEFAULT for the given environment is used. Ignore any inactive records (that is, OMSTSO=NA). We strongly recommend that you do not have any default records (OMOBNM=DEFAULT) for batch applications (OMFUNO=UBE). These records might prevent report interconnections (such as one report calling another report) from starting correctly.

  • Each unique data source in the F986101 table should correspond to one entry in the F98611 table.

  • The corresponding information in the F98611 table must be correct. In particular, the OMDLLNAME field must display the correct DLL for the database to which the data source points.

  • For an Oracle database, the OMDATB field from the F98611 table maps to an entry in the tnsnames.ora file. This tnsnames.ora file must be set up correctly (check with an Oracle database administrator).

  • For an IBM DB2 for LUW (Linux, UNIX, Windows) database, the OMDATB field from the F98611 table maps to an entry in the ODBC data source. This datasource must be set up correctly (check with a IBM DB2 for LUW (Linux, UNIX, Windows) database administrator).

  • For a Microsoft SQL Server, Microsoft Access, or Client Access database, the OMDATB field from the F98611 table maps to a data source specified in the ODBC Data Source Administrator applet in the Windows Control Panel. This data source must be set up correctly. If multiple users plan to sign on to this Windows platform and run JD Edwards EnterpriseOne or PORTTEST, the data sources must be defined on the System DSN tab. Otherwise, User Data Sources can be used.

    If you are using Microsoft Windows 2000 to open the ODBC Data Source Administrator, from the Start menu, select Programs, then Administrative Tools, and then Data Sources (ODBC).

  • This information pertains to the setup of SQL Server ODBC drivers, using the ODBC Data Source Administrator applet:

    • The data source name must match the name in the F98611 table.

    • The description can be anything that you want.

    • The server is the name of the database server.

    • The network address includes the database server name, a comma, and a port in which the database user listens.

    • Network Library should be set to Default.

    • Click the Options button for more settings.

    • The database name is usually set to JDE. You can set it to Default.

    • The language name should be set to Default.

    • The Generate Stored Procedure for Prepared Statement option should be turned off.

    • The Use ANSI Quoted Identifiers option should be turned on.

    • The Use ANSI Nulls, Padding and Warnings option should be turned on.

    • The Convert OEM to ANSI characters option should be turned off.

  • This information pertains to the setup of Client Access ODBC drivers, using the ODBC Data Source Administrator applet:

    • On the General tab the data source name must match the name in the F98611 table. The system is the name of the database server.

    • On the Server tab, the default libraries should be the IBM i library, and the commit mode should be Commit immediate (*NONE).

    • On the Format tab, the naming convention should be System naming convention (*SYS).

    • On the Other tab, if the data that you are transferring using this data source contains a Binary Large Object (BLOB), translation should be set to Do not translate CCSID 65535. If the data that you are transferring using this data source does not contain a BLOB, translation should be set to Translate CCSID 65535.

4.1.4 JDE.INI Settings for Starting Batch Queues on Windows

These JDE.INI settings are used to start batch queues on the Windows enterprise server:

[NETWORK QUEUE SETTINGS]
UBEQueues=number of batch queues
UBEQueue1=batch queue name
UBEQueue2=batch queue name
PackageQueues=number of package queues
PkgQueue1=package queue name
PkgQueue2=package queue name
SpecInstallQueues=number of spec install queues
SpcQueue1=spec install queue name
QEnv=queue environment
QUser=queue user
QPassword=queue user password

This table describes each setting:

SettingDescription
number of batch queuesIdentifies the number of batch queues available. If you do not specify a number of batch queues that matches the number specified here, JD Edwards EnterpriseOne uses QBATCH when a missing queue is called.
batch queue nameIdentifies the name of the batch queue. For example, for UBEQueue2, you might specify the queue as QBATCH2. You should specify a number of batch queue names that is equal to the value that you specify for the number of batch queues.
number of package queuesIdentifies the number of package queues that are available. If you do not specify a number of package queues that matches the number specified here, JD Edwards EnterpriseOne uses QBATCH when a missing queue is called.
package queue nameIdentifies the name of the package queue. For example, for PkgQueue2, you might specify the queue as XBATCH2. You should specify a number of package queue names that is equal to the value that you specify for the number of package queues.
number of spec install queuesIdentifies the number of specification install queues available. If you do not specify a number of specification install queues that matches the number specified here, JD Edwards EnterpriseOne uses QBATCH when a missing queue is called.
spec install queue nameIdentifies the name of the specification install queue. For example, for PkgQueue2, you might specify the queue as XBATCH2. You should specify a number of specification install queue names equal to the value that you specify for the number of specification install queues.
queue environmentIdentifies the JD Edwards EnterpriseOne environment under which the Windows operating system starts the queues.
queue userIdentifies a valid JD Edwards EnterpriseOne user.
queue user passwordIdentifies the password for the queue user.

4.1.5 Active Directory

Windows Active Directory is Microsoft's implementation of a hierarchical, object-based directory service for managing system resources, including developers, end users, and groups. If you publish JD Edwards EnterpriseOne server information in Active Directory, client workstations use this information to locate and connect to the server dynamically. If JD Edwards EnterpriseOne service changes from one server to another, workstations can still connect to the server by referencing published server information in Active Directory.


Note:

Active Directory is a Windows feature, and its use with JD Edwards EnterpriseOne is platform-specific and optional. If you are running JD Edwards EnterpriseOne enterprise servers on Unix or IBM i platforms, client workstations still reference their jde.ini files to connect to the server.

4.1.5.1 SCP Object in Active Directory

JD Edwards EnterpriseOne NT service installation creates a Service Connection Point (SCP) object in Active Directory. The SCP object specifies the server name and port number.

Starting JD Edwards EnterpriseOne service on a server automatically updates the SCP object with the server name and port number, and establishes the SCP object status as Running. When service stops, the status of the SCP object automatically changes to Stopped.


Note:

JD Edwards EnterpriseOne Windows service installation creates the SCP object in Active Directory only if you have added an [Active Directory] section to the jde.ini file on the server before installation.

When a user signs on to JD Edwards EnterpriseOne, JD Edwards EnterpriseOne searches Active Directory for an SCP object with a service name that matches the parameter value in the [Active Directory] section of the workstation jde.ini file. JD Edwards EnterpriseOne selects an SCP object that has a status of Running and retrieves the server name and port number, which enables the workstation to make a connection to the server.

4.1.5.2 Additions to the Server JDE.INI file

For each server that you publish in Active Directory, you must add an [Active Directory] section in the JDE.INI file on the server. In the [Active Directory] section, you include the SCPToPublish entry, which identifies the SCP object in the Active Directory.

The value of the SCPToPublish parameter should be unique for each object, and you should consistently adhere to a naming convention for ease of administration. For example, the value of each SCPToPublish parameter might represent a version of JD Edwards EnterpriseOne.

This is a sample entry in the [Active Directory] section of the server JDE.INI file.

SCPToPublish     JDEDWARDS_ENTERPRISEONE_900_SP1 

If you move JD Edwards EnterpriseOne service from one server to another or change the service port number, no changes to the workstation JDE.INI file are needed, so long as the name of the SCP object in Active Directory and the parameter values of the [Active Directory] section of the workstation JDE.INI file match.


Note:

Although users can automatically connect to a new server when a change in service is made, batch processes and business functions are not automatically mapped to the new server. Therefore, you typically need to change OCM mappings for the users so that they use the new data source.

4.1.5.3 Additions to the Workstation JDE.INI File

You also add an [Active Directory] section to the workstation JDE.INI file that specifies the name of the SCP object that contains port number and server name information.

These parameters are included in the [ActiveDirectory] section of the workstation JDE.INI file:

  • JdenetSCP (the connection port).

  • SecurityServerSCP (the security server).

  • LockManagerSCP (the Lock Manager).

  • UnifiedLogonServerSCP (unified logon server).

For each of these parameters, you assign as the value the name of the SCP object in the Active Directory file. For example, enter JDEDWARDS_ ENTERPRISEONE_900_SP1.

This table presents an example of the parameters that you add to the [Active Directory] section of the workstation JDE.INI file. The value of each parameter is the SCP object name in Active Directory.

Parameter of [Active Directory] Section of Workstation JDE.INI FileMeaningParameter Value: name of SCP Object in Active Directory
JdenetSCPConnection portJDEDWARDS_ ENTERPRISEONE_900_SP1
SecurityServerSCPSecurity serverJDEDWARDS_ ENTERPRISEONE_900_SP1
LockManagerSCPLock managerJDEDWARDS_ ENTERPRISEONE_900_SP1
UnifiedLogonServerSCPUnified logon serverJDEDWARDS_ ENTERPRISEONE_900_SP1

4.2 Setting Up a Printer for Windows

This section provides an overview of Printer Setup for Windows and Windows Services, Accounts, and Permissions and discusses how to:

  • Add a printer.

  • Determine or change printer ownership.

  • Set up user accounts on an enterprise server.

  • Change the domain.

  • Add a local account.

  • Add a user to the administrators group.

4.2.1 Understanding Printer Setup for Windows

Setting up a printer for a Microsoft Windows enterprise server involves setting up accounts under which JD Edwards EnterpriseOne runs, establishing printer ownership, and defining the printer. The default printer used for printing reports will be the system default printer.

4.2.2 Understanding Windows Services, Accounts, and Permissions

Before you can successfully set up a printer for Windows, you should understand the relationship of JD Edwards EnterpriseOne to Windows services, accounts, and permissions, which involves these:

  • Assigning permissions to the accounts under which JD Edwards EnterpriseOne services run.

  • Making printers accessible from the service programs.

  • Assigning ownership for accounts to enable access to printers.

Every Windows printer is associated with one network account called the printer's owner. When JD Edwards EnterpriseOne runs a batch report, service programs must be able to access a printer. You can define this printer to be locally accessible only by the enterprise server or remotely accessible by other network resources (for example, it might be attached to a print server). You can specify a printer that is connected directly to an enterprise server as a local or network printer, depending on how you added the printer from the Control Panel.

When you create a Windows user account, you must associate that account with one of these two domains:

  • Local. This domain is associated with a particular Windows machine. For example, each Windows machine has a local administrator account. Local accounts cannot access network resources, such as network printers. Any account names that do not begin with a domain name are considered to belong to the local domain.

  • Network. This domain is spread across a Windows network. Users in the network domain can access network resources, such as printers and disk drives, on other servers. Account names that are assigned to the network domain must begin with a domain name, such as domain1\john_doe.

In this table, you must define two types of service accounts and printer ownerships for the two types of printers:

Printer TypeAccount and Owner
LocalThe service account type can be local or network. The printer owner account can be local or network.
NetworkThe service account type must be network. The printer owner account must be network.

Windows services enable programs to run on a Windows platform even when no user is signed on to the machine. For the JD Edwards EnterpriseOne enterprise server, you must run these two service programs:

  • Network: This program provides the network connection between the JD Edwards EnterpriseOne workstation and the JD Edwards EnterpriseOne enterprise server.

  • Queue: This program starts jobs (either batch reports or server package installations) on the enterprise server.

The accounts under which Windows services run must have permissions to start and stop services on the local machine. You must specify permissions for one of these:

  • Individual users, such as administrator and guest accounts.

  • Groups of users, such as administrators (note the plural; administrators are different than an individual administrator).

The accounts that automatically have permissions to start and stop services include:

  • The Administrator user.

  • Users specifically designated by the Administrator user.

  • Users who belong to the Administrators group (which is different from an individual administrator).

  • Users that belong to the Power Users group.


    Note:

    We strongly recommend that you use an account for a user who belongs to the local Administrators group.

You must add a printer in Microsoft Windows before you can use it in JD Edwards EnterpriseOne.

4.2.3 Adding a Printer

To add a printer:

  1. Click the Windows Start button.

  2. Select Settings, and then select Printers.

  3. Select Add Printer.

  4. On Add Printer Wizard, follow the system-guided steps.

    For a local printer, these steps include selecting the port to which the printer is attached, specifying the type of printer that you are installing, specifying a name for the printer, and indicating where the drivers are located, if needed.

    For a network printer, these steps involve selecting a print server and printer and indicating whether the printer is the default printer for the enterprise server.


    Note:

    When you are defining a printer, do not use a space character in the name. If you do, JD Edwards EnterpriseOne will not be able to correctly read or access the physical printer.

4.2.4 Determining or Changing Printer Ownership

To determine or change printer ownership:

  1. From Control Panel, select Printers.

  2. Select a printer, right-click, and select Properties.

  3. Click the Security tab.

  4. Click the Ownership button.

    The Owner dialog box displays the current owner of the printer.

  5. On owner, to make the account that you are currently signed onto the owner of the printer, select Take Ownership, and then click OK.

4.2.5 Setting Up User Accounts on an Enterprise Server

You can set up local users to add local and network accounts to groups.

To set up user accounts on an enterprise server:

  1. On the enterprise server, under Windows, select Start,Settings,Control Panel,Administrative Tools, then Computer Management.

  2. On the Tree tab, select Local Users and Groups, and then click the Users folder.

4.2.6 Changing the Domain

To change the domain:

  1. From the main menu of User Manager, select User.

  2. Select User Domain.

    The Select Domain form displays all domains. The local domain is named the same as the enterprise server and does not appear in the list. However, you can still type the name of the enterprise server in the Domain field.

    In this example, the name of the local machine is the same as the domain: DEVS5. That name is appears in the title bar as \\DEVS5. Although that syntax might typically indicate a network machine, in this case it represents a local machine name because the name of the machine and the domain are the same.

  3. Click OK.

    The User Manager form displays all of the accounts for the domain that you chose. If you select a network domain, all listed names represent network accounts. Likewise, if you select the local domain, all listed names represent local accounts.

4.2.7 Adding a Local Account

If you are using a local printer, you can use either a local or network account to run the JD Edwards EnterpriseOne services.

  1. Sign onto Windows as a user with administrative privileges in the local domain.

  2. From Computer Management, select System Tools, and then select Local User and Groups.

  3. From the Action menu, select New User.

  4. On New User, complete these fields:

    • User name

    • Full Name

    • Description

    • Password

    • Confirm Password

  5. Complete these options, as appropriate for the installation:

    • User must change password at next logon.

    • User cannot change password.

    • Password never expires.

    • Account disabled.

  6. Click Create.

  7. Click Cancel.

4.2.8 Adding a User to the Administrators Group

To add an existing account (either local or network), you must use the local domain.

  1. From the User Manager main window, double-click the Administrators group.

    The user Administrator belongs to the Administrators group. Local accounts are not preceded by a domain name, and network accounts are preceded by a domain name. For example, the domain member with a name JDE is a local account, and a member with the name JDEMD1\AY5600427 is a network account.

  2. On Administrators Properties, click Add.

    A list displays all users in the selected domain.

  3. On Select Users or Groups, select the domain of the user whom you want to add to the Administrators group.

  4. Select the user whom you want to add to the Administrators group.

  5. Click Add to add the user to the group, and then click OK.

4.3 Working with Network Services

This section provides an overview of network services and discusses how to:

  • Set up the network service.

  • Start the network service.

  • Stop the network services.

  • Clean up the enterpriser server for Windows.

  • Uninstall the network service.

  • Start the enterprise server for Windows manually.

  • Verify the JD Edwards EnterpriseOne installation.

4.3.1 Understanding Network Services

JD Edwards EnterpriseOne uses the Network service on the enterprise server. This service is installed during the installation process using the jdesnet -i service from the system\bin32 directory.

When you install this service, the system adds these entries to the Windows registry:

  • The name of the service that appears on the Services form (used when controlling the services).

  • The location of the JD Edwards EnterpriseOne executable files.

During a new installation, or after you have renamed or moved the directory tree for an existing installation, you should reinstall the services.

After the initial installation, you will need to reinstall the Network service only when it has been uninstalled. You will need to uninstall this service only when the JD Edwards EnterpriseOne directory tree is renamed, moved, or deleted. The process to uninstall this service removes these entries from the Windows registry:

  • The names that appear for the service on the Services form.

  • The location of the JD Edwards EnterpriseOne executable files.

After the Network service is installed, you must set up the service under a network account, if you are using a network printer, or a local account, if you are using a local printer. If you are using a network account, it must be in either the Administrators or Power Users group.


Note:

We strongly recommend that you use a user who belongs to the local Administrators group.

After you have installed and set up the Network service, you must start the service before JD Edwards EnterpriseOne can use it. Later, if you need to stop services, you must do so in the proper order.

After JD Edwards EnterpriseOne is shut down, you can determine whether any processes completed abnormally. If so, you need to clean up the enterprise server. Unforeseen circumstances can cause JD Edwards EnterpriseOne processes to terminate abnormally. Processes that terminate abnormally are called runaway processes. After shutting down JD Edwards EnterpriseOne, look for any runaway processes and, if any exist, manually terminate them.

4.3.2 Setting Up the Network Service

To set up the network service:

  1. From the Start menu, select Programs, Administrative Tools, and then Services.

  2. Select the JD Edwards EnterpriseOne Network service.

    The name of the service is in the form JDE release Network, where release is the current JD Edwards EnterpriseOne release. For example, the Network services name for Release E900 is JDE 900 Network.

  3. Click Action, then click Properties.

  4. On the General tab, if you want JD Edwards EnterpriseOne to start automatically when the enterprise server boots, click the Automatic option under Startup Type.

  5. On the Log On tab, click the This Account option.

  6. Enter the account name under which the JD Edwards EnterpriseOne Network service will run.

  7. Enter the password for the account and a confirmation of the password.

  8. Click OK.

4.3.3 Starting the Network Service

To start the Network service:

  1. From the Services window, select the JD Edwards EnterpriseOne Network service.

    The name of the service is in the form JDE release Network, where release is the current JD Edwards EnterpriseOne release. For example, the Network services name for E900 is JDE 900 Network.

  2. From the Action menu, click Start.

  3. Use the Windows Task Manager to ensure that these processes are running:

    • jdesnet.exe.

    • jdenet_k.exe processes. (None, one, or more might exist.)

4.3.4 Stopping the Network Services

When you stop the Network service, follow the steps in the proper sequence.

To stop the Network service:

  1. From the Services window, select the Network service.

    The name of the JD Edwards EnterpriseOne Network service is in the form JDE release Network. For example, the Network services name for JD Edwards EnterpriseOne 8.10 is JDE 812 Network.

  2. Use the Windows Task Manager to ensure that all JD Edwards EnterpriseOne processes are terminated.

    This might take several minutes. These processes should be terminated and, therefore, should not appear in the list of processes in Task Manager:

    • jdesnet.exe

    • jdenet_n.exe

    • jdenet_k.exe

    • runbatch.exe

    • ipcsrv.exe

4.3.5 Cleaning Up the Enterprise Server for Windows

To clean up the enterprise server for Windows:

  1. In the Processes tab of Task Manager, search for any JD Edwards EnterpriseOne Host Server processes, such as jdesnet, jdenet_n, jdenet_k, and runbatch.

    Wait until all the JD Edwards EnterpriseOne Host Server processes are terminated. If all processes terminate, you do not need to perform the remaining steps in this task. Otherwise, continue with the next step.

  2. Select a process in Task Manager.

  3. Click End Process.

  4. If the runaway process does not terminate, continue with the next step.

  5. In Task Manager, right-click the process and select debug.

  6. When the Visual C++ main window appears, select the Stop debugging option from the Debug menu.

  7. Exit from Visual C++, and then repeat these steps for each runaway process.

  8. If none of the previous steps stops the runaway process, reboot the enterprise server.

4.3.6 Uninstalling the Network Service

To uninstall the Network services:

Run this program from the \system\bin32 directory:

jdesnet -u

4.3.7 Starting the Enterprise Server for Windows Manually

If JD Edwards EnterpriseOne does not run through the Control Panel Services applet, you can run Network manually.


Note:

If you start JD Edwards EnterpriseOne manually, you must stop the JD Edwards EnterpriseOne processes using the Windows Task Manager.

To start the enterprise server for Windows manually:

  1. On the enterprise server for Windows, sign on with administrator privileges.

    If you used the user ID that we recommend, the value is PSFT.

  2. On the Windows toolbar, from the Start menu, select Run, and then enter these commands:

    drive: installpath\system\bin32\jdenet_n
    

    Where installpath is the path to the JD Edwards EnterpriseOne installation.

    This command launches an executable program that starts the JD Edwards EnterpriseOne network (JDENet) internal processes.

    If you run jdenet_n from a command prompt, ensure that the working directory is the subdirectory \system\bin32.

4.3.8 Verifying the JD Edwards EnterpriseOne Installation

You can verify the JD Edwards EnterpriseOne installation with the PORTTEST program.


Note:

When you run PORTTEST, make sure that one of this is true:

If the network service, such as jdesnet.exe, is running, make sure that you are signed on to Windows under the same user account as the net service is running. You can then run PORTTEST from a command prompt.

If the network process, such as jdenet_n.exe, is run from the command prompt, you can run PORTTEST from the command prompt.


To verify the JD Edwards EnterpriseOne installation:

In the command line, enter these commands:

cd \JDEdwards\E900\ddp\system\bin32
porttest <userid> <password> <environment>

The program initializes an environment, initializes a user, opens the Account Balances table (F0902), and displays up to 99 rows of data. The number of rows of data that the program displays depends on the data in the table. If you run the program before anyone enters data into the table, you will not see any data on the screen. In this case, the lack of data does not indicate an error. Review the messages on the form and the corresponding jde.log file to determine the results of the program.

4.4 Administering Batch Processes for Windows

This section provides an overview of batch process administration for Windows and discusses how to:

  • Monitor batch processes.

  • Review batch output files.

  • Run reports from the command line for Windows.

  • Schedule reports from the command line for Windows.

4.4.1 Understanding Batch Process Administration for Windows

Administering batch processes involves knowing the processes that run when JD Edwards EnterpriseOne starts, where files are placed before and after printing, and how to watch those processes.

The user who started the JD Edwards EnterpriseOne software owns the processes that are running for JD Edwards EnterpriseOne; Windows Task Manager cannot track this information. When the software starts, a number of processes start and run under the environment and security of the user who started them. These processes are as follows:

ProcessDescription
jdesnet.exeThe network listener that listens for connection requests.
jdenet_n.exeA network listener that listens for connection requests. Depending on the jde.ini setting, zero, one, or more of these processes can run simultaneously.
jdenet_k.exeThe job responsible for coordination between the net and queues. It is not started until the first batch job is submitted to the server.
runbatch.exeThe job responsible for executing the submitted reports.
ipcsrv.exeThe process responsible for passing Binary Large Objects (BLOBs) between other processes.

4.4.2 Monitoring Batch Processes

You can use the Task Manager to continuously monitor the performance of each job, the amount of CPU time it is consuming, and the amount of memory it is using. By default, the display refreshes every second.

4.4.3 Reviewing Batch Output Files

All output from each report, regardless of whether it is a preview, is placed in the PrintQueue directory under the JD Edwards EnterpriseOne installation directory before it is printed. Depending on the JDE.INI settings of the workstation that submitted the job, the job might or might not be deleted after being printed. Unless the submitter identified a printer, jobs are printed to the default printer that you specified for the enterprise server.

Two settings, based upon the workstation's JDE.INI file, tell the server whether to print the report immediately upon completion and whether to save the output from the report or delete it. Here are examples of both of these workstation settings:

[NETWORK QUEUE SETTINGS]
SaveOutput=TRUE
PrintImmediate=TRUE

Setting SaveOutput to TRUE causes the enterprise server to hold the jobs within the PrintQueue directory until the user explicitly deletes them. Setting PrintImmediate to TRUE tells the enterprise server to print the job immediately after completion of the report.

Users should be strongly encouraged to use the SaveOutput=FALSE entry in their JDE.INI file. When users decide to save their output, they should periodically delete the entries through JD Edwards EnterpriseOne. Deleting the output files from the operating system will not delete the corresponding JD Edwards EnterpriseOne print job entries (for example, entries might still exist in the database). These print job entries still have to be deleted manually.

To list all files in the PrintQueue directory, use Windows Explorer to change the working directory to the PrintQueue directory.

These file names are the actual reports that were generated when the job was executed. The file names follow these conventions:

SegmentDescription
S_Identifies the first part of a file name. Indicates that a specification installation was performed by the workstation. The system omits this prefix when no specification installation was performed.
R0006PIdentifies the report name.
XJDE0001Identifies the report version.
UBEIdentifies the type of request.
216Identifies the request number assigned by JD Edwards EnterpriseOne.
PSIndicates a PostScript file.
PDFIndicates a PDF (Portable Document Format) file. This file can be viewed on the workstation using Adobe Acrobat.

4.4.4 Running Reports from the Command Line for Windows

If you are a user with the proper authority and path (equal to that described in the installation instructions), you can run batch report processes from the server command line by first changing to the JD Edwards EnterpriseOne system directory (system\bin32) and then entering these commands:

runube  <[-p|-P] [-f|-F|-d|-D passfile] [user password]>
   <Environment>
   <Role>
   <ReportName>
   <VersionName>
   <JobQueue>
   <"Interactive"|"Batch">
   <"Print"|"Hold">
   <"Save"|"Delete">
    [Printer]

The format for the passfile parameter is:

[enterpriseoneusername
 password]

Note:

The [user password] parameter has been deprecated.

For the command parameters, only the first character of the parameter name is required. The vertical bar symbol (|) indicates that you must specify one of the parameters on either side of the vertical bar. The brackets indicate an optional parameter. These options apply to the runube command:

ParameterDescription
–pPrompts for user/password information.
–PPrompts for user/password information.
–fReads user/password information from the plain text file that is specified in passfile (FilePath).
–FReads user/password information from the plain text file that is specified in passfile (FilePath).
–dReads user/password information from the plain text file and indicates the automatic removal of the file after the job has read the credentials from it.
–DReads user/password information from the plain text file and indicates the automatic removal of the file after the job has read the credentials from it.
InteractiveThe system holds the current terminal session until the entire report is processed.
BatchThe runube command the job to a UBE kernel, which in turn will send the job submission to Queue kernel, and then returns control of the terminal to the user.
PrintAfter the batch process completes generating its output, the output is printed to the specified printer queue. If you do not specify a printer on the runube command line, the system uses the EnterpriseOne user's default printer specified in the Printers program (P98616).
HoldThe batch output is not printed immediately after the job completes, but may be printed later from 'Work with Submitted jobs'
SaveThe system retains the report's output and all records of its execution.
DeleteThe system removes any output from the PrintQueue directory, from Report definition output, and also removes the records of the jobs execution from F986110 after the report prints.
OutQOptional. This is the printer name on which the given report is printed. If this option is not specified, the report will be printed on the enterprise server default printer.

4.4.4.1 Example: Running Reports from the Command Line for Windows

This example lists commands for executing a batch process report:

cd \JDEdwards\E900\ddp\system\bin32
runube KL5595218 KL5595218 PROD R0006P XJDE0001 QBATCH Interactive 
Print Delete printer_1

4.4.5 Scheduling Reports from the Command Line for Windows

You can schedule a report from the command line for processing on a future date, daily, or even on a recurring day of the week. To schedule one-time only reports, use the at command.

When you issue jobs with the at command, they run in the background. However, the at command enables you to schedule a future time of execution. You can use this command to run a batch job during off-peak hours.


Note:

Use of the at command depends on how security is configured on the Windows enterprise server. You should limit the amount of access that users have to submit jobs on the server. If possible, only an administrator should do this type of scheduling.

The command format for the at command is as follows:

at [\\computername\ time [/INTERACTIVE] [/EVERY:date[,...] | 
/NEXT:date[,...]] command

Where these options apply:

ParameterDescription
\\computernameIdentifies the computer on which to run the program. If you do not specify a value, the default is the local machine.
timeSpecifies the time to run the job, such as 08:00.
/Windows INTERACTIVEenables the program to interact with the Windows operating system desktop.
/EVERY:dateSpecifies the days on which to run the job. Values are M, T, W, Th, F, S, and Su.
/NEXT:dateSpecifies the next date for the first execution. If you do not specify a value, the default value is today's date.
commandSpecifies the command to run. To run batch jobs here, use the runube command with any of its parameters.

4.4.5.1 Example: Scheduling Reports from the Command Line for Windows

This example lists a sample command that you can use to schedule a JD Edwards EnterpriseOne batch report to run on the DEPLOY machine at 06:00 every Sunday:

at \\DEPLOY 06:00 /EVERY:Su z:\b731\system\bin32\runube KL5595218 KL5595218 
PROD R0006P XJDE0001 QBATCH Interactive Print Delete printer_1

4.5 Maintaining File Security for Windows

You should be aware of the security that is set up for the files on a JD Edwards EnterpriseOne enterprise server. System-wide, only these two accounts will ever need operating system access to the JD Edwards EnterpriseOne environment files and version executables:

  • The account that starts and stops JD Edwards EnterpriseOne.

  • The account that builds the environment specification (SPEC) and business function (BSFN) files (if this account is separate from the startup and shutdown account).


Note:

The Server Manager managed home agent service must operate using the same account that is used to start and stop JD Edwards EnterpriseOne.

4.5.1 Specification File Security

Specification files are the first part of the environment files. You access these files using the JD Edwards EnterpriseOne kernel processes. These files should never be accessed directly by an operating system user; therefore, security for these files should be read/write for the user and group. These files are not executables, so you do not need to set the executable option for any user, group, or other.

4.5.2 Business Function File Security

You should keep business functions secure. In an environment in which development takes place, you must have a strict form of version control on source and object files. If the business function files change without the knowledge of the JD Edwards EnterpriseOne administrators, rebuilding them might produce unknown or undesired results. Most likely, a developer is working to correct a problem, but the problem could become worse.

You should set a high level of security on the source, include, and object files.

4.5.3 JD Edwards EnterpriseOne Executables Security

You should prevent access to JD Edwards EnterpriseOne executable files to prevent other users from attempting to start up JD Edwards EnterpriseOne. Running the same version of JD Edwards EnterpriseOne on the same system, using the same JDE.INI settings, can cause unpredictable results. In most cases, the second startup will fail, but giving users access to the shutdown procedures enables them to shut down JD Edwards EnterpriseOne.

4.5.4 JDE.INI File (Enterprise Server) Security

Warning: Implementing JDE.INI file security will prevent Server Manager from modifying configuration settings.

You must keep the JDE.INI file on the Windows enterprise server as secure as possible. This file contains a database user name and password that enables JD Edwards EnterpriseOne security to function. This database account is given read authority to the OneWorld Security table (F98OWSEC), which controls JD Edwards EnterpriseOne access.


Note:

The F98OWSEC table contains privileged database user names and passwords, which could give a user the ability to manipulate any data in the database, regardless of its sensitivity or security. Therefore, access to the enterprise server JDE.INI file should be minimized.

Denying written access to JD Edwards EnterpriseOne is not necessary, but prevents accidental modification of JDE.INI settings that could adversely affect the operation of JD Edwards EnterpriseOne.

Because of the importance of limiting access to the JDE.INI file for security reasons, you also should limit access to the JD Edwards EnterpriseOne account (or the user account that starts and stops JD Edwards EnterpriseOne). Users with access to this account can easily obtain the F98OWSEC user names and passwords, and gain privileged access to the database.


4.6 Running Multiple Instances of JD Edwards EnterpriseOne on Windows

This section provides an overview of running multiple instances of JD Edwards EnterpriseOne on Windows and discusses how to:

  • Run Multiple Instances of JD Edwards EnterpriseOne on Windows.

  • Generate a unique identifier.

  • Modify the server jde.ini files.

  • Modify the workstation jde.ini file.

  • Uninstall JD Edwards EnterpriseOne services.

  • Move or change a JD Edwards EnterpriseOne directory tree.

Server Manager fully supports multiple foundations. This includes the installation and management of multiple instances of JD Edwards EnterpriseOne on a single server.


See Also:

  • 8.98 Server Manager Guide on My Oracle Support, sections: Register/Install on JD Edwards Enterprise Server for EnterpriseOne..


4.6.1 Prerequisites

Before you complete the tasks in this section:

  • Verify that you have enough disk space to create copies of the current JD Edwards EnterpriseOne system directory and at least one path code directory.

  • Verify that you install each new instance of JD Edwards EnterpriseOne in a separate directory tree and that the version-level directories are different. For example, JD Edwards EnterpriseOne version 1 might be installed in the z:\JDEdwards\b9 directory tree, while JD Edwards EnterpriseOne version 2 might be installed in the z:\JDEdwards\E900 directory tree.

4.6.2 Running Multiple Instances of JD Edwards EnterpriseOne on Windows

You can run multiple instances of JD Edwards EnterpriseOne on a Windows 2000 server. You might do so to test a new service or to upgrade to a new version of JD Edwards EnterpriseOne. You do not need to install a separate machine to run multiple instances of JD Edwards EnterpriseOne, so long as you follow a series of recommended steps.

Each instance of JD Edwards EnterpriseOne must have a unique identifier. You set the value of this identifier in the CLSID parameter of the server JDE.INI file. To generate the identifier, you run the uuidgen program.

For each new instance of JD Edwards EnterpriseOne, you modify the values of parameters in the JDE.INI file on the server. Each value for each JD Edwards EnterpriseOne instance must be unique. This table presents the server jde.ini file parameters that require modification, the purpose of each, and example values for each:

Section of server JDE.INI fileParameterPurposeExample Value
[DEBUG]DebugFile=Name of the log file that contains debugging data.z:\JDEdwards\E900_2\log\jdedebug.log
[DEBUG]JobFile=Name of the log file that contains log data.z:\JDEdwards\E900_2\log\jde.log
[INSTALL]StartServicePrefix=Prefix that is used for names of the JD Edwards EnterpriseOne network and queue services.Instance 2
[INSTALL]B9=Base directory of the JD Edwards EnterpriseOne installation.z:\JDEdwards\E900_2
[JDEIPC]StartIPCKeyValue=Integer that indicates an arbitrary starting point in memory for interprocess communications. For multiple instances of JD Edwards EnterpriseOne, differences between the values of the parameter must be at least 1000.6000
[JDEIPC]CLSID=Unique string generated by the NT guidgen program. The string identifies each instance of JD Edwards EnterpriseOne.1E0CF350-AF81-11D0-BD7B-0000F6540786
[JDENET]serviceNameListen=The TCP/IP port number used by the server to receive communication packets from workstations.6005
[JDENET]serviceNameConnect=The TCP/IP port number used by the server to send communications packets to servers.6005

You are not required to install network and queue services for an existing JD Edwards EnterpriseOne instance unless you change the location of the system\bin32 directory for the new instance. For example, you might decide to put the directory on a new disk.

To move or rename a directory for EnterpriseOne instance after you install its services, you must uninstall the network service and uninstall the IPC Automation Server (ipcserv.exe). You can then move or rename the JD Edwards EnterpriseOne directory and reinstall the network service. The IPC Automation Server automatically reinstalls itself when it is first used.

After you have installed services for each JD Edwards EnterpriseOne installation, you must modify the workstation JDE.INI file so that the values of these parameters match those that you set up in the server JDE.INI file:

  • serviceNameListen=

  • serviceNameConnect=

4.6.3 Generating a Unique Identifier

To generate a unique identifier:

  1. From the Start menu on the Windows taskbar, select Run, and then enter this command:

    uuidgen-oFILENAME
    

    Where FILENAME is the name of the file that will contain the new identifier.


    Note:

    For help about the options for the uuidgen program, run the uuidgent-? command:

    The uuidgen program creates a unique identifier and stores it in the file that you specified.


  2. Copy the identifier.

  3. Open the server JDE.INI file and paste the identifier into the CSLID parameter under the [JDEIPC] section of the file.

4.6.4 Modifying the Server JDE.INI Files

To modify the server JDE.INI file:

  1. In the system\bin32 subdirectory for each new JD Edwards EnterpriseOne instance, open the server JDE.INI file.

  2. In the [DEBUG] section of the JDE.INI file, in the DebugFile= parameter, type the name of the log file that will contain debugging information.

  3. In the [DEBUG] section, in the JobFile= parameter, type the name of the file that will contain log information.

  4. In the [INSTALL] section, in the StartServicePrefix= parameter, type the value to be used for the names of the JD Edwards EnterpriseOne network and queue services. The names are listed in the Services window under Control Panel.

    The default value is JDE followed by the current version number, such as 900. The default value produces the service names JDE 900 Network and JDE 900 Queue.

  5. In the [INSTALL] section, in the B9= parameter, type the name of the base directory of the JD Edwards EnterpriseOne installation. The JD Edwards EnterpriseOne server uses this value to determine the location of the executables and DLLs used to run JD Edwards EnterpriseOne programs.

  6. In the [JDEIPC] section of the JDE.INI file, modify the values of these parameters:

    ParameterValue
    StartIPCKeyValueType a number for the starting point in memory for interprocess communications. For multiple instances of JD Edwards EnterpriseOne, verify that the difference between starting point values for each instance is at least 1000. The default value is 5000.

    Note: To ensure that the difference between starting point values is at least 1000, review the maxNumberofResources parameter in the [JDEIPC] section of the JDE.INI file. If the parameter value is less than 1000, change the value.

    CLSID=Type the unique string that is generated by the NT guidgen program.

  7. In the [JDENET] section of the JDE.INI file, modify the values of these parameters:

    ParameterValue
    serviceNameListen=Type the port number for the TCP/IP port used by the server to receive communications packets from the workstations. Each instance of JD Edwards EnterpriseOne must communicate with workstations through a different port.

    The default value is jde_server.

    serviceNameConnect=Type the port number for the TCP/IP port used by the server to send communications packets to the workstations. Each instance of JD Edwards EnterpriseOne must communicate with workstations through a different port.

    The default value is jde_server.


4.6.5 Modifying the Workstation JDE.INI File

To modify the workstation JDE.INI file:

  1. In the Windows directory on the workstation, locate and open the jde.ini file.

    Examples of the windows directory include c:\winnt and c:\windows.

  2. Modify the values of these parameters to match the values in the server jde.ini file:

    • serviceNameListen=

    • serviceNameConnect=

4.6.6 Uninstalling JD Edwards EnterpriseOne Services

To delete an instance of JD Edwards EnterpriseOne after you install its services, you must uninstall the services for that instance before you delete the JD Edwards EnterpriseOne directory tree.

To uninstall JD Edwards EnterpriseOne services:

  1. From a command line prompt, change directories to the system\bin32 directory of the JD Edwards EnterpriseOne instance.

  2. For example, enter this command:

    C:\> d:\E900\system\bin32
    
  3. To uninstall network services, enter this command:

    jdesnet -u
    

    This command removes some settings in the Windows registry that were created when you installed JD Edwards EnterpriseOne services.

4.6.7 Moving or Changing a JD Edwards EnterpriseOne Directory Tree

To move or change a JD Edwards EnterpriseOne directory tree:

  1. From a command line prompt, change directories to the system\bin32 directory of the JD Edwards EnterpriseOne instance.

    For example, enter this command:

    C: \> d:\E900\system\bin32
    
  2. To uninstall network services, enter this command:

    jdesnet -u
    

    Note:

    You do not need to reregister ipcsrv.exe in the new directory because the executable is automatically registered when a binary large object is first transferred using interprocess communications.

  3. Move or change the directory tree.

  4. Reinstall JD Edwards EnterpriseOne Services.

PK~>܆ȆPKƉZE OEBPS/lof.htm List of Figures

List of Figures

PK PKƉZEOEBPS/generat_so_for_e1_web.htma Generating Serialized Objects for the JD Edwards EnterpriseOne Web Server

11 Generating Serialized Objects for the JD Edwards EnterpriseOne Web Server

This chapter contains the following topic:

11.1 Understanding Serialized Object Generation

To run the web server, the server must have access to a set of serialized Oracle's JD Edwards EnterpriseOne JAS objects. These objects can be generated directly from Oracle's JD Edwards EnterpriseOne objects using the appropriate set of JD Edwards EnterpriseOne specifications.

Generating JD Edwards EnterpriseOne serialized objects requires a specific machine configuration. While it is possible to configure a web server to generate JD Edwards EnterpriseOne serialized objects, the recommended method is to dedicate a separate generation machine for this process.


Note:

The eGenerator software can change with each Tools Release.

See the Generating JD Edwards EnterpriseOne Serialized Objects appendix in theJD Edwards EnterpriseOne Tools 8.98 HTML Web Server Installation Guide.

There are eight versions of this guide which depend on platform and application server.

PKȆ9Bf a PKƉZEOEBPS/index.htm Index

Index

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  W 

A

accounts
Windows, 14.10.2
AIX
clusters
HACMP software, 7.4.1
JD Edwards EnterpriseOne setup, 7.5
kernel parameter settings
maxuproc, 3.9.2
system parameters, 3.9.3
tune parameters, 3.9.4
viewing system parameters, 3.9.3
architecture
enterprise servers
UNIX, 3.1.2
Windows, 4.1.2
authorization lists
iSeries
database security, 2.9.7
samples, 2.9.1.2
automatic start
enterprise servers
iSeries, 2.2.5
UNIX (HP 9000), 3.2.3
UNIX (RS/6000), 3.2.4
UNIX (Sun Solaris), 3.2.4

B

batch output files
iSeries, 2.7.1
UNIX, 3.5.1
Windows, 4.4.3
batch processes
iSeries
administering, 2.7.1
encoding passwords, 2.7.4
monitoring processes, 2.7.2
running reports, 2.7.1
scheduling reports, 2.7.1.2
log files
enterprise server, 14.1, 14.1.3, 14.5
workstation event flow, 13.4.1.5
workstation setup, 13.4.1.5
troubleshooting, 13.2.4
UNIX
administration, 3.5.1
monitoring processes, 3.5.2
running reports, 3.5.4
scheduling reports, 3.5.5
Windows, 4.4.1, 4.4.2, 4.4.4, 4.4.5
batch queues, settings for starting batch queues, 4.1.4
BSFNLIB security parameter, 2.8.2.9
business functions
security files, 4.5.2
security files for UNIX, 3.6.3
troubleshooting development workstations, 13.3.4

C

Citrix Metaframe, incorporating with Terminal Server Edition, 6.1.1
cleaning up the enterprise server
iSeries, 2.5.1, 2.5.4
iSeries cleanup, 2.5.3
clusters
AIX, 7.4.2, 7.6
HACMP software, 7.4.1
JD Edwards EnterpriseOne setup, 7.5
HP-UX, 7.1.1, 7.3.3
MC/ServiceGuard, 7.3.2
multiple instances of JD Edwards EnterpriseOne, 7.2
Oracle package, 7.3.2
troubleshooting, 7.8
registering JD Edwards EnterpriseOne with SUNClustering, 7.7.6
Solaris, 7.7.1
compile error log
workstation, 13.4.1.3
CPU binding for AIX, 3.9.4.1

D

data sources
troubleshooting the Server Map, 14.6.3
databases
iSeries
security, 2.9.1
setting up security, 2.9.3
UNIX
increasing the maxprocess limit, 3.2.1
starting the enterprise server, 3.2.1
deployment servers
backup requirements, 10.1.1
development workstation
troubleshooting
business functions, 13.3.4
event rules, 13.3.3
development workstations
troubleshooting, 13.3.1
directory structures
UNIX, 3.1.1
disk striping
AIX, 3.9.4.1
DLL files
troubleshooting, 13.2.9
domains
Windows, 4.2.2
DTAPATH datapath security parameter, 2.8.2.4

E

email
troubleshooting, 14.10.15
enterprise server
troubleshooting, 14
enterprise server initialization for iSeries, 2.1.2
enterprise servers
automatically starting the Linux, 3.2.5
backup requirements, 10.1.2
cleaning up the Windows enterprise server, 4.3.5
creating a separate instance, 3.10.1
debugging, 14.6.1
iSeries, 2.2.2
architecture, 2.1.1
backup requirements, 10.1.2
cleaning up the server, 2.5.1
initialization, 2.1.2
installation problems, 14.8.2
interprocess communication (IPC), 14.8.5
JDBNET, 14.8.4
jde.ini file, 14.8.6
manual start, 2.2.4
PPAT, 14.8.2.10
setting up a printer, 2.6.1
shutting down the server, 2.3
Linux, 3.3
log files
batch processes, 14.1.3
batch processing, 14.1
jdedebug.log, 14.1.2
jde.log, 14.1.1
logic processing, 14.1
viewing files, 14.2
running multiple instances, 3.10.1
Server Map data source
troubleshooting, 14.6.3
types of problems, 14.1
UNIX, 3.2.1, 3.3
architecture, 3.1.2
automatic start (HP 9000), 3.2.3
automatic start (RS/6000), 3.2.4
automatic start (Sun Solaris), 3.2.4
backup requirements, 10.1.2
directory structure, 3.1.1
initialization, 3.1.3
jde.ini file, 14.9.2
jde.ini file security, 3.6.5
manual start, 3.2.2
setting up a printer, 3.4
Windows, 4.1.1, 4.2.1, 4.2.5, 4.3.1, 4.3.2, 4.3.7, 4.5.4
backup requirements, 10.1.2
testing by submitting report, 14.10.11
error messages
memory violations, 13.1.7
workstations, 13.1
communication failures, 13.1.9
form and grid add failures, 13.1.8
event rules, troubleshooting, 13.3.3
executable file security
UNIX, 3.6.4
Windows, 4.5.3

F

failures
communication, 13.1.9
form and grid add, 13.1.8
file descriptors
kernel parameter settings
HP-UX, 3.7.4
Sun Solaris, 3.7.4
file security
UNIX
business function files, 3.6.3
JD Edwards EnterpriseOne executables, 3.6.4
jde.ini file (enterprise server), 3.6.5
specification files, 3.6.2
Windows, 4.5.1, 4.5.2, 4.5.4
files
restoring a backup file
SQL Server, 10.2.7
viewing batch output files, 2.7.3

G

global tables
workstations, 13.4.1.1

H

HACMP software
AIX, 7.4.1
application server, 7.6
cluster resources, 7.6.4
groups, 7.4.2
installation, 7.4.1.2
Oracle database, 7.4.1.2
JD Edwards EnterpriseOne setup, 7.5
owenv script, 7.5.1
start resource control script, 7.5.2
stop resource control script, 7.5.3
HP 9000
enterprise server
automatic start, 3.2.3
HP-UX
clusters, 7.1.1
JD Edwards EnterpriseOne package, 7.3.3
multiple instances of JD Edwards EnterpriseOne, 7.2
Oracle package, 7.3.2
troubleshooting, 7.8
kernel parameter settings, 3.7
file descriptors, 3.7.4
message queues, 3.7.1
processes, 3.7.5
semaphores, 3.7.2
shared memory, 3.7.3

I

INILIB security parameter, 2.8.2.3
initialization
troubleshooting, 4.1.3
UNIX, 3.1.3
installation
HACMP software, 7.4.1.2
Oracle database, 7.4.1.2
JD Edwards EnterpriseOne, 3.2.6
verifying for Windows, 4.3.8
IPC resources
Linux, 3.8.1.1
IPCS
setup for database security
iSeries, 2.9.5
iSeries
administering servers, 2.1
authorization lists
database security, 2.9.7
samples, 2.9.1.2
backing up tables, 10.2.2
batch output files, 2.7.1
batch processes, 2.7.1, 2.7.1
administration, 2.7.1
encoding passwords, 2.7.4
monitoring processes, 2.7.2
scheduling reports, 2.7.1.2
database security
administrators, 2.9.5
removing administrative authority, 2.9.6
user profile information, 2.9.7
enterprise server, 2.2.2, 2.5.1
architecture, 2.1.1
automatic start, 2.2.5
backup requirements, 10.1.2
email, 14.8.2.10
initialization, 2.1.2
installation problems, 14.8.2
interprocess communication (IPC), 14.8.5
JDBNET, 14.8.4
jde.ini file, 14.8.6
manual start, 2.2.4
process flow, 2.1.1
setting up a printer, 2.6.1
shutting down the server, 2.3
integrated file system logging support, 2.4
JD Edwards EnterpriseOne database security, 2.9.1
jdedebug.log, 2.5.4
jde.log, 2.5.4
library structure, 2.2.1
restoring a backup file, 10.2.6
setting up JD Edwards EnterpriseOne database security, 2.9.3
iSeries database security parameters, 2.8.2.1
BSFNLIB, 2.8.2.9
DTAPATH datapath, 2.8.2.4
INILIB, 2.8.2.3
JD Edwards EnterpriseOne DB admin profile, 2.8.2.8
modifying JDE profile, 2.8.2.6
modifying security profile, 2.8.2.7
modifying system profile, 2.8.2.5
secure log path, 2.8.2.10

J

JD Edwards EnterpriseOne
backing up tables, 10.1
JD Edwards EnterpriseOne DB admin profile security parameter, 2.8.2.8
JDBNET
troubleshooting
iSeries, 14.8.4
jdecpy.log
workstation, 13.4.1.3, 13.4.7
jdedebug.log
clearing the file, 2.5.4
disabling, 13.4.4
enterprise server, 14.1, 14.1.2, 14.1.2
disabling, 14.1.2
enabling, 14.1.2
naming conventions, 14.1.2
server locations, 14.1.2
setting up, 14.4
location on a workstation, 13.4.4
workstation, 13.4.1.4
jde.ini file
troubleshooting
iSeries, 14.8.6
UNIX, 14.9.2
UNIX
security, 3.6.5
Windows, 4.1.4, 4.5.4
jdeinst.log
definition, 13.4.1.3
jde.log
disabling, 13.4.3
enterprise server, 14.1, 14.1.1
setup, 14.3
iSeries, 2.5.4
locating the file, 13.4.5
workstation, 13.4.1.2
setup, 13.4.3
JDENET
iSeries
troubleshooting, 14.8.2.7
JITI
reducing the frequency, 6.3.5

K

kernels
AIX, 3.9.4.1
maxuproc, 3.9.2
parameter settings, 3.9.1
tune parameters, 3.9.4
viewing system parameters, 3.9.3
HP-UX
file descriptors, 3.7.4
message queues, 3.7.1
parameter settings, 3.7
processes, 3.7.5
semaphores, 3.7.2
shared memory, 3.7.3
Linux
parameter settings, 3.8.1
Sun Solaris
file descriptors, 3.7.4
message queues, 3.7.1
parameter settings, 3.7
processes, 3.7.5
semaphores, 3.7.2
shared memory, 3.7.3

L

libraries
iSeries, 2.2.1
Linux
administering servers, 3.1
batch processes
scheduling reports, 3.5.5
enterprise server, 3.3
architecture, 3.1.2
starting automatically, 3.2.5
file limits, 3.8.1.2
file security, 3.6.1
IPC resources, 3.8.1.1
kernel parameter settings, 3.8.1
log files
accessing, 2.4.1
clearing jdedebug.log, 2.5.4
clearing jde.log, 2.5.4
enterprise server
batch processes, 14.1.3
batch processing logs, 14.1
jdedebug.log, 14.1.2
jde.log, 14.1.1
viewing logs, 14.2
enterprise server batch process log, 14.1
enterprise servers, 14.1
JD Edwards EnterpriseOne workstations, 13.4.1.1
jdedebug.log, 13.4.1.4
locating, 13.4.4
jde.log
locating, 13.4.5
viewing, 13.4.2
workstation
application development, 13.4.1.3
batch processes, 13.4.1.5
compile errors, 13.4.6
global tables, 13.4.1.1
jdecpy.log, 13.4.7
jdeinst.log, 13.4.11
jde.log, 13.4.3
logic processing logs, 13.4.1.2, 14.1
sql.log, 13.4.8, 13.4.10
troubleshooting, 13.4.1
troubleshooting strategies, 13.4.1.7
viewing server logs, 14.2
workstation batch process log, 14.5
logging
integrated file system logging support
iSeries, 2.4
logic processing logs
enterprise server, 14.1

M

manual start
enterprise servers
iSeries, 2.2.4
UNIX, 3.2.2
Windows enterprise servers, 4.3.7
MC/ServiceGuard
setting up an Oracle package, 7.3.2
memory
kernel parameter settings
HP-UX, 3.7.3
Sun Solaris, 3.7.3
memory violations
workstations, 13.1.7
message queues
kernel parameter settings
HP-UX, 3.7.1
Sun Solaris, 3.7.1
multi-user mode
restrictions with Terminal Server Edition, 6.1.2

N

network
services for Windows, 4.3.1, 4.3.1, 4.3.2, 4.3.3, 4.3.4
Terminal Server Edition, 6.1.3
jde.ini file
UNIX

O

object owner IDs
JD Edwards EnterpriseOne tables, 10.1.3
ODBC
troubleshooting
sql.log, 13.4.10
Oracle
backing up tables on UNIX or Windows, 10.2.3
HACMP software, 7.4.1.2
restoring a backup file, 10.2.5
output files
viewing batch output files, 2.7.3
OUTQ
creating for iSeries printer, 2.6.2
starting for iSeries printer, 2.6.3
ownev, 7.7.1

P

packages
JD Edwards EnterpriseOne for a cluster, 7.3.3
parameter settings
AIX, 3.9.4.1
maxuproc, 3.9.2
tune parameters, 3.9.4
viewing system parameters, 3.9.3
HP-UX memory, 3.7.3
Sun Solaris memory, 3.7.3
passwords
encoding passwords, 2.7.4
PDF
iSeries output location, 2.7.1
performance
AIX, 3.9.4.1
kernel parameter settings, 3.9.4
Terminal Server Edition, 6.1.4
PORTTEST
iSeries, 14.8.2.6
printers
iSeries, 2.6.3
creating the OUTQ, 2.6.2
printing multiple copies to a remote printer, 2.6.4
setup, 2.6.1
troubleshooting, 13.2.1.3
UNIX
setup, 3.4
Windows, 4.2.1, 4.2.2, 4.2.2, 4.2.3, 4.2.5, 4.2.7
administrators, 4.2.8
setup problems, 14.10.5
printing multiple copies to a remote printer, 2.6.4
processes
iSeries
monitoring batch processes, 2.7.2
kernel parameter settings
HP-UX, 3.7.5
Sun Solaris, 3.7.5
Windows, 4.4.2
production workstation
preliminary troubleshooting, 13.2.2
troubleshooting, 13.2.1

Q

queue services
Windows, 4.3.1, 4.3.1, 4.3.2, 4.3.3, 4.3.4

R

reducing JITI frequency, 6.3.5
remote printers
printing multiple copies on the iSeries, 2.6.4
reports
batch processes, 4.4.4, 4.4.5
iSeries, 2.7.1, 2.7.1.2
UNIX, 3.5.4, 3.5.5
UNIX, 3.5.5
Windows
file location problems, 14.10.10
RS/6000
enterprise server
starting automatically, 3.2.4

S

scripts
Solaris clustering, 7.7.1
secure log path security parameter, 2.8.2.10
security
iSeries
JD Edwards EnterpriseOne databases, 2.9.1
setup for JD Edwards EnterpriseOne databases, 2.9.3
maintaining file security for Windows, 4.5
specification file, 4.5.1
UNIX
business function files, 3.6.3
file security, 3.6.1
jde.ini file (enterprise server), 3.6.5
specification files, 3.6.2
Windows, 4.5.2
semaphores
kernel parameter settings
HP-UX, 3.7.2
Sun Solaris, 3.7.2
Server Map data source
troubleshooting, 14.6.3
servers
AIX
application server for cluster, 7.6
setting value of maxuproc, 3.9.2
backing up tables, 10.2
backup requirements, 10.1.2
deployment server, 10.1.1
command line, 2.7.1, 3.5.5
batch process reports for iSeries, 2.7.1.2
batch process reports for UNIX, 3.5.4
iSeries, 2.2.2
administration, 2.1
cleaning up the enterprise server, 2.5.1
logging support, 2.4
UNIX
administration, 3.1
jde.ini file security, 3.6.5
setting up a printer, 3.4
shutting down the enterprise server, 3.3
starting the enterprise server, 3.2.1
Windows, 4.1, 4.2.1, 4.3.5
services
Windows, 4.2.2, 4.3.1
setting up a printer
iSeries, 2.6.2, 2.6.3
printing multiple copies to a remote printer, 2.6.4
Windows
troubleshooting, 14.10.5
shared memory
kernel parameter settings
HP-UX, 3.7.3
Sun Solaris, 3.7.3
SMIT application
setting the value of maxuproc, 3.9.2
Solaris
clusters, 7.7.1, 7.7.1, 7.7.1
enterprise server
automatic start, 3.2.4
kernel parameter settings, 3.7
file descriptors, 3.7.4
message queues, 3.7.1
processes, 3.7.5
semaphores, 3.7.2
shared memory, 3.7.3
specification file security
UNIX, 3.6.2
SQL Server
backing up tables, 10.2.4
restoring a backup file, 10.2.7
Windows
restoring a backup file, 10.2.8
sql.log
reading, 13.4.1.6
workstation, 13.4.1.3, 13.4.8, 13.4.9, 13.4.10
troubleshooting ODBC, 13.4.10
turning on the log, 13.4.9
standalone executable files, 12.2
starting the enterprise server
iSeries, 2.2.2
automatic, 2.2.5
manual, 2.2.4
SUNClustering
registering JD Edwards EnterpriseOne, 7.7.6
SunOracleMgr.sh, 7.7.1
SunStartResource.sh, 7.7.1
SunStopResource.sh, 7.7.1

T

tables
backing up JD Edwards EnterpriseOne tables, 10.1
backing up servers, 10.2
object owner IDs, 10.1.3
Terminal Server Edition
incorporating Citrix Metaframe, 6.1.1
network considerations, 6.1.3
performance considerations, 6.1.4
restrictions in mult-iuser mode, 6.1.2
setting up JD Edwards EnterpriseOne, 6.2
troubleshooting, 6.3
JD Edwards EnterpriseOne UBE output security, 6.3.1
understanding, 6.1
testing
iSeries
PORTTEST, 14.8.2.6
submitting a report, 14.8.2.8
troubleshooting
accessing JD Edwards EnterpriseOne, 6.3.12
batch processes, 13.2.4
data selection and sequencing criteria lost, 6.3.9
development workstation, 13.3.1
enterprise servers, 14.1, 14.6.1
batch process log, 14.1, 14.1.3
jdedebug.log, 14.1.2
jde.log, 14.1.1
Server Map data source, 14.6.3
UNIX, 14.9.1
Windows, 14.10.1
HP-UX on a cluster, 7.8
import/export with Microsoft Excel, 6.3.3
iSeries enterprise server, 14.8.2, 14.8.2.8
architecture, 2.1.1
initialization, 2.1.2
interprocess communication (IPC), 14.8.5
JDBNET, 14.8.4
jde.ini file, 14.8.6
PPAT, 14.8.2.10
running JDENET, 14.8.2.7
JD Edwards EnterpriseOne development tools, 6.3.11
log path is incorrect, 6.3.13
logging in to JD Edwards EnterpriseOne, 6.3.14
logging off versus disconnecting, 6.3.7
ODBC
sql.log, 13.4.10
production workstations, 13.2.1
restarting JD Edwards EnterpriseOne, 6.3.6
run-time error occurs during server connection test, 6.3.10
setting up the jdedebug.log, 13.4.1.4
shortcuts do not work in email messages, 6.3.8
specification files are locked, 6.3.4
submit UBE locally to WTS, 6.3.2
Terminal Server Edition, 6.3
JD Edwards EnterpriseOne UBE output security, 6.3.1
UBE output security on WTS, 6.3.1
UNIX enterprise server
architecture, 3.1.2
directory structure, 3.1.1
initialization, 3.1.3
viewing log files, 13.4.2
Windows enterprise server, 4.1.1, 4.1.2, 4.1.3, 14.10.1
email, 14.10.15
finding data, 14.10.11
log file location, 14.10.7
report file location, 14.10.10
running JD Edwards EnterpriseOne manually, 14.10.9
setting up a printer, 14.10.5
setting up JD Edwards EnterpriseOne accounts, 14.10.2
stopping JD Edwards EnterpriseOne as run manually, 14.10.13
testing by submitting a report, 14.10.11
using Visual C++ to stop processes, 14.10.14
workstations, 13.1
batch process log, 13.4.1.5
business functions, 13.3.4
compile error log, 13.4.6
DLL files (production), 13.2.9
event rules, 13.3.3
interactive applications, 13.2.1
jdecpy.log, 13.4.7
jdeinst.log, 13.4.11
log files, 13.4.1
preliminary troubleshooting, 13.2.2
printing, 13.2.1.3
setting up the jde.log, 13.4.3
sql.log, 13.4.8, 13.4.10
standalone installation, 13.2.1.1
strategies using log files, 13.4.1.7
viewing server logs, 14.2
troubleshooting JD Edwards EnterpriseOne servers
web servers, 14.11.3
tune parameters
AIX, 3.9.4.1
kernel parameter settings on AIX, 3.9.4
type security parameter, 2.8.2.1

U

UNIX
administering servers, 3.1
AIX
kernel parameter settings, 3.9.1
backing up Oracle tables, 10.2.3
batch output files
reviewing, 3.5.1
batch processes
yadministration, 3.5.1
monitoring processes, 3.5.2
running reports, 3.5.4
scheduling reports, 3.5.5
business function files
security, 3.6.3
creating a separate instance of the enterprise server, 3.10.1
enterprise server, 3.2.1, 3.3
architecture, 3.1.2
backup requirements, 10.1.2
directory structure, 3.1.1
initialization, 3.1.3
jde.ini file, 14.9.2
manual start, 3.2.2
setting up a printer, 3.4
file security, 3.6.1
JD Edwards EnterpriseOne executable files
security, 3.6.4
jde.ini file
security, 3.6.5
kernel parameter settings
HP-UX, 3.7
Linux, 3.8.1
Sun Solaris, 3.7
restoring an Oracle backup file, 10.2.5
running multiple JD Edwards EnterpriseOne enterprise servers, 3.10.1
specification files
security, 3.6.2
verifying the JD Edwards EnterpriseOne installation, 3.2.6
user accounts, setting up on Windows, 4.2.5
user profiles
iSeries database security, 2.9.6
displaying information, 2.9.7

W

Web Services Gateway serversWSG servers, 5.2
Windows
administering the server, 4.1
backing up Oracle tables, 10.2.3
batch, 4.4.1
batch output files, 4.4.3
batch processes, 4.4.2, 4.4.4, 4.4.5
business function files, 4.5.2
enterprise server, 4.1.1, 4.1.2, 4.1.3, 4.2.1, 4.3.1, 4.3.2, 4.3.5, 4.3.7
backup requirements, 10.1.2
file security, 4.5
JD Edwards EnterpriseOne on Terminal Server Edition, 6.1
jde.ini file, 4.1.4, 4.5.4
printer setup, 4.2.2
restoring an Oracle backup file, 10.2.5
specification files, 4.5.1
SQL Server
restoring a backup file, 10.2.8
verifying the JD Edwards EnterpriseOne installation, 4.3.8
workstations
development (troubleshooting)
business functions, 13.3.4
event rules, 13.3.3
error messages, 13.1
global tables, 13.4.1.1
log files
application development, 13.4.1.3
batch processes, 13.4.1.5
compile errors, 13.4.6
jdecpy.log, 13.4.7
jdeinst.log, 13.4.11
jde.log, 13.4.3
sql.log, 13.4.8, 13.4.10
troubleshooting strategies, 13.4.1.7
viewing, 13.4.2
logic processing logs, 13.4.1.2
preliminary troubleshooting, 13.2.2
production (troubleshooting), 13.2.1
batch processes, 13.2.4
DLL files, 13.2.9
printing, 13.2.1.3
standalone installation, 13.2.1.1
WSG servers, monitoring, 5.2
PKGUyPKƉZE OEBPS/unix_and_linux_servers.htm Administering the UNIX and Linux Servers

3 Administering the UNIX and Linux Servers

This chapter contains the following topics:

3.1 Understanding Server Administration for UNIX and Linux

The JD Edwards company supports Oracle's JD Edwards EnterpriseOne enterprise servers for UNIX operating systems on the Hewlett-Packard HP 9000 (HP-UX), the IBM RS/6000 (AIX), and the Sun Microsystems SPARC (Solaris) platforms. In addition, beginning with JD Edwards EnterpriseOne 8.93, RedHat Enterprise Linux AS on the Intel Architecture is also supported. To operate the UNIX or Linux enterprise server, you need to perform administrative procedures on the server to ensure that JD Edwards EnterpriseOne will run properly.


Note:

Some information in this and other guides refers to UNIX generically and includes the supported Linux platforms unless otherwise noted.

This section discusses:

  • JD Edwards EnterpriseOne Directory Structure for UNIX and Linux.

  • JD Edwards EnterpriseOne Architecture and Process Flow for UNIX and Linux.

  • JD Edwards EnterpriseOne Initialization for UNIX and Linux.

3.1.1 JD Edwards EnterpriseOne Directory Structure for UNIX and Linux

This is a list of directories that are shipped on the UNIX and Linux JD Edwards EnterpriseOne Server Installation CD. They should be installed under the JD Edwards EnterpriseOne base directory; for example, install them in /u01/JDEdwards/E900. Indented names indicate subdirectories of the directories, which are not indented.

DirectoryDescription
pathcodeThe main directory for the business function shared libraries, C header files, object files, source files, and specification (spec or TAM) files. Upon installation, this directory is copied to the correct path codes, such as PD900 and DV900. These subdirectories are included:
  • bin32 - Business function shared libraries.

  • Spec files - Binary data files in a JD Edwards proprietary format.

systemThe main directory for the system-level executables, shared libraries, C header files, libraries, and localization files. These subdirectories are included:
  • bin32 - System-level executables and scripts.

  • include - System-level C header files.

  • includev - System-level C header files provided by third-party vendors, such as Vertex.

  • lib - System-level shared libraries and export files.

  • libv32 - System-level shared libraries provided by third-party vendors.

iniThe location of the JDE.INI file.
PrintQueueThe location to which all .PDF file outputs for reports are written.
logThe location to which the jde_xxx.log and jdedbug_xxx.log files are written.
packagesThe server package installation base directory. Directories exist here only when a package has been installed. Under the package directory are subdirectories named for each package that has been installed. Located under each package are these directories:
  • bin32 - Business function shared libraries.

  • include - Business function header files.

  • obj - Business function object files. (These are divided among lower-level subdirectories that correspond to each shared library in the bin32 directory.)

  • source - Business function source files. (These are divided among lower-level subdirectories that correspond to each shared library in the bin32 directory.)

  • spec - Specification files. (These binary data files are in a JD Edwards proprietary format.)


3.1.2 JD Edwards EnterpriseOne Architecture and Process Flow for UNIX and Linux

The host server processes in this flowchart perform the indicated actions.

Figure 3-1 UNIX host server process

Description of Figure 3-1 follows

This information explains the process flow:

  1. The jdenet_n Master process spawns jdenet_n Slave and jdenet_k processes (also called kernels) at startup or as they are needed. JD Edwards EnterpriseOne uses a number of different types of kernels to handle different types of processing, even though all of these have the same process name in the operating system (jdenet_k). The definitions for the number of processes to start and what types to start are stored in the JDE.INI file.

  2. The queue kernel process spawns the runbatch process whenever a relevant batch process request is placed in the Job Control Status Master table (F986110). The runbatch process completes the job, updates the F986110 table, and then quits. In JD Edwards EnterpriseOne, you use the Job Queue Maintenance program (P986130) to set up and manage the job queues.

    Nearly all jdenet_k processes access various other database tables as needed. The runbatch process, for instance, accesses and modifies any database table that is relevant to the particular business logic it is running.

  3. Message queues are a type of interprocess communication (IPC) resource. They are allocated by the jdenet_n processes by calls to the operating system. While the software is running, operating system information about the message queues can be obtained by using the command ipcs.

    When message packets are routed to the jdenet_n process from a client or another server, the jdenet_n process places them in the appropriate message queue according to the type of message. For example, when a client submits a batch process, a message is routed to the batch process kernel; when business logic needs to be run on the server, a request is routed to the CallObject kernel; when a user signs on to the system, a request is routed to the security kernel, and so on.

    Each message queue has an identifier (IPC key) so that multiple processes can access them. JD Edwards EnterpriseOne uses a configurable IPC key range, which is controlled by the startIPCKeyValue in the JDE.INI file, in case a conflict occurs with other software that is using IPC resources.

3.1.2.1 jdenet_n Operation

The jdenet_n process usually starts when you run the supplied JD Edwards EnterpriseOne startup script: RunOneWorld.sh, which then starts all other processes as needed.

The jdenet_n process listens to the socket (port) as specified in the JDE.INI file by the keywords ServiceNameListen and ServiceNameConnect. These two keywords should be set to the same number; this number must be the same for every client who wishes to connect to the JD Edwards EnterpriseOne server.

The definitions for the particular jdenet_k processes to start are also given in the JDE.INI file. They are listed in the sections headed by [JDENET_KERNEL_DEFx]. Each of these entries lists the type of jdenet_k processes to start and the maximum number of jdenet_k processes of this type to start.

The number of jdenet_n slave processes to start is listed in the JDE.INI file under the keyword maxNetProcesses. The purposes of these slave processes are to provide parallel processing for the job of listening to the socket and to put the associated messages on the message queues for the jdenet_k processes to finish.

3.1.2.2 jdenet_k Operation

jdenet_k processes are referred to as kernel processes. They do the actual work on the enterprise server. When a jdenet_k process starts, it can be any type of kernel process. The jdenet_n process instructs each kernel process to be of a certain type.

The jdenet_k process that becomes a CallObject kernel has the job of calling business function logic on the server. Business function logic is written in C code and compiled into UNIX-shared libraries. The shared libraries are loaded onto the jdenet_k processes and then called directly through a C function call.

The jdenet_k process that becomes a batch process kernel waits for requests to run batch processes from the client. These batch processes are then placed in the Job Control Status Master table (F986110). The processes are then picked up by the queue kernel processes that launch runbatch processes, as required.

Many other types of jdenet_k processes exist. Review the JDE.INI file for a complete list.

3.1.3 JD Edwards EnterpriseOne Initialization for UNIX and Linux

This initialization occurs when you start JD Edwards EnterpriseOne programs, such as the queue kernel, runbatch, and so on:

  • The environment name is passed as a command line argument to the program (such as porttest, runbatch, and so on).

  • This environment can be translated to a different environment, based on the settings in the [SERVER ENVIRONMENT MAP] section of the JDE.INI file.

  • The environment that is used must be a valid entry in the Library List Master File table (F0094). Likewise, it must have a valid corresponding path code in the Environment Detail table (F00941).

  • These JDE.INI settings in the [DB SYSTEM SETTINGS] section are used to determine where the JD Edwards EnterpriseOne server startup tables, such as the Data Source Master (F98611) and the Object Configuration Master (F986101), are located:

    • Base Datasource

    • Object Owner

    • Server

    • Database

    • Load Library

    • Type

  • Using this information, the F986101 table in the specified database on the server is opened.

  • When an override for a given table or the current user exists, that data source (the OMDATP field in the F986101 table) is used for the given object or user and environment. Otherwise, the data source in which OMOBNM=DEFAULT for the given environment is used. Ignore any inactive records (that is, OMSTSO=NA).

    We strongly recommend that you do not have any default records for reports (OMOBNM=DEFAULT and OMFUNO=UBE) on the server. These records might prevent report interconnections (that is, one report calling another report) from starting correctly.

  • Each unique data source in the F986101 table should correspond to one entry in the F98611 table.

  • The corresponding information in the F98611 table must be correct. In particular, the OMDLLNAME field must display the correct library for the database to which the data source points.

  • For an Oracle database, the OMDATB field from the F98611 table maps to an entry in the tnsnames.ora file. This tnsnames.ora file must be set up correctly. (Ask an Oracle database administrator to verify the setup).

3.2 Starting the Enterprise Server for UNIX or Linux

This section provides an overview of the enterprise server startup for UNIX or Linux and discusses how to:

  • Start the enterprise server of UNIX or Linux manually.

  • Start the enterprise server for HP-UX automatically.

  • Start the enterprise server for AIX and Solaris automatically.

  • Start the enterprise server for Linux automatically.

  • Verify the JD Edwards EnterpriseOne installation.

3.2.1 Understanding Enterprise Server Startup for UNIX or Linux

You can start the enterprise servers either manually at the command line or automatically when the server boots. The manual process is the same for all supported platforms, but the automatic process varies slightly by platform.


Note:

If you are running JD Edwards EnterpriseOne on the same server as the Oracle database, you must make sure that Oracle is running before you start JD Edwards EnterpriseOne. In particular, if you are starting JD Edwards EnterpriseOne at system boot time, you must make sure the Oracle startup processes are completed first.

RunOneWorld.sh is the script that starts the JD Edwards EnterpriseOne system on the enterprise server. This script:

  • Checks for existing JD Edwards EnterpriseOne processes.

    The script returns an error if it detects that JD Edwards EnterpriseOne is already running.

  • Runs the rmics.sh script to clear IPC resources.

    This script ensures no IPC resources conflict with other software.

  • Starts jdenet_n, which is the JD Edwards EnterpriseOne network listener that receives requests from JD Edwards EnterpriseOne workstations.

  • Runs a program called cleanup that checks for unfinished batch processes from a previous shutdown.

The default database parameters for UNIX might not fully support multiple users. You might reach the maxprocess limit for the database. The initial settings are for a small database, so you should change these parameters to a medium setting to avoid database problems. These settings reside in the init.ora file. These path is an example of where you might typically find this file:

/u01/app/oracle/product/8.0.5/dbs/init.ora

3.2.2 Starting the Enterprise Server for UNIX or Linux Manually

To start the enterprise server for UNIX or Linux manually:


Note:

This procedure is the same for all supported UNIX or Linux operating systems.

  1. Sign on to the machine using the appropriate user ID, as set up during the installation process.

    If you used the JD Edwards-recommended user ID, the user ID is jde.

  2. Enter these commands:

    • cd log_directory

      This command moves the user's current directory to the log directory. The administrator determines the name of this directory.

    • rm -f jde*log*

      This command deletes the log files in the directory.


      Note:

      Use extreme care when you enter this command. A syntax error in this command can cause severe problems on the system.

    • RunOneWorld.sh

      This script starts the JD Edwards EnterpriseOne system.

  3. Sign off the system.

3.2.3 Starting the Enterprise Server for HP-UX Automatically

To start the enterprise server for HP-UX automatically:

  1. Create a script named psft in /sbin/init.d with all necessary permissions for execution.

    The script should contain only these:

    #! /sbin/sh
    
    /bi n/su - psft_user -c `$SYSTEM/bin32/RunOneWorld.sh'
    

    The value psft_user is the name of the user who owns the shell script $SYSTEM/bin32/RunOneWorld.sh. Make sure that no interactive commands appear in the psft_user profile, and that RunOneWorld.sh has all necessary permissions for execution.

  2. Using this command, create a soft link named S995psft to the psft script in the directory named /sbin/rc2.d.

    ln -s /sbin/init.d/psft /sbin/rc2.d/S995psft
    
  3. Verify that these line is present in the profile of the user who owns RunOneWorld.sh:

    /usr/local/bin/oraenv
    

    Before you execute oraenv, ensure that the Oracle environment variables of ORACLE_BASE, ORACLE_HOME, ORACLE_SID, ORACLE_TERM, and ORAENV_ASK are properly assigned and exported. Also, you must add $ORACLE_HOME/bin to the PATH environment variable.

  4. Set ORACLE_TERM to hp.

  5. Set ORAENV_ASK to NO.

  6. If this command is in the profile, delete it:

    unset ORAENV_ASK
    

3.2.4 Starting the Enterprise Server for AIX and Solaris Automatically

To start the enterprise server for AIX and Solaris automatically:

  1. Create a script named rc.psft in /etc with all necessary permissions for execution.

    The script should contain only these:

    #! /bin/sh
    
    /bin/su - psft_user -c `$SYSTEM/bin32/RunOneWorld.sh'
    

    The value psft_user is the name of the user who owns the shell script $SYSTEM/bin32/RunOneWorld.sh. Make sure there are no interactive commands in the psft_user .profile, and that RunOneWorld.sh has all the necessary permissions for execution.

  2. Add this line at the end of the text file named inittab in /etc:

    psft:2:wait:/etc/rc.psft
    
  3. Verify that this line is present in the .profile of the user who owns RunOneWorld.sh.

    . /usr/bin/oraenv
    

    Before you execute oraenv, ensure that the Oracle environment variables of ORACLE_BASE, ORACLE_HOME, ORACLE_SID, ORACLE_TERM, and ORAENV_ASK are properly assigned and exported. Also, you must add $ORACLE_HOME/bin to the PATH environment variable.

  4. Set ORACLE_TERM to hp.

  5. Set ORAENV_ASK to NO.

    To see a list of values for ORACLE_SID, look at the oratab text file in /etc.

  6. If this command is in the .profile, you must delete it:

    unset ORAENV_ASK
    

3.2.5 Starting the Enterprise Server for Linux Automatically

To start the enterprise server for Linux automatically:

Add this line to the rc.local file in the /etc directory:

/bin/su - psft_user -c `$SYSTEM/bin32/RunOneWorld.sh'

The value psft_user is the name of the user who owns the shell script $SYSTEM/bin32/RunOneWorld.sh. Make sure there are no interactive commands in the psft_user .profile (or .bash_profile), and that RunOneWorld.sh has all the necessary permissions for execution.

3.2.6 Verifying the JD Edwards EnterpriseOne Installation

To verify the JD Edwards EnterpriseOne installation:

After you start JD Edwards EnterpriseOne, execute these commands:

cd $SYSTEM/bin32
porttest userID password environment

The porttest program initializes an environment, initializes a user, opens the Account Balances table (F0902), and displays up to 99 rows of data.


Note:

The parameters for userID, password, and environment should be any valid JD Edwards EnterpriseOne user ID, password, or environment.

3.2.6.1 Understanding Java Runtime Engine Installation Issue on Unix

With tools release 8.98 the Java Runtime Engine is bundled into the tools code. It will be in the directory .../system/jre. However, the problem is that prior to Apps Release 8.12 the installer will not set all the correct paths for this. So if a customer is using 9.0 with tools 8.98 they will most likely get an error like this from the JDE log:

12320/1 MAIN_THREAD                             Tue Nov  8 17:35:05.884717     
ipcmisc.c299
        process 12320 </u04/oneworld/e1t_owa_stageing_development/system/bin32
/jdenet_n> registered
in entry 0

12320/1 MAIN_THREAD                             Tue Nov  8 17:35:37.374029     
 netstart.c247
        Failed to autostart kernel in range 29


and get a core file when the jdenet_k #29 tries to start.  To fix this they will
 need to add the path .../system/jre/1.4 to the LD_LIBRARY_PATH, LIBPATH, SHLIB_
PATH. 

3.3 Shutting Down the Enterprise Server for UNIX or Linux

The shutdown process is identical for all supported UNIX or Linux operating systems.

EndOneWorld.sh is the script that stops the JD Edwards EnterpriseOne system on the enterprise server. This script completes these functions:

  • Checks for existing runbatch processes.

    If any runbatch (batch process) is running, the user is prompted to make sure that he or she wants to shut down the enterprise server.

  • Checks for and ends JD Edwards EnterpriseOne processes other than jdenet_n and jdenet_k.

  • Shuts down jdenet_n and jdenet_k processes by running endnet.

  • Runs the rmics.sh script to clean up any remaining IPC resources.

3.3.1 Shutting Down the Enterprise Server for UNIX or Linux

To shut down the enterprise server for UNIX or Linux:

  1. Sign on using the appropriate user ID that you set up during the installation process.

  2. Execute these commands:

    cd $SYSTEM/bin32
    
    EndOneWorld.sh
    

3.4 Setting Up a Printer for UNIX or Linux

Each supported UNIX system use different processes for setting up printers. HP-UX uses a tool called SAM to help in setting up a printer; AIX uses a tool called SMIT; Solaris uses a tool called Admintool; and RedHat Enterprise Linux AS uses a tool called printgui-conf. Each of these processes requires a privileged account to access the specific setup tasks. Normally, you will need to use the root account of the system. For more information about printer setup, see the appropriate HP-UX, AIX, or Solaris documentation.

3.5 Administering Batch Processes for UNIX or Linux

This section provides an overview of batch process administration for UNIX or Linux and discusses how to:

  • Monitor batch processes.

  • List batch output files.

  • Run reports form the command line for UNIX or Linux.

  • Schedule reports from the command line for UNIX or Linux.

3.5.1 Understanding Batch Process Administration for UNIX or Linux

Administering batch processes involves knowing what processes run when JD Edwards EnterpriseOne starts, where files are placed before and after printing, and how to watch those processes.

Processes running for JD Edwards EnterpriseOne are owned by the user who started the JD Edwards EnterpriseOne software. The user ID for this user is set up during the installation of the software, and is site dependent. When JD Edwards EnterpriseOne starts, these processes start and run under the environment and security of the user who started them:

ProcessDescription
jdenet_nThe network listener that listens for connection requests.
jdenet_kThe jdenet_n process starts the jdenet_k processes, which control JD Edwards EnterpriseOne components, such as the security server, the transaction monitor, and data replication.

Use the jdejobs command to monitor current batch processes. This example is a sample output:

pfst900 (EnterpriseOne Admin,,,):
Semaphores: 1  Shmem Segs: 5  Msg.Queues: 13
Jobs on ent-1:
6137 ttyp6   0:43 jdenet_n
6163 ttyp6   0:44 jdenet_k
6188 ttyp6   0:44 jdenet_k
7213 ttyp6   2:12 jdenet_n
7241 ttyp6   0:47 jdenet_k
9008 ttyp6   1:36 jdenet_n
9009 ttyp6   0:45 jdenet_k
11042 ttyp6   0:09 runbatch

In the output, jdenet_n jobs are listening for requests, and four jdenet_k jobs are handling various JD Edwards EnterpriseOne kernel functions. A runbatch job is processing a report.

The first column of the output displays the UNIX process ID that is associated with each process. For more information about a particular process, look for the files in the log directory that have the same process ID as part of the file name.

All output from each report, regardless of whether it is a preview, is placed in the PrintQueue directory under the installation directory of JD Edwards EnterpriseOne before printing. Depending on the JDE.INI settings for the workstation, the job might not be deleted after printing.

Jobs are printed to the location specified in the JDE.INI file unless a JD Edwards EnterpriseOne program overwrites them. Use the Printers program to specify default printers.

Two settings in the JDE.INI file for the workstation tell the server whether to print the report immediately upon completion, and whether to save the output from the report or delete it. These settings are as follows:

 [NETWORK QUEUE SETTINGS]
SaveOutput=TRUE
PrintImmediate=TRUE

Setting SaveOutput to TRUE causes the JDE.INI to hold the jobs within the PrintQueue directory until the user explicitly deletes them. Setting PrintImmediate to TRUE tells the JDE.INI file to print the job immediately after completion of the report.

You can list output files. The returned data looks similar to this:

R014021_XJDE0001_4554_PDF
R014021_XJDE0001_4554_PDF.jde.log
R014021_XJDE0001_4554_PDF.jdedebug.log
R31515_XJDE0001_4566_PDF
R31515_XJDE0001_4566_PDF.jde.log
R31515_XJDE0001_4566_PDF.jdedebug.log
R94NM08_XJDE0008_4568_PDF
R94NM08_XJDE0008_4568_PDF.jde.log
R94NM08_XJDE0008_4568_PDF.jdedebug.log
R94NM10_XJDE0016_4526_PDF
R94NM10_XJDE0016_4526_PDF.jde.log
R94NM10_XJDE0016_4526_PDF.jdedebug.log
R94NM10_XJDE0016_4526_PDF.ps
R94NM10_XJDE0016_4527_PDF
R94NM10_XJDE0016_4527_PDF.jde.log
R94NM10_XJDE0016_4527_PDF.jdedebug.log
R94NM10_XJDE0016_4527_PDF.pcl

The file names in this example are the actual reports that were generated when the job was executed. The file naming conventions are as follows:

SegmentDescription
R31515The report name
XJDE00001The report version executed
1914The request number assigned by JD Edwards EnterpriseOne
PDFA PDF file, meant for viewing on the workstation
.jde.logThe file extension that indicates the log file for the report
.jdedebug.logThe file extension that indicates the debug log for the report
.psThe file extension that indicates a file formatted for postscript printing
.pclThe file extension that indicates a file formatted for pcl printing

You should encourage workstation users to use the SaveOutput=FALSE entry in their jde.ini file. If users at workstations decide to save their output, they should periodically delete the entries through JD Edwards EnterpriseOne. When you delete .PDF files from the operating system, the corresponding JD Edwards EnterpriseOne print job entries in the Job Control Status Master table (F986110) are not deleted. You must manually delete these entries from JD Edwards EnterpriseOne using the Work with Servers program (P986116).

3.5.2 Monitoring Batch Processes

To monitor batch processes:

From the operating system prompt, enter this command, replacing userid with the user ID of the user who started JD Edwards EnterpriseOne:

jdejobs <userid>

If you omit the user ID, the current user is assumed.

jdejobs is a script in the JD Edwards EnterpriseOne $SYSTEM/bin32 directory that uses the UNIX ps command to display job information.

3.5.3 Listing Batch Output Files

To list batch output files:

  1. From the operating system prompt, enter this command:

    cd $EVRHOME/PrintQueue
    

    This command changes the directory to the PrintQueue directory. The environment variable EVRHOME should be set to the JD Edwards EnterpriseOne installation directory.

  2. Enter this command to list the files:

    ls
    

3.5.4 Running Reports from the Command Line for UNIX or Linux

You can initiate batch process reports from the server command line by issuing this command (you must have the proper authority and the path equal to the description in the installation instructions) :

runube  <[-p|-P] [-f|-F|-d|-D passfile] [user password]>
   <Environment>
   <Role>
   <ReportName>
   <VersionName>
   <JobQueue>
   <"Interactive"|"Batch">
   <"Print"|"Hold">
   <"Save"|"Delete">
    [Printer]

The format for the passfile parameter is:

[enterpriseoneusername
 password]

Note:

The [user password] parameter has been deprecated.

For the command parameters, only the first character of the parameter name is required. The vertical bar symbol (|) indicates that you must specify one of the parameters on either side of the vertical bar. The brackets indicate an optional parameter. These options apply to the runube command:

ParameterDescription
–pPrompts for user/password information.
–PPrompts for user/password information.
–fReads user/password information from the plain text file that is specified in passfile (FilePath).
–FReads user/password information from the plain text file that is specified in passfile (FilePath).
–dReads user/password information from the plain text file and indicates the automatic removal of the file after the job has read the credentials from it.
–DReads user/password information from the plain text file and indicates the automatic removal of the file after the job has read the credentials from it.
InteractiveThe system holds the current terminal session until the entire report is processed.
BatchThe runube command submits the job to a UBE kernel, which in turn will send the job submission to Queue kernel, then returns control of the terminal to the user.
PrintAfter the batch process completes generating its output, the output is printed to the specified printer queue. If you do not specify a printer on the runube command line, the system uses the EnterpriseOne user's default printer specified in the Printers program (P98616).
HoldThe batch output is not printed immediately after the job completes, but may be printed later from 'Work with Submitted jobs'
SaveThe system retains the report's output and all records of its execution.
DeleteThe system removes any output from the PrintQueue directory, from Report definition output, and also removes the records of the jobs execution from F986110 after the report prints.

3.5.4.1 Example: Running Reports from the Command Line for UNIX or Linux

This example displays a command for executing a batch process report:

runube KL5952 mypass PROD *ALL R0006P XJDE0001 QBATCH I P D printer_1

3.5.5 Scheduling Reports from the Command Line for UNIX or Linux

You can schedule a report from the command line for processing on a future date, daily, or even a recurring day of the week. This task can be accomplished by using the operating system utilities called at, batch, and cron. The batch and at utilities are used to schedule single occurrence jobs; cron can be used to schedule recurring jobs. Use the at command or the batch command to schedule a job at a later time. The command line structure of these commands is identical, but you use them differently.

The batch command is intended to run a job immediately in the background, providing that the system load is low enough to handle the request. If the system load is not low enough, the job is held until system activity is low enough to handle the new request load.

The at command also runs jobs in the background, but enables you to schedule the job to run at a future time. You can use this utility to run the batch job during off-peak hours.

The command format for the batch command is as follows:

batch command

The command format for the at command is as follows:

at -t CCYYMMDDHHMMSS command

The -t switch is used to schedule the time. This table describes the CCYYMMDDHHMMSS variable:

SegmentDescription
CCCentury (first two digits of the year).
YYYear (last two digits of the year).
MMTwo-digit value of the month (such as 02 for February).
DDThe day of the month (01 - 31).
HHThe hour to start the job (00 - 23).
MMThe minute to start the job (00 - 59).
SSThe second to start the job (00 - 59).
commandThe command to run at the specified time. To schedule a report, use the runube command.

You can use the cron UNIX utility to run jobs at a scheduled time. You can specify variable times, such as once a year or once every hour. The operation of this utility is controlled by a table of events based upon each user.

Enter this command to modify the cron schedule and edit the cron table for the current user:

crontab -e

The format of the cron table is as follows:

mm HH DD MM W command

This table describes the variables for this command:

SegmentDescription
mmThe minute to run the job (00 - 59, or * for any minute).
HHThe hour to run the job (00 - 23, or * for any hour).
DDThe day of the month to run the job (0 - 31, or * for any day).
MMThe month to run the job (1 - 12, or * for any month).
WThe day of the week to run the job (0 - 6, with 0 being Sunday).
commandThe command to run at the specified time.

After exiting the editor, the operating system should respond with a message stating that the crontab has been modified.

3.5.5.1 Example: Scheduling Single-Occurrence Reports from the UNIX or Linux Command Line

This example displays a command line used to schedule a report to run at 06:00 on February 26, 2005:

at -t20050226060000 runube KL595218 mypass PROD *ALL R0006P XJDE0001
QBATCH Interactive Print Delete printer_1

3.5.5.2 Example: Scheduling Recurring Reports from the UNIX or Linux Command Line

This example displays a command line used to schedule a report to run at 06:00, any Sunday in the month of February (by the use of * for the day of the month and 0 for the day of the week).

00 06 * 02 0 runube KL5952 mypass PROD *ALL R0006P XJDE0001 QBATCH 
Interactive Print Delete printer_1

3.6 Maintaining File Security for UNIX and Linux

This section provides an overview of file Security and discusses how to:

  • Set specification file security.

  • Set business function file security.

  • Set executables security.

  • Set jde.ini file security.

3.6.1 Understanding File Security Maintenance for UNIX and Linux

Overall, only two accounts ever need operating system access to the JD Edwards EnterpriseOne environment files and version executables: the account that starts and stops JD Edwards EnterpriseOne, and the account that builds the environment SPEC and BSFN files. Normally, these accounts are the same.

Specification (SPEC) files are the first part of the environment files. You access these files by the JD Edwards EnterpriseOne kernel processes. These files should never be accessed directly by an operating system user. Because of this, security on these files should be read/write for the user and role. They are not executables, so no reason exists for setting the executable option for any user, or role.

Business function security should be similar to SPEC file security. This enables the business function code to be viewed, but not modified directly on the server. In general, both business function changes and SPEC file changes are controlled by the deployment server.

You should prevent access to the JD Edwards EnterpriseOne executable files to prevent other users from attempting to start JD Edwards EnterpriseOne. Running the same version of JD Edwards EnterpriseOne on the same system and using the same JDE.INI settings can cause unpredictable results. In most cases, the second startup will fail, but giving users access to the shutdown procedures can enable them to shut down JD Edwards EnterpriseOne.

You must keep the jde.ini file as secure as possible. This file contains a database user name and password that enables JD Edwards EnterpriseOne security to function. This database account is given read authority to the JD Edwards EnterpriseOne Security table (F98OWSEC), which controls JD Edwards EnterpriseOne access.

Access to the F98OWSEC table, which contains privileged database user names and passwords, could give a user the ability to manipulate any data in the database, regardless of its sensitivity or security. Because of this, you should restrict access to the jde.ini file as much as possible.

3.6.2 Setting Specification File Security

To set specification file security:

Add this line to the .profile:

umask 022

This command sets the default file security for files that get created on the server. When a package build completes, SPEC files and business functions should be created with read permission for everyone, and with write permission for only the file owner. In general, both business function changes and SPEC file changes are controlled by the deployment server.

The security for the SPEC files should look similar to these example:

-rw-r--r-- psft psft jdeblc.xdb
-rw-r--r-- psft psft jdeblc.ddb

3.6.3 Setting Business Function File Security

To set business function file security:

  1. Enter this command in the BSFN Source directory:

    chmod 644 *.c
    
  2. Enter this command in the BSFN Include directory:

    chmod 644 *.h
    

    The security for the BSFN files should look similar to these example:

    -rw-r--r-- psft psft b4200100.c
    
    -rw-r--r-- psft psft b4200100.h
    

3.6.4 Setting Executables Security

To set executables security:

UNRECOGNIZED STYLE ->class=singlestep>Enter this command:

cd $SYSTEM/bin32
chmod 540 *..sh

The access granted by this command gives all users in the JD Edwards EnterpriseOne role read-only permission to the files, but does not grant them execute privilege. You can omit read access if desired.

The security for the JD Edwards EnterpriseOne executables should look similar to these example:

-r-xr----- psft psft RunOneWorld.sh
-r-xr----- psft psft EndOneWorld.sh

3.6.5 Setting jde.ini File Security

Warning: Implementing JDE.INI file security will prevent Server Manager from modifying configuration settings.

To set JDE.INI file security:

  1. Enter this command:

    cd $JDE_BASE
    
    chmod 600 JDE.INI
    

    This command sets maximum security for the JDE.INI file. The JDE_BASE environment variable is set to the directory that contains the JDE.INI file.


    Note:

    The file name is case-sensitive.

    The security for the JDE.INI file should look similar to this:

    -rw------- psft psft JDE.INI
    

    Denying write access to the user psft is not strictly necessary, but can prevent accidental modification of JDE.INI settings, which could adversely affect the operation of JD Edwards EnterpriseOne.

  2. If you want to deny the user write access, enter this command:

    chmod 400 JDE.INI
    

    Because it is important to keep access to the JDE.INI file as secure as possible, you should also limit the amount of access to the user psft (or the user account that starts and stops JD Edwards EnterpriseOne) to a minimum. Users with access to this account might obtain the user names and passwords in the F98OWSEC table, and, thus, gain privileged access to the database.


Note:

Denying write access may prevent Server Manager from being able to change the configuration items within the JDE.INI file.

3.7 Working with HP-UX and Solaris Kernel Parameter Settings

Beginning in Solaris 10, Sun made a major change in the way IPC parameters are handled. These parameters are no longer changed through the /etc/system file - some have been eliminated, and some must now be changed through the Solaris resource controls facility. A discussion of Solaris resource controls is beyond the scope of this document; however, we will provide one example here that may be required before starting JD Edwards EnterpriseOne for the first time. When starting the JD Edwards EnterpriseOne software on the server, the initial jdenet_n process tries to create a semaphore array containing the number of elements indicated by the "maxNumberOfSemaphores" parameter in the enterprise JDE.INI file. By default, Solaris 10 will allow a semaphore array with a maximum of 512 elements. If the setting in the JDE.INI file is greater than 512, the system default will have to be changed. In Solaris 10, the following command is the simplest way to change the default:

projmod -K 'process.max-sem-nsems=(privileged,2048,deny)' default

This command changes the default project to allow semaphore arrays with up to 2048 elements. This is most likely the only resource control that you will have to change in Solaris 10 to be able to start JD Edwards EnterpriseOne. To see the resource control limits for a given user, sign on to that user and run the following command:

prctl $$

See the Solaris documentation "System Administration Guide: Solaris Containers-Resource Management and Solaris Zones" at http://docs.sun.com..

The kernels for HP-UX and Solaris (prior to Solaris 10) include a long list of configurable parameters. These parameters control the quantity of various resources available within the HP-UX and Solaris kernels. Also, the JD Edwards EnterpriseOne server software, specifically the IPC facilities, is sensitive to numerous kernel parameters for operation. These parameters differ among the various vendor implementations of UNIX. To change the values of kernel parameters for HP-UX, you must use the System Administration Management (SAM) tool to modify the parameters, which might require rebooting the system. For Solaris, you must reboot the system after you modify kernel parameters in the /etc/system file. The proper values of these parameters depend on various criteria, such as number of users on the system, active applications, and the resource requirements for the active applications.

For HP-UX, you set kernel parameters with the SAM tool. To modify these parameters for Solaris, open the /etc/system file with the a text editor. You can set any given parameter to either a simple numerical value or an expression, based on the values of other parameters. The system administrator must set the kernel parameters. UNIX security refers to users with access to administrative functions as superusers.

When you first set up an HP-UX or a Solaris machine for JD Edwards EnterpriseOne, you should run SAM for HP-UX or an editor for Solaris, and change the kernel parameters. On an HP-UX system, you can see the current values of kernel parameters by running the kmtune command, or by running SAM. On a Solaris system, type the command sysdef -i to see the current kernel settings.

JD Edwards EnterpriseOne is not the only software to use the resources that the kernel parameters control. Therefore, for each parameter, the requirements for JD Edwards EnterpriseOne are either the minimum defaults provided with HP-UX and Solaris, in addition to the defaults provided with HP-UX and Solaris, or the requirements of other software installed on the system.


Note:

The number of JD Edwards EnterpriseOne users that a machine serves, the number of instances of JD Edwards EnterpriseOne server software running on a machine, and the size of any databases on the machine are primary factors that affect the settings for HP-UX and Solaris kernel parameters. The number of jdenet_n, jdenet_k, and runbatch or runube processes running should reflect this information.

This list provides the definitions of terms essential to the understanding of HP-UX and Solaris kernel parameters:

ParameterDefinition
jdenet_nThe maximum number of jdenet_n (net) processes that can be created for an instance JD Edwards EnterpriseOne server software running on the system. This is controlled by the maxNetProcesses parameter in the JDENET section of the JDE.INI file for each instance of JD Edwards EnterpriseOne.
jdenet_kThe maximum number of jdenet_k (kernel) processes that can be created for an instance of JD Edwards EnterpriseOne server software running on the system. This is controlled by the maxKernelProcesses parameter in the JDENET section of the JDE.INI file for each instance of JD Edwards EnterpriseOne. Note that the maxNumberOfProcesses parameters in the JDENET_Kernel_Def sections do not matter here.

This screen capture provides an example of a Solaris editor that displays information for shared memory segments. The parameter name appears at the end of each line in the editor, such as shmmax at the end of this line: set shmys shminfo_shmmax=4294967295:

3.7.1 Message Queues

Generally, the system clears queues quickly. If a problem arises, you can revise values for these parameters to rectify the situation:

ParameterDescription
mesgThis value must be 1. System-V style message queues are valid.
msgmniThe value of msgmni represents the number of message queue identifiers. These identifiers determine the number of message queues that can exist throughout the system. In addition to the system default value and the requirements of other software, calculate what is needed for the JD Edwards EnterpriseOne installation (per JD Edwards EnterpriseOne instance). You can use these equation to estimate the number of message queues necessary for JD Edwards EnterpriseOne:

1 + jdenet_n + 2 x jdenet_k + (max number of concurrent runbatch, runube, and runprint processes)

msgtqlThe value of msgtql represents the number of message headers. This number determines the total number of messages that can be in all the message queues at the same time. In addition to the requirements of other software, allow a value equal to 10 x msgmni for the requirements of JD Edwards EnterpriseOne.
msgmapThe value for msgmap represents the number of entries in the map of free message segments. The default value of msgtql + 2 should be used. If the value of msgmap is less than the value of msgtql + 2, attempts to create a message queue or to send a message might fail.

Note: This parameter is no longer used in Solaris 8.

msgmnbThe value of msgmnb represents the maximum number of bytes that can reside on a single message queue at the same time. You should set the value for msgmnb at only a fraction of msgseg x msgssz. For JD Edwards EnterpriseOne, a value of 32768 is reasonable. You can set a larger value as long as the product of msgseg x msgssz is large enough. The minimum value is 8192. Additional requirements of this parameter might increase the value of msgmnb.
msgmaxThe value of msgmax represents the maximum size, in bytes, of a single message. Do not set msgmax with a larger value than the value of msgmnb. The recommended setting is msgmax = msgmnb. The minimum value is 1024. Additional requirements of this parameter might increase the value of msgmax.

Inside the HP-UX and Solaris kernels (prior to Solaris 8), messages in message queues reside in message segments. These parameters, which do not apply to Solaris 8, determine the size and number of segments available throughout the system:

ParameterDescription
msgsszThe value of msgssz represents the size of each message segment in bytes. For JD Edwards EnterpriseOne, a value of 64 is adequate for most situations.
msgsegThe value of msgseg represents the number of message segments throughout the system. In addition to the requirements of other software, allow a value equal to 50 x the msgmni requirement for JD Edwards EnterpriseOne, or approximately 4096 per instance.

3.7.2 Semaphores

These definitions apply to semaphores:

ParameterDescription
semaThis value must be 1. System-V style message queues are valid.
semmniThe value of semmni represents the maximum number of semaphore identifiers that can exist throughout the system.

For JD Edwards EnterpriseOne, two identifiers exist for each instance of JD Edwards EnterpriseOne, so the default value supplied with the HP-UX and Solaris systems should suffice.

semmapThe value of semmap represents the number of entries in the map of free semaphores. The default value of semmni + 2 should suffice. If you decrease the value of semmap, attempts to create a semaphore set, which occurs during JDEIPC initialization, might fail.

Note: This parameter is not used in Solaris 8.

semmnsThe value of semmns represents the maximum number of semaphores that can exist throughout the system. Each instance of JD Edwards EnterpriseOne allocates 1000 semaphores by default. However, you can customize this value in the JDE.INI file. In the [JDEIPC] section, modify the parameter maxNumberOfSemaphores to customize the number of semaphores that an instance of JD Edwards EnterpriseOne allocates.

For all releases of JD Edwards EnterpriseOne, the JD Edwards EnterpriseOne requirement is in addition to the requirements of other software. A good starting point for a typical JD Edwards EnterpriseOne installation (single instance) with Oracle should be 2000.

semmnuThe value of semmnu represents the maximum number of semaphore undo structures for the entire system. Effectively, this value is the maximum number of semaphores that the system can lock at the same time. For JD Edwards EnterpriseOne, enable one for each JD Edwards EnterpriseOne process that can exist for all installations of JD Edwards EnterpriseOne on the system. Use these equation to determine this value:

1 + jdenet_n + jdenet_k + maximum number of runbatch processes + maximum number of runprint processes + maximum number of runube processes

Note: This equation is similar to the equation used to calculate the value for msgmni. If you will be running a large number of batch queues or print jobs, you might need to increase the value of this parameter.

The number of outstanding print requests at a given time, whether printing or waiting for a printer, determines the number of jdeprint processes. A reasonable estimate for the upper limit of this value is 10. However, this estimate is application-dependent. For example, a large warehouse that constantly prints pick slips might have more requests.

The number of batch processes that run directly on the server, not from a client, determine the number of runube processes. This value depends on the use of the system. Theoretically, this value has no limit.

semumeThe value of semume represents the maximum number of semaphore undo structures per process. Effectively, this value is the maximum number of semaphores that a given process can lock at the same time. JD Edwards EnterpriseOne requires a minimum value of 4 for semume. This minimum value is not in addition to the system default and the requirements of other software. This value is a simple minimum. The default value provided with the system should suffice.
semmslThe value for semmsl, which applies to Solaris and newer versions of HP-UX, represents the maximum number of semaphores per unique identifier. For JD Edwards EnterpriseOne, this must be set equal to or higher than the maxNumberOfSemaphores setting in the JDE.INI file. For the default installation, you should set this parameter to 1000.

3.7.3 Shared Memory

These definitions apply to shared memory:

ParameterDescription
shmemThe shmem value must be 1 to enable shared memory.
shmmaxThe value of shmmax represents the maximum size, in bytes, of a single shared memory segment. The default value provided with the system should suffice. Other software packages, such as Oracle, might require an increase in this value.
shmmniThe value of shmmni represents the maximum number of shared memory segments throughout the system. For JD Edwards EnterpriseOne, enable 20 per instance of the JD Edwards EnterpriseOne server software running on the system. This requirement is in addition to the system default value and the requirements of other software.
shmsegThe value of shmseg represents the maximum number of shared memory segments to which any one process can attach at a given moment. The default value provided with the system should suffice.

3.7.4 File Descriptors

These definitions apply to file descriptors:

ParameterDescription
nfileThe value of nfile represents the maximum number of open files, or sockets, throughout the system. The default value should be enough to handle most JD Edwards EnterpriseOne needs. However, you must make explicit allowance for the maximum number of sockets that jdenet_n processes can create to communicate with clients. This number is the sum of all sockets for all instances of JD Edwards EnterpriseOne server software that runs on the system. The maxNetConnections parameter in the [JDENET] section of each JDE.INI file indicates this sum. This requirement is in addition to the system default value and the requirements of other software.
maxfiles(rlim_fd_cur in the Solaris /etc/system file) The value of maxfiles represents the default soft limit on the number of file descriptors that any given process can have. A system call can raise the soft limit of a process as high as maxfiles_lim. For JD Edwards EnterpriseOne, the minimum value for maxfiles should equal at least the largest of all the maxNetConnections values in all the JDE.INI files in use + 10. This requirement is a minimum value, not a value in addition to the system default value and the requirements of other software.

Note: If this parameter is too small, JD Edwards EnterpriseOne might not open the log file to generate an error message.

maxfiles_lim(rlim_fd_max in the Solaris /etc/system file) The value of maxfiles_lim represents the hard limit of file descriptors that any given process can have. For JD Edwards EnterpriseOne, the minimum value for maxfiles should equal at least the largest of all the maxNetConnections values in all of the JDE.INI files in use + 10. This requirement is a minimum value, not a value in addition to the system default value and the requirements of other software.

3.7.5 Processes

This definition applies to processes:

ParameterDescription
maxuprcThe value of maxuprc represents the maximum number of processes that can run under a single user ID. This number is of particular concern on systems with either a very large JD Edwards EnterpriseOne installation or multiple instances running under the same user ID. You must allow for the total number of JD Edwards EnterpriseOne processes that might run at one time, plus other system processes that the JD Edwards EnterpriseOne user might be running.

3.8 Working with Linux Kernel Parameter Settings

This section provides an overview of Linux kernel parameter settings.

3.8.1 Understanding Linux Kernel Parameter Settings

The Linux operating system uses many of the same kernel parameters as Solaris, but they are managed in a slightly different way. In the Linux 2.4 kernel, IPC parameters are defined and maintained in the /proc file system, in the directory /proc/sys/kernel. They can be modified dynamically by editing the appropriate file, but for enterprise applications, you should override the default parameters at boot time. In RedHat Enterprise Linux, the default parameters can be overridden at boot time by adding entries to the /etc/sysctl.conf file. Use the command ipcs -l to view the current values for IPC resource limits.

3.8.1.1 IPC Resources

These five entries in the /etc/sysctl.conf file affect JD Edwards EnterpriseOne IPC resources:

ParameterDescription
kernel.semThis setting controls these four different semaphore limits:
  • Maximum number of semaphores per array (semmsl on Solaris).

  • Maximum number of semaphores in the system (semmns).

  • Maximum operations per semop call (semopm).

  • Maximum number of semaphore arrays (semmni).

For JD Edwards EnterpriseOne, you might need to increase the first value, semaphores per array, particularly if you increase the value of maxNumberOfSemaphores in the jde.ini file. Some database products also require that the fourth value, number of semaphore arrays, be increased from the default value.

kernel.shmmaxThe default value for this parameter might be sufficient for JD Edwards EnterpriseOne, but some database products recommend that this be set to 256 Mb, or 90 percent of total memory, whichever is greater.
kernel.msgmaxThis parameter defines the maximum size of a message. The recommendation for JD Edwards EnterpriseOne is 65535.
kernel.msgmnbThis parameter defines the maximum number of bytes on a message queue. The recommendation for JD Edwards EnterpriseOne is 65535.
kernel.msgmniThis parameter defines the maximum number of message queues (identifiers) in the system. You can use these equation to estimate the number of message queues that are necessary for JD Edwards EnterpriseOne:

1 + jdenet_n + 2 x jdenet_k + (max number of concurrent runbatch, runube, and runprint processes)


3.8.1.2 File Limits

In addition to the IPC resource limits, WebSphere and the JD Edwards EnterpriseOne HTML Server can require a large number of open files. To see the current values, review the file /proc/sys/fs/file-nr. This read-only file contains these three values:

  • Total allocated file handles

  • Currently used file handles

  • Maximum file handles

The first value represents a peak, so when this value approaches the maximum value, consider raising the limit. If the peak value reaches the limit, you will get unpredictable results because processes will not be able to open files. To change the maximum file handle limit, use the fs.file-max setting. This setting controls the maximum number of files that can be simultaneously open throughout the entire system. The recommendation for JD Edwards EnterpriseOne is 32768, and this number might need to be increased to 65536 for larger installations.

3.8.1.3 Example: /etc/sysctl.conf

These lines are from a typical sysctl.conf file that are used to set kernel parameters based on the previous information:

fs.file-max = 32768
kernel.shmmax = 268435456
kernel.sem = 500 32000 32 1024
kernel.msgmax = 65535
kernel.msgmnb = 65535
kernel.msgmni = 1024

3.9 Working with AIX Kernel Parameter Settings for JD Edwards EnterpriseOne

This section provides an overview of AIX kernel parameter settings for JD Edwards EnterpriseOne and discusses how to:

  • Set the value of maxuproc.

  • View the system parameters.

  • Set tune parameters.

3.9.1 Understanding AIX Kernel Parameter Settings for JD Edwards EnterpriseOne

AIX contains a set of kernel parameters (system parameters) that determine functionality and a separate}C set of performance parameters (tune parameters) that determine performance.

Setting the kernel parameters requires you to run the system management tool (SMIT). AIX has few configurable parameters that influence JD Edwards EnterpriseOne software; of those that influence JD Edwards EnterpriseOne, just one can cause the software to become inoperable. This parameter is maxuproc. The maxuproc parameter controls the number of processes that a single user can run simultaneously.

3.9.2 Setting the Value of maxuproc

To set the value of maxuproc:

  1. Sign on as the root user.

  2. On the command line, enter this command:

    smit
    
  3. In SMIT, select the System Environments item and then select the Change/Show Characteristics of Operating System item.

  4. Change the value of Maximum number of processes to enable all JD Edwards EnterpriseOne processes that might run at one time, plus any other system processes the JD Edwards EnterpriseOne user might be running.

    Accept the default values for all other system parameters. This table lists these system parameters for general reference:

    ParameterDescription
    maxbufMax pages in block I/O buffer cache.
    maxmbuMax real memory for MBUFS.
    autorestartAutomatically reboot after crash.
    iostatContinuously maintain disk I/O history.
    maxpoutHigh water mark for pending write I/O per file.
    minpoutLow water mark for pending write I/O per file.
    keylockState of system keylock at boot time.
    fullcoreEnable full core dump.
    pre43coreUse pre-430 style core dump (AIX 4.3 only).
    logfilesizeError log file size.
    memscrubEnable memory scrubbing.
    dcacheSize of data cache in bytes.
    icacheSize of instruction cache in bytes.
    realmemSize of usable physical memory.
    primaryPrimary dump device.
    consloginSystem console login.

3.9.3 Viewing the System Parameters

To view the system parameters:

Enter this command:

lsattr-E-lsys0

To change a system parameter, you must navigate to the correct SMIT menu option.

3.9.4 Setting Tune Parameters

Setting the tune parameters requires you to run these commands:

  • For network parameters: no

  • For device parameters: chdev

  • For nfs parameters: chnfs

  • For general tuning parameters: vmtune

Tune parameters can also be kept at their default values. Changes to tune parameters are generally needed only for performance reasons. Proper settings for optimal performance might vary with changes in the underlying database, hardware configuration, and JD Edwards EnterpriseOne configuration.

Performance tuning for AIX running JD Edwards EnterpriseOne or Oracle involves setting parameters that control virtual memory for paging, Raid, disk system types, and CPU scheduling.

3.9.4.1 Example: Disk Striping

Disk striping is the technique of spreading sequential data across multiple disk drives so data can be accessed in parallel from several drives at once. If striping is used, then these tune parameters are set:

ParameterValue
stripe size64KB
max_coalesce64KB
minpgahead2
maxpgahead16 x number of disk drives
maxfreeminfree + maxpgahead

3.10 Running Multiple Instances of the JD Edwards EnterpriseOne Enterprise Server

This section provides an overview of running multiple instances of the JD Edwards EnterpriseOne enterprise server and discusses how to do so.

3.10.1 Understanding Running Multiple Instances of the JD Edwards EnterpriseOne Enterprise Server

Common reasons for running multiple instances of the JD Edwards EnterpriseOne enterprise server are to test a new service pack or to upgrade to a new version of JD Edwards EnterpriseOne. You can run multiple instances of the JD Edwards EnterpriseOne server on the same machine by following a few simple guidelines.


Note:

These steps do not create a new database or any new database tables. Therefore, you will be using the same data tables that are used by the original instance of JD Edwards EnterpriseOne that was installed. If you want to create a completely separate set of database tables, follow the instructions for setting up a new environment.

After you make all of the changes described in this chapter, you can start and stop the new JD Edwards EnterpriseOne instance independently of the original instance.

All existing JD Edwards EnterpriseOne environments will be valid for the new instance, provided that you have copied the corresponding path code directory for a given environment. All current logical data sources and OCM mappings will be recognized by the new instance.

Server Manager fully supports multiple foundations. This includes the installation and management of multiple instances of JD Edwards EnterpriseOne on a single server.


See Also:


3.10.2 Prerequisite

Verify that you have enough disk space to create copies of the current JD Edwards EnterpriseOne system directory and at least one path code directory.

3.10.3 Running Multiple Instances of the JD Edwards EnterpriseOne Enterprise Server

To run multiple instances of the JD Edwards EnterpriseOne enterprise server:

  1. The system administrator should create a new user ID that owns the new JD Edwards EnterpriseOne instance.

    Create the user ID using the appropriate administration tool, such as smit, SAM, admintool, or useradd.


    Note:

    Although you can run multiple instances of the JD Edwards EnterpriseOne server using the same UNIX or Linuxuser ID, it is not recommended. The software depends on certain environment variables to function correctly, and these variables are easier to manage under different user IDs.

  2. Sign on using the new user ID.

  3. Copy the .profile and .psft files from the home directory of the original user ID to the home directory of the new user ID.

  4. Change the .profile file for the new user ID, if appropriate.

  5. Change the .psft file for the new user ID to reference the new directory path in which you will create the new JD Edwards EnterpriseOne instance.

    For example:

    Original .psft file:

    export EVRHOME=/u01/JDEdwards/E900
    

    New .psft file:

    export EVRHOME=/u02/JDEdwards/E900
    
  6. Create the directory in which the new JD Edwards EnterpriseOne instance will reside.

    For example, type these:

    mkdir -p /u02/JDEdwards/E900
    
  7. Copy the system directory, the ini directory, and at least one path code directory from the original instance of JD Edwards EnterpriseOne to the new directory path.

    These sample commands accomplish this:

    cp -R /u01/JDEdwards/E900/system /u02/JDEdwards/E900
    cp -R /u01/JDEdwards/E900/ini /u02/JDEdwards/E900
    cp -R /u01/JDEdwards/E900/DV900 /u02/JDEdwards/E900
    

    Note:

    The path code directories for any environments that you intend to use for this second instance of JD Edwards EnterpriseOne must be copied to the new directory. You cannot share path code directories between two or more instances of JD Edwards EnterpriseOne, as this sharing might corrupt specification files.

  8. Create an empty log directory under the new path using a command such as this:

    mkdir -p /u02/JDEdwards/E900/log
    
  9. In the new JDE.INI file, change all references to the original directory name to the new directory name, including the [INSTALL], [DEBUG], and [BSFN BUILD] sections.

    For example:

    [DEBUG]
    DebugFile=/u02/JDEdwards/E900/log/ jdedebug.log
    JobFile=/u02/JDEdwards/E900/log/jde.log
    
    [INSTALL]
    B9=/u02/JDEdwards/E900
    
    [BSFN BUILD]
    BuildArea=/u02/JDEdwards/E900/packages
    
  10. Change the new JDE.INI file to reference a port number and starting IPC key that are different from the original JD Edwards EnterpriseOne instance.

    The values are defined by these parameters; but the numbers are only examples:

    [JDENET]
    serviceNameListen=6009
    serviceNameConnect=6009
    
    [JDEIPC]
    startIPCKeyValue=9000
    
  11. From the client workstation JDE.INI file, change the serviceName parameters to match those of the server JDE.INI file.

PK@}PKƉZE!OEBPS/troubleshoot_wrkstation.htm Troubleshooting the Workstation

13 Troubleshooting the Workstation

This chapter contains the following topics:

13.1 Understanding Error Messages

Use this section as a general guide for basic troubleshooting techniques on theOracle JD Edwards EnterpriseOne workstation. To troubleshoot problems, you will need a thorough understanding of the interactive error messages, Oracle's EnterpriseOne Work Center, logging process, and associated log files.

This section provides solutions to these problems that you might encounter on the workstation:

13.1.1 Report Batch Process

You might encounter these issues when running a batch process:

  • Report displays no data.

    It displays only the report headers and the text No Data Selected.

  • Batch process displays errors on the report.

  • Batch process gives unexpected data on the report.

13.1.2 Environment Issues

You might encounter these environment issues:

  • Works when the batch process or business function runs locally but not when it runs on the enterprise server.

  • For store-and-forward operation, data entered to the local database is not moved to the server as expected.

  • Tables are missing.

13.1.3 Data Source Setup Problems

You might encounter these problems with the data source setup:

  • Unable to connect to the enterprise server environment.

  • Data is displayed incorrectly on the interactive form or batch report.

13.1.4 Error Message Details

When you encounter an error, right-click the error message in the error message window and select Detail to provide additional information about the error. This information provides the source file and the source line that caused the error. If you try to set up an Item/Branch record in P41026 with an invalid item number, you will receive error number 0267 (Item Number Invalid).

When indicating the source file that generated the error, the system provides the entire path of the source location. In this example, the source file is c:\E900\MSTR900\X4101.C, and business function X4101 created the error. The other pieces of the path are directory names. The important information in this example is the file with the .C extension (X4101.C).

If the detail for the error includes the name of the source file, you can identify the process that the file performs to determine what might occur to cause an error. For example, the name of the source file might include system code that indicates the process performed by the file. The process might attempt to run in a module that is not fully functional. The cause of the error might be a constant set to perform a function that is currently unavailable. When you disable the constant, you avoid the error.


Note:

If you see a source file description that begins with c:\E900\SYSTEM, the error did not occur through a business function. Possibly, the error occurred through an event rule or the tool, while automatically triggering a data dictionary edit.

Look for conditional statements that determine whether to activate the error message. Look for table names to determine whether the program attempts to retrieve data. Look for other programs that the program might call. Also, read the programmer comments that are included in the source, which might provide a literal explanation for why the code issues an error.

Also look at the data item that caused the error. The data item represents a control on the form. If you get a Blanks Invalid error without an indication of what field you left blank, look at the data item in this error detail box to see which control triggered the error. The field that contains the error might be a hidden field. For example, if you process a transaction that requires a supplier number determined by an Item/Branch combination decided by JD Edwards EnterpriseOne (not by a value that you define on the form) but no supplier number exists for the Item/Branch combination, the software returns the Blanks Invalid error. The field for supplier number does not appear on the form, so the cause of the error is not readily apparent. The data item might alert you to the hidden field and help you resolve the error.

13.1.5 Error Messages Generated by Applications

These error messages are maintained in the data dictionary and are intentionally set to inform the user of a problem. The error message might indicate that the setup is incorrect or that the user is attempting an invalid action. Examples of these kinds of error messages include Record Invalid and Blanks Invalid. Some generic errors lack applicable descriptions; techniques for troubleshooting these errors are discussed in this chapter.

13.1.6 Frequent Generic Error Messages

Some error messages are too generic to immediately explain an error. Examples are Null Pointer and File Can Not Be Accessed. The full descriptions of these error messages do not provide much information as to how to resolve the problem.

To troubleshoot generic errors, retrace the exact steps that led to the original error. The goal is to reproduce the error. If you cannot duplicate an error condition, then the application is accessing different lines of code than it did when the error occurred. Also look at the information in the error detail box, such as the source file, the source line, and the data item.

13.1.7 Memory Violations

Memory violations occur when you encounter memory leaks in an application. A memory leak is a bug that prevents a program from freeing memory that the program no longer needs. The program continues to consume more memory until no memory remains, and the program crashes. JD Edwards EnterpriseOne applications set aside memory while they run. When the application no longer needs that memory, the application should free the memory for other applications to use. When an application does not properly free memory or when an application attempts to use invalid memory, you receive a memory violation.

Use these techniques to troubleshoot these errors:

  • Look at the jdedebug.log to find information about the processing that occurred at the time of the error, such as programs called and tables accessed.

  • Follow the exact steps that led to the error to reproduce the memory violation.

    If you cannot duplicate the violation, then the application is accessing different lines of code than it did when the violation occurred. Also look at the information in the error detail box, such as the source file, the source line, and the data item. For UBEs, if the UBE uses a business function that causes memory violations, the UBE will simply stop. In this case, the ube.log is the only way to find out what failed.

13.1.8 Form and Grid Add Failures

The two error messages that follow indicate that an attempt to add a new record to the database failed. The first message indicates that an add within a fix/inspect form failed. The second message indicates that an add within a grid failed. If you receive these errors, you could be attempting to add a duplicate record.

  • Attempt to add form record failed.

  • Attempt to add grid record failed.

The jde.log is a helpful reference when these errors occur. In general, it includes detailed information about the table into which the user attempted to add a duplicate record.

13.1.9 Communication Failure

When submitting batch processes to a server, you might receive an error telling you that a communication failure has occurred.

When you submit a batch job to a server, you are first asked whether you would like to install the specifications. If the job is submitted successfully, JD Edwards EnterpriseOne reverts to the initial form.

13.2 Troubleshooting the Production Workstation

This section provides an overview of production workstation troubleshooting and discusses how to:

  • Perform preliminary troubleshooting.

  • Troubleshoot interactive application problems.

  • Troubleshoot batch processes resulting in no data.

  • Troubleshoot batch processes displaying errors on the report.

  • Troubleshoot batch processes displaying unexpected data on the report.

  • Troubleshoot batch processes ending in an error when submitted on the server.

  • Troubleshoot local data-availability problems.

  • Troubleshoot .DLL problems on a production workstation.

  • Troubleshoot data source setup problems.

13.2.1 Understanding Production Workstation Troubleshooting

The troubleshooting procedures that you use for a workstation depend on whether the workstation is a production or development machine. Production machines contain only JD Edwards EnterpriseOne applications, so the scope of problems that can occur is limited. In addition to containing prebuilt applications, development machines are equipped with JD Edwards EnterpriseOne and third-party tools. These tools enable developers to create, modify, compile, generate, and troubleshoot JD Edwards EnterpriseOne applications.

As a system administrator, you can perform preliminary troubleshooting on the production workstation to verify the nature of the problem. You will also want to isolate problems to a user's particular workstation and environment.

In general, when you are running an interactive application, the system displays errors at the bottom of a form. The system highlights the fields with errors in red. You can select Details on an error message to see information about where the error was set. For example, if the error resulted from within a business function, the system displays the business function and line number where the error was set.

If the errors cannot be resolved through the error messages that are received in the application, check the error messages in the log files for additional information.

If an application has stopped running, you might need to create or retrieve a new set of specifications for that application. You can overwrite a single application by building a partial package and deploying that package.

A user might encounter several problems when attempting to run a batch process. For example, the output might display only the report headings or it might print a message such as "No Data Selected." If the result of a batch process is no data, several factors could be causing the problem.

Some batch processes will give error messages directly on the report. These messages should include both the short description and error message number. You can view the full description of the error by opening the message in Data Dictionary Design.

If errors are received when you are attempting to sign in to a JD Edwards EnterpriseOne environment, a possible cause is an incorrect data source setup on the workstation. Some indications of incorrect setup are:

  • A form continues to request a user ID, a password, and a data source even after valid ones are entered.

  • Data is displayed incorrectly on an interactive application.

  • Messages in the logs refer to problems connecting to data sources or concerning incorrect passwords.

13.2.1.1 Troubleshooting a Standalone Installation of JD Edwards EnterpriseOne

If you find that you cannot perform a force checkout on a PC running a standalone installation of JD Edwards EnterpriseOne, it is because the software cannot determine the system name for a standalone installation.

The solution is to disable the DNS name in Microsoft Windows.

13.2.1.2 Troubleshooting Enterprise Server Data-Availability Problems

If the workstation is running a report against any enterprise server database, such as Oracle, SQL Server, or DB2 for IBM i, you need to check the database to see whether the SQL statement can find data in the tables. With the help of a database administrator, you can run the same SQL statement against the server database to verify that the expected data exists in the tables.

As an alternative or in addition to these procedures, you can also use the Universal Table Browser to verify table structure and data availability.

If you do not find any data in the tables for the environment against which you are running, then the SQL statement might be incorrect or the table is empty. Check the data selection and processing options, and verify that they are selecting data that is in the tables. If you do not have data in the tables to match what you are searching, then you will get unexpected results or no data on the report.

For example, if you leave the processing options blank (even though that may be a valid entry for a JD Edwards EnterpriseOne batch process), the process might be searching for blank values or for all values. If the data selection is selecting on a company that does not have any records, then the report batch process does not find any records.

13.2.1.3 Troubleshooting Printing Problems

Most printing errors are written to the batch process log. However, some errors might appear on reports or be visible in another form. For example, the report prints an error message, prints in the wrong font, or prints landscape instead of portrait.

These printing problems can occur:

  • The batch application produces error messages on the report, for example, Invalid Company Number.

  • The report batch process displays the wrong font on the report.

    Check the report properties of the version that you just ran. Also, for the section that is not printing the correct font, check the section properties for the font. If the font is correct, then try printing to a different printer. Otherwise, try using another workstation to see whether the font that is being sent to the printer is not interpreted correctly.

  • The report batch process prints portrait instead of landscape or landscape instead of portrait.

    Check the report properties of the version that you just ran and verify that the properties are correct.

13.2.2 Performing Preliminary Troubleshooting

To perform preliminary troubleshooting:

  1. Determine whether you can consistently duplicate the problem.

  2. If you can duplicate the problem, restart the current application.

  3. If the error recurs, restart JD Edwards EnterpriseOne.

  4. If the error recurs, reboot the workstation.

    These steps clear any memory or caching problems with the workstation.

13.2.3 Troubleshooting Interactive Application Problems

To troubleshoot interactive application problems:

  1. Select one of these to see the text of the message:

    • Display Errors from the Help menu selection.

    • Display button on the toolbar.

    • F8.

  2. To see the full description of an error message, right-click and select Full Description.

    The system displays a full glossary of the error and includes information for resolving the issue.

13.2.4 Troubleshooting Batch Processes Resulting in No Data

This task provides a solution to previously discussed problems.

To troubleshoot batch processes resulting in no data:

  1. Verify that the data selection on the batch process is appropriate and that data should result.

    Data selection on an item that has no data, such as an inactive company, or an incorrect value will result in a batch process with no data.

  2. Check the Work Center to see whether the batch process resulted in an error.

    Most error messages are not printed on the report but are sent as an email message to the user who submitted the report.

    These messages will give the user an example of why the batch process ended without producing the desired results. For example, when the system runs a GL post that ends in error, the report will print only the report headings. All error messages are sent to the Work Center.

    Upon quitting the Work Center, the user receives error messages and a glossary description that indicate why the batch process resulted in no data. Some error messages include hot links that link the user directly to the appropriate interactive application to correct the error.

  3. If checking the data selection and correcting any errors does not resolve the issue, activate the applicable logs and continue with these steps.

  4. Run the batch process and locate the batch process log for the report that you ran.

    JD Edwards EnterpriseOne names this log with these conventions:

    report name_version_other identifiers.log
    

    This log is located in the local directory under \E900\PrintQueue. If you ran report R04431, it would appear in the local directory, E900\PrintQueue, like this:

    R04431_XJDE0001_D960823_T104512.log
    
  5. View the log file using the JD Edwards EnterpriseOne Log Viewer or an ASCII editor such as Notepad or Wordpad.

    Inspect the log for errors or failures of any kind. Also examine the SQL statements that were created by the batch process and verify that they should result in data on the report. The batch process log is the main source for debugging batch processes. However, you can look in the jde.log and jdedebug.log for errors or failures of any kind.

  6. Verify that data exists in the tables for the database that you are accessing.

    Use the Universal Table Browser tool to view the database table.

13.2.5 Troubleshooting Batch Processes Displaying Errors on the Report

Access Error Messages from the Data Dictionary Design menu (GH951).

Figure 13-1 Error Messages form

Description of Figure 13-1 follows

To troubleshoot batch processes displaying errors on the report:

  1. On Error Messages, complete the Glossary Group field.

  2. Complete these optional fields:

    • Language

    • Alpha Description

  3. On the grid, enter values in the Data Item field and click Find to narrow the search to the parti

    cular error code.

    For example, enter 0002 to search for the data item that is associated with the Record Invalid error condition.

  4. To see an extended description of the error, select Glossary from the Row menu.

13.2.6 Troubleshooting Batch Processes Displaying Unexpected Data on the Report

To troubleshoot batch processes displaying unexpected data on the report:

  1. Verify that the data selection on the batch process is correct and should result in the data output that is expected.

  2. Activate the batch process log and run the report.

  3. Examine the report process flow and SQL statements to see why the data output on the report is selected.

13.2.7 Troubleshooting Batch Processes Ending in an Error When Submitted on the Server

The default processing location for batch jobs is the server. If a job gives incorrect results or ends in error when run on the server, the problem could lie with the batch process or with the server. When you troubleshoot batch processes ending in an error when submitted on the server

  1. Rerun the report, but override the location to run on the workstation rather than the server.

    You should be aware that if this is a very large report, the processing may take a significant amount of time. You may want to select less material to speed up the processing time.

  2. Verify whether the outcome is the same as when the report was run on the server. If so, use the other troubleshooting procedures for batch processing to resolve the issue.

13.2.8 Troubleshooting Local Data-Availability Problems

Inspect the local database at \E900\pathcode\data\JDELocal_PD900.mdf to verify that data exists in the tables that the batch application is accessing.

To troubleshoot local data-availability problems:

  1. To find the calling SQL statement, open the batch process log.

    JD Edwards EnterpriseOne names this log using these conventions: report name_version_other identifiers.log. This log is located in the local directory, \E900\PrintQueue.

  2. Highlight the SQL statement, right-click, and copy the contents to the clipboard.

  3. To view data in the local database, open the Universal Table Browser (UTB) and retrieve the table that the batch application is accessing from the local data source.

  4. Use the information that you copied from the SQL statement to query the table in UTB.

    If this action causes the expected records to be found, the data that you specified in the data selection matches the SQL statement, which means that data selection is not the cause of the problem.

13.2.9 Troubleshooting .DLL Problems on a Production Workstation

Problems with workstation .DLL files are indicated if you receive an error message such as this:

CALLBSFN.DLL Load Lib failed

Such a message might indicate that the object does not exist on the workstation. Use a tool such as Explorer to verify whether the file exists. You can find consolidated .DLLs in the \E900\path code\bin32 directory.

If the .DLL does not exist on the workstation or if it exists but you continue to get the error even after restarting JD Edwards EnterpriseOne, you can get the correct parent .DLL by reinstalling JD Edwards EnterpriseOne on the workstation from the deployment server. Another option is to copy the parent .DLL from the deployment server package location or another functioning workstation. This option will be successful if the business functions that are built into the parent .DLL are the same on the workstation that you are copying to as they are on the one that you are copying from. Use caution when copying .DLLs. A workstation installation is the preferred method.

13.2.10 Troubleshooting Data Source Setup Problems

To troubleshoot data source setup problems:

  1. From the Control Panel, verify that the ODBC settings are correctly defined and that the data source exists.

    The proper settings vary by data source.

  2. If other users will sign in to the same workstation, verify that the data sources are set up as system data sources rather than user data sources.

    Data sources that are set up as user data sources must be set up for each user who is accessing JD Edwards EnterpriseOne on the workstation.

13.3 Troubleshooting the Development Workstation

This section provides an overview of development workstation troubleshooting and discusses how to:

  • Troubleshoot .DLL problems on a development workstation.

  • Troubleshoot event rule problems.

  • Troubleshoot business function problems.

13.3.1 Understanding Development Workstation Troubleshooting

The troubleshooting procedures that you use on a workstation depend on whether the workstation is a production or development machine. Production machines contain only JD Edwards EnterpriseOne applications, so the scope of the problems that can occur is limited. In addition to containing prebuilt JD Edwards EnterpriseOne applications, development machines are equipped with JD Edwards EnterpriseOne and third-party tools. These tools enable developers to create, modify, compile, generate, and troubleshoot JD Edwards EnterpriseOne applications.

You can perform troubleshooting procedures to isolate and resolve a problem with a JD Edwards EnterpriseOne development workstation.

Problems with workstation .DLL files are indicated if you receive an error message such as this:

CALLBSFN.DLL Load Lib failed

Such a message might indicate that the object does not exist on the workstation. Use a tool such as Explorer to verify whether the file exists. You can find consolidated .DLLs in the directory E900\path code\bin32 and E900\system\bin32.

If the .DLL does not exist on the workstation or if it does exist but you continue to get the error even after restarting JD Edwards EnterpriseOne, the workstation has a problem with the build of one or more consolidated .DLLs. You can rebuild libraries or .DLLs using the BusBuild application from Microsoft Windows Explorer. The path to busbuild.exe is E900\system\bin32\busbuild.exe.

13.3.2 Troubleshooting .DLL Problems on a Development Workstation

Use this procedure if you are receiving the error on a specific business function that cannot be found in the parent .DLL.

To troubleshoot .DLL problems on a development workstation:

  1. Verify that the correct parent .DLL for the business function that is being run is referenced when you receive the error.

  2. If the wrong parent .DLL is referenced, select Synchronize JDEBLC from the Tools menu within BusBuild to correctly synchronize the parent .DLLs.

  3. Attempt to rebuild the business function from the BusBuild.exe.

    The rebuild should include the business function in the parent .DLL.

  4. To verify which business functions are part of a parent .DLL, select Dumpbin from the Tools menu within Busbuild.

    This option lists all of the business functions that are included in the parent .DLL.

13.3.3 Troubleshooting Event Rule Problems

When you encounter problems with event rules on an interactive or batch application, several tools are available to help resolve the problem.

  • Review the event rules that are attached to the application or batch process for obvious problems such as disconnected assignments or incorrect parameters that were passed to business functions.

  • When the system generates the application, a compile error log is generated, which documents errors in the event rules.

    Review this log for errors within the Event Rules.

  • The Debug Application within JD Edwards EnterpriseOne enables you to debug the event rules for an application or batch process.

13.3.4 Troubleshooting Business Function Problems

You might be having business function problems if you are getting unexpected results or getting a .DLL error when you run a business function.

Microsoft Visual C++ enables you to debug a business function. You can use this tool to step through the logic and inspect variables, which often helps you detect the error.

13.4 Working with the Workstation Log Files

This section provides an overview of the workstation log files and discusses how to:

  • View log files.

  • Set up the workstation jde.log.

  • Set up the workstation jdedebug.log.

  • Set up the batch process log.

  • Troubleshoot with the compile error log.

  • Troubleshoot with jdecpy.log.

  • Troubleshoot with the sql.log.

  • Activate sql.log.

  • Troubleshoot ODBC problems using sql.log.

  • Troubleshoot with the jdeinst.log.

13.4.1 Understanding the Workstation Log Files

You should be familiar with the various logs that are used to troubleshoot problems on the workstation. By using these logs and the procedures that are outlined in this chapter, you can troubleshoot problems with interactive applications, batch applications, or business functions running locally on the JD Edwards EnterpriseOne workstation. Determine whether you can duplicate the problem consistently or whether it is intermittent.

Do not leave the debugging logs active when the logs are not in use. The logs consume disk and processor resources, and therefore affect performance.

If you do not use data replication in the configuration, ignore error messages that refer to these tables in the jde.log and jdedebug.log:

  • F98DRPUB

  • F98DRENV

  • F98DRSUB

  • F98DRLOG

  • F98DRPCN

13.4.1.1 Global Tables

Each JD Edwards EnterpriseOne workstation uses global tables (glbltbl.xdb and glbltbl.ddb) to write disk cache files containing internal session-specific and workstation-specific information. For example, information about data dictionary tables and business views is cached. By maintaining a history of this cached session information, individual workstations will improve runtime performance based on their usage.

If you are doing application development, you might need to delete the global tables to see the results of the changes. This is because the system looks first to the disk cache to read certain table information. The information that is contained in the disk cache might not be synchronized with the current development. You cannot edit the contents of the disk cache.

We recommend that normal startup of JD Edwards EnterpriseOne in a production environment not include the deletion of these global tables. These files should be deleted only as a troubleshooting technique or a development aid.

If the global table files do not exist when JD Edwards EnterpriseOne is started, they will be created. If they do exist, they will be appended, not overwritten. The files are located in the E900/pathcode/spec directory.

In general, on JD Edwards EnterpriseOne workstations, logs are classified in these categories:

  • Logic processing.

  • Batch processing.

  • Application development (compiling and generating).

  • Object Management Workbench transactions.

13.4.1.2 Logic Processing Logs

You use two major log file sources for troubleshooting processing faults on the workstation:

  • jde.log

    This log displays fatal errors. Jde.log can track any fault that might occur within JD Edwards EnterpriseOne.

  • jdedebug.log (JDEDEBUG on IBM i)

    This log tracks API calls and SQL statements as well as other messages. You can use this file to determine the point in time when normal processing stopped. The system does not use jdedebug.log to track errors. Instead, this log is used to track the timing of JD Edwards EnterpriseOne processes.

13.4.1.3 Application Development Logs

For JD Edwards EnterpriseOne workstations in application development environments, you can use these logs to identify faults in processing that are related to compiling and generating applications and business functions:

  • compile_error.log

    The compile_error.log contains compile errors for event rules. You can use this log to view event rules that might not properly compile and run. These include Named Event Rules, Table Event Rules, and event rules that are embedded in applications.

  • jdecpy.log

    This log is produced each time you run the copy table program (cpytbl.exe). Copy table error messages and IDs are logged. This log also indicates whether any inserts failed that could indicate a possible error.

  • sql.log

    You use this log to view exactly what is being sent through the ODBC driver. This is not a JD Edwards EnterpriseOne log; another software vendor provides this log process.

For workstations in production environments, you can use jdeinst.log to identify faults in JD Edwards EnterpriseOne silent installation.

If you use the silent installation process for JD Edwards EnterpriseOne installations on a workstation, you can use this log to view the status of the silent installation.

13.4.1.4 Workstation jdedebug.log

The workstation jdedebug.log file contains messages relating to API calls and SQL statements, as well as other messages. You can use this file to determine the point in time when normal processing stopped. The system does not use jdedebug.log to track errors. Instead, it uses this log to track the timing of JD Edwards EnterpriseOne processes.

You can use jdedebug.log to determine where a process has ended. For example, log data can include what the ODBC was trying to connect to, the SQL statement that was being run for a specific table, and whether memory has been freed.

If the process failed and you have logging turned on, look in the jdedebug.log for these messages:

  • Not Found

  • Failure

Also, look at the end of the log to see what process ran last. In general, important lines in the log are:

  • SELECT

    The SELECT lines indicate which table you are selecting. The log tells you in which library (for the IBM i) or environment (for the non- IBM i) the table resides. You should verify that the selected libraries and environments are correct.

  • ODBC Version

    The ODBC lines indicate whether you are having problems connecting to the driver.

13.4.1.5 Batch Process log

You can use the batch process log to identify faults in JD Edwards EnterpriseOne processing that are related to batch processes. The batch process log resides in the \E900\PrintQueue directory. The log file name is batch_process.log, where batch_process represents the report name, version name, date, and time.

Based on the setting of the UBESaveLogFile parameter in the [UBE] section of the jde.ini file, this log file is deleted or saved on successful completion of batch processes. This log file displays different types of messages that can help in tracking errors in the batch process. The messages are:

  • Section Level Process

  • Object Level Process

  • ER Level Process

  • DB Level Process

The batch process log can contain ER references, batch process flow, and SQL statements, among other messages. You can use the batch process log file to determine when normal processing stopped.

The batch process log file displays the process flow in batch processes. This flow is completed in these steps:

  1. When batch processes complete a section, starting with the INIT section, a business view is opened.

    After the INIT Section log, you should see a SQL statement.

  2. After INIT Section, the batch engine calls Adv Section to retrieve a record.

  3. After the retrieve, batch engine processes the Do Section Processing.

  4. From Do Section, each object is processed in Init Object - Do Object - End Object order.

  5. After Do Object message, you should see Printed value in the log.

    ER events are logged in a different event level.

13.4.1.6 sql.log

In sql.log, the important lines for you to search are:

  • SELECT * FROM (bolded in these example)

  • SQLBindCol

  • Table not found

Verify that you are reading the correct table. For example, in the sql.log example, a line exists for every column in the selected table, which indicates that the correct table is selected.

If you are having difficulty reading the table, verify that the table has the correct number of columns. If you have added columns to the table and you cannot locate the correct number of columns, you need to configure the table. This information is also provided in jde.log.

13.4.1.7 Use of Log Files to Troubleshoot Strategies

You can create a normal (successful) jde.log by logging on to JD Edwards EnterpriseOne and then immediately logging off. Use this log of successful startup statements to compare against logs that have a problem.

If you know the problem is not related to startup, you can clear and save the log without quitting JD Edwards EnterpriseOne. When you recreate the problem, the contents of the log should contain only errors that occurred since you cleared the log.

You can also rename the log to indicate the kind of problem. For example, you might delete the jde.log and then run a report that causes an error condition. You could rename the jde.log to report.log.

Another alternative is to add comment lines to the jde.log indicating the sequence of events that you are performing. For example, you might be running an application that you know causes an error. Just before you run the application, you could edit the jde.log to add a comment line stating that you are about to start the suspect application.

Most error messages in the jde.log have a unique number assigned to them. You can view an extended description of the error, including possible causes and resolutions, by searching on the error number in the Error Messages application (P92002).

13.4.2 Viewing Log Files

You can view JD Edwards EnterpriseOne log files from within any application. If you want to view log files outside of JD Edwards EnterpriseOne, you can use a text editor like Notepad or Wordpad.

To view log files:

  1. From within any JD Edwards EnterpriseOne application, right-click to open the pop-up menu.

  2. On the pop-up menu, select the View System Log option.

  3. On Log Viewer, select File, Open to locate and open a JD Edwards EnterpriseOne log file.

    You can also use the View menu selection to select log files. If you have viewed log files previously, the File menu keeps a history of those files.

13.4.3 Setting Up the Workstation jde.log

You can use the workstation jde.log as a general purpose log to track fatal errors that are generated by JD Edwards EnterpriseOne processing. The jde.log tracks any fault that might occur within JD Edwards EnterpriseOne. When you are looking for startup errors, you should read the jde.log from the top down. For other errors, you should read from the bottom up.

The workstation jde.log is created (if it does not exist) or overwritten (if it already exists) at the start of every JD Edwards EnterpriseOne session.

To set up the workstation jde.log:

  1. Locate the workstation jde.ini file.

    The JD Edwards EnterpriseOne setup program places this file in the working Microsoft Windows directory; for example, c:\Windows\jde.ini. If you are unsure of the workstation's working Microsoft Windows directory, use the Find command to locate the jde.ini file.

  2. Use an ASCII editor (like Notepad or Wordpad) to open the file.

  3. In the [DEBUG] section, verify or change this setting for the job file variable:

    SettingPurpose
    JobFile=Specifies the location and name of the jde.log file. The default value is c:\jde.log.

    Note: You can disable the jde.log on the workstation by specifying a blank or invalid value for JobFile. If you delete or disable (comment out) the JobFile parameter, JD Edwards EnterpriseOne automatically creates and writes to a log file called jde.log in the c:\ directory of the workstation.


  4. Save the changes and close the jde.ini file.

13.4.4 Setting Up the Workstation jdedebug.log

To set up the workstation jdedebug.log:

  1. Locate the workstation jde.ini file.

    The JD Edwards EnterpriseOne setup program places this file in the working Microsoft Windows directory, for example, c:\Windows\jde.ini. If you are unsure of the workstation's working Microsoft Windows directory, use the Find command to locate the jde.ini file.

  2. Use an ASCII editor (like Notepad or Wordpad) to open the file.

  3. Verify or change the name of the jdedebug.log file.

    The location and file name of the jdedebug.log file is defined by this setting in the jde.ini file:

    SettingPurpose
    DebugFile=Specifies the location and name of the jdedebug.log file. The default value is c:\jdedebug.log.

  4. Enable or disable the logging of events to the jdedebug.log file through this setting in the [DEBUG] section:

    SettingPurpose
    Output=Valid values are:
    • NONE: No trace information is written to jdedebug.log.

    • FILE: Database and runtime trace information is written to the file that is specified by the DebugFile= parameter in the [DEBUG] section.

    • EXCFILE: Runtime trace information is written to the file that is specified by the DebugFile= parameter in the [DEBUG] section.

    • BOTH: Trace information is written to both jde.log and jdedebug.log.



    Note:

    The primary method of disabling the jdedebug.log is by using the Output parameter. However, if you set Output=FILE and you leave the DebugFile value blank (or specify an invalid location), JD Edwards EnterpriseOne still performs debug tracing but does not write the results to any jdedebug.log file. If you delete or disable (comment out) the DebugFile parameter, JD Edwards EnterpriseOne automatically creates and writes to a log file called jdedebug.log in the c:\directory of the workstation.

  5. Set the level of debugging information that you want written to the jdedebug.log file.

    The debug level is determined by this parameter in the [DEBUG] section:

    SettingPurpose
    Output=Specifies the debug level. You can specify any combination of allowable values using commas as delimiters. The default setting is LEVEL=BSFN,EVENTS. Valid values are:
    • EVENTS

    • BSFN

    • SF_x

    • GRID

    • PARENT_CHILD

    • GENERAL

    • MESSAGING

    • WORKFLOW

    • WORKFLOW_ADMIN

    • MEDIA_OBJ

    • CONTROL


    For example, LEVEL=SF_CONTROL. In addition, you can specify multiple system functions by separating them with commas. For example, LEVEL=SF_GRID,SF_CONTROL. You can also specify numeric values:

    1: Traces critical errors. This is the default level. That is, whether you specify this value or not, the system will always trace critical errors.

    2: Traces critical errors. This is the default level. That is, whether you specify this value or not, the system will always trace critical errors.

    3: Traces statements as the software enters and exits each event. Specifying this value is the equivalent of specifying the EVENTS value.

    4: Traces main messages that the software sends to a controlling parent of a child. These messages concern the processing functions such as the grid.

    5: Provides a detailed trace report of every function that the software calls in the interactive runtime module. This setting is applicable only to developers of the runtime module.

  6. Save the changes and close the jde.ini file.

13.4.5 Setting Up the Batch Process Log

To set up the batch process log:

  1. Locate the workstation jde.ini file.

    The JD Edwards EnterpriseOne setup program places this file in the working Microsoft Windows directory, for example, c:\Windows\jde.ini. If you are unsure of the workstation's working Microsoft Windows directory, use the Find command to locate the jde.ini file.

  2. Use an ASCII editor (such as Notepad or Wordpad) to open the file.

  3. Set the level of batch report debugging information that you want written to the batch process log file, and set whether you want the file to be saved.

    These settings are controlled by these parameters in the [UBE] section:

    SettingPurpose
    UBEDebugLevel=Specifies the level of UBE debug logging. The default value is 0, and values are:
    • 0: No message in a log file.

    • 1: Error messages, and log entry and section level messages.

    • 2: Object level messages (plus Level 1 messages).

    • 3: ER messages and database mapping messages (plus Level 1 and 2 messages).

    • 4: SQL statements (plus Level 1, 2, and 3 messages).

    • 5: Batch process function calls and printed output values (plus Level 1, 2, 3, and 4 messages).

    • 6: Batch process function calls and printed output values (plus Level 1, 2, 3, 4, and 5 messages).

    UBESaveLogFile=Specifies whether the <batch_report>.log file will be saved. Values are:
    • 0: The <batch_report>.log file is not saved.

    • 1: The <batch_report>.log file is saved in the workstation JD Edwards EnterpriseOne print queue directory (E900\PrintQueue).


  4. Save the changes and close the jde.ini file.

13.4.6 Troubleshooting with the Compile Error Log

For JD Edwards EnterpriseOne workstations in development environments, use this log to identify faults in JD Edwards EnterpriseOne processing that are related to compiling and generating applications and business functions. This log for compiled event rules provides an account of event rules (Named Event Rules, Table Event Rules, and applications) that do not properly compile and process. JD Edwards EnterpriseOne generates this log file every time the Code Generator program (cg.exe) is run and errors occur with compiled event rules.

The <compile_error> portion of the log file name refers to a variable value for the name of the event rules being compiled. For example, a name of a log file for compiling NER N3200780 is N3200780.log. The error log from an application containing compiled event rules replaces the first letter of the application name with an E; for example, P0101 generates an error log named E0101.log.

Use this log when errors have occurred within the Code Generator while you were compiling an application, Named Event Rules, or Table Event Rules. When this happens, a message box appears beneath the JD Edwards EnterpriseOne Code Generation form with the source member and the problem description. You can use the log file to keep a record of such problems. The compile error log resides in the log folder under the path code portion of the E900 directory tree, for example, c:\E900\PD900\LOG.

13.4.7 Troubleshooting with jdecpy.log

The system produces output for jdecpy.log each time the copy table program (cpytbl.exe) is run on the workstation. In general, the file contains records of those tables that were successfully copied from the local database to the chosen server. This log also indicates whether any inserts failed. Such failures indicate a possible error. This log is automatically stopped after cpytbl.exe finishes.

The jdecpy.log resides in the root directory of the workstation, usually in c:\. JD Edwards EnterpriseOne automatically generates this log every time you run cpytbl.exe. The log is created or overwritten each time it runs.

After you use jdecpy.log to determine that a copy table error has occurred, you should refer to the jde.log. If a table does not copy properly, the detail of the error text is written to jde.log. The jde.log contains the actual error message and message ID. The message ID relates to the line prefix numbers in the jdecpy.log. This ID will help you locate the applicable error text that was written to the jde.log.

13.4.8 Troubleshooting with the sql.log

You can use sql.log to view exactly what is being sent through the ODBC driver. This log is not a JD Edwards EnterpriseOne log; another software vendor provides this log process. For workstations, sql.log resides in the default root directory of the workstation, usually in c:\. You can direct the output to any file in any location. In general, instead of using the sql.log, you can use the jdedebug.log because it also tracks SQL statements.

In sql.log, the important lines to search for are:

  • SELECT * FROM

  • SQLBindCol

  • Table not found

If you experience a problem with the ODBC settings or can't connect to a JD Edwards EnterpriseOne ODBC database, activate logging for jde.log, jdedebug.log, and sql.log. Duplicate the problem, check jde.log or jdedebug.log to view the ODBC error messages, and check the end of sql.log to determine the last process. The majority of ODBC problems occur when these processes are called:

  • Process SQL Statements

  • Receive Results

13.4.9 Activating sql.log

To activate sql.log:

  1. From the Microsoft Windows Control Panel, select 32bitODBC.

  2. On Data Sources, click Options.


    Note:

    Leave the Stop Tracing Automatically option selected. Because this log grows rapidly, we recommend that you stop the trace in this way to preserve disk space resources and CPU cycles.

    Ensure that Trace ODBC Calls is cleared when you are not debugging. The log files can consume large amounts of disk space as well as CPU cycles.

13.4.10 Troubleshooting ODBC Problems Using sql.log

To troubleshoot ODBC problems using sql.log:

  • Ensure that the data source names are set up correctly (as system data sources) and that a driver has been set up in the 32bitODBC in Control Panel.

  • Make sure that Client Access has the correct parameters.

  • Ensure that the library to which you are pointing is set up correctly.

  • Look for these ODBC error messages in jde.log and jdedebug.log:

    • Table not in library

      If the table that is specified couldn't be found in the specified location, go to the appropriate DBMS and attempt to locate the table.

      If the table does not exist, you must generate the table.

      If the table exists but has been moved, you must change the data source to point at the new library.

    • Not Binding Column Data Types

      This error message means that the row is in use and that another program has a lock on that data. As a result, you cannot use this row until the program that is currently using it releases it.

13.4.11 Troubleshooting with the jdeinst.log

Use jdeinst.log to view the status of the JD Edwards EnterpriseOne silent installation. The silent installation mode enables you to submit a workstation installation request through command line arguments. JD Edwards EnterpriseOne creates a log file that records error conditions that were encountered during the silent installation, and it indicates whether the silent installation was successful. The jdeinst.log file is located in the root directory of the workstation.

PK5 PKƉZEOEBPS/appx_ms_c_compiler.htm^H Using the Microsoft Visual C++ 2005 or Higher Level Compiler

A Using the Microsoft Visual C++ 2005 or Higher Level Compiler

This appendix contains the following topics:


Note:

All references to Microsoft Visual C++ 2005, VS2005, (v.8) contained within this Appendix refer to the defined JD Edwards EnterpriseOne minimum technical requirement Microsoft Windows platform compiler, e.g. Microsoft Visual C++ 2005 SPn, Microsoft Visual C++ 2008 SPn (where n represents a service pack). Please refer to the JD Edwards EnterpriseOne minimum technical requirements to identify supported versions of the Microsoft Windows platform compiler.

A.1 Understanding Microsoft Visual C++ 2005 or Higher Level Runtime Libraries

This section discusses:

  • Microsoft Visual C++ runtime libraries background.

  • Redistribution of Microsoft Visual C++ 2005 or higher runtime libraries.

A.1.1 Microsoft Visual C++ Runtime Libraries Background

Historically, the Microsoft Visual C++ compiler runtime libraries have been redistributed as part of our JDEdwards OneWorld Xe and EnterpriseOne products. For past Visual C++ compiler releases (before Visual C++ 2005), the redistribution of the compiler specific runtime libraries has been quite simple. Our installer process placed the runtime libraries in a location found within the server's path, (for example, %SYSTEMROOT%\system32), to make them accessible.

Microsoft Visual C++ compiler release 2005 (v.8) or higher runtime libraries are not backward and forward compatible. When JD Edwards EnterpriseOne objects are compiled using Microsoft Visual C++ 2005 and linked into a dynamic link library (DLL), a manifest file is created for each DLL. This DLL-specific manifest identifies the runtime library version used to compile and link the objects that were built. Unlike past compilers, the runtime libraries must not only be release-specific but also version-specific. For instance, when the Microsoft Visual C++ 2005 Compiler and SPn, (where n represents a service pack) are installed on a machine, the Windows\WinSxS (side-by-side) folder is updated to include the associated compiler runtime libraries with the release level of Visual Studio 2005 SPn.

With the Visual C++ 2005 or higher compiler, manifests associated with our DLLs must now be created. Each DLL-specific manifest identifies a specific runtime library release and version.

This association requires that all Microsoft Windows machines that are part of a JD Edwards EnterpriseOne solution and that perform business function builds share a Microsoft Visual C++ 2005 compiler with identical service pack releases.

When you build new packages using the Microsoft Visual C++ 2005 SPn (or higher) compiler, you must ensure that all machines receiving these packages have the corresponding runtime libraries installed. This is important to note. Assuming Microsoft makes a new service pack available or requires an update for its Visual C++ 2005 compiler and it is installed on your JD Edwards EnterpriseOne Microsoft Windows build machines, you must do the following:

  • Ensure that all JD Edwards EnterpriseOne Microsoft Windows build machines, both servers and workstations, have the identical compiler service pack release levels installed.

  • Distribute the new Visual C++ 2005 SPn runtime libraries to all Microsoft Windows machines that are receiving packages built by Visual C++ 2005 SPn and do not have a compiler installed.


Note:

Microsoft does make the Visual C++ 2005 SPn redistributable package available from the Microsoft Download Center. From the Microsoft Download Center, search for Microsoft Visual C++ 2005 SP1 Redistributable Package (x86), Microsoft Visual C++ 2008 SP1 Redistributable Package (x86), etc.

A.1.2 Redistribution of Microsoft Visual C++ 2005 or Higher Runtime Libraries

This process applies to customers adopting Microsoft Visual C++ 2005 or a higher level compiler. All JD Edwards EnterpriseOne Microsoft Windows machines receiving application foundation packages built with Microsoft Visual C++ 2005 or higher require the runtime libraries to be installed. For example, the Microsoft Visual C++ 2005 Redistributable Package (vcredist_x86.exe) installs runtime components of Visual C++ required to run applications developed with Visual C++ on a computer that does not have Visual C++ 2005 compiler installed.

The absence of the Microsoft Visual C++ 2005 runtime libraries from a machine using a JD Edwards EnterpriseOne application foundation package built by the same compiler will result in "Business function Library load failed..." error messages. Once the Visual C++ 2005 runtime libraries are installed on a Microsoft Windows machine, only new service pack updates or Microsoft Updates to the Microsoft Visual C++ 2005 compiler require redistribution of new runtime libraries.


Note:

All references to Microsoft Visual C++ 2005 within this Appendix refer to the JD Edwards EnterpriseOne defined Microsoft Windows platform compiler minimum technical requirements, for example, Microsoft Visual C++ 2005 SPn, Microsoft Visual C++ 2008 SPn. Please refer to the JD Edwards EnterpriseOne minimum technical requirements to identify supported versions of the Microsoft Windows platform compiler.

A Microsoft or third-party system management tool such as SMS can be used to distribute the Microsoft Visual C++ 2005 runtime libraries. This is generally the recommended approach for the distribution of Microsoft packaged product. The JD Edwards EnterpriseOne package build feature can also be used to push Microsoft's redistributable runtime library package to all Microsoft Windows client machines. Delivery of Microsoft Visual C++ 2005 runtime libraries for JD Edwards EnterpriseOne enterprise, logic, application, or batch servers is also explained in this appendix.

See .

A.2 Creating a VS2005 Runtime Library Package Feature

The JD Edwards EnterpriseOne package build feature makes it possible to distribute third party applications with the deployment of a client package. Create a package feature for the Microsoft Visual C++ 2005 compiler runtime libraries to leverage this facility.

The deployment server should have a copy of the Microsoft Visual C++ 2005 SPn vcredist.exe. By default the Runtime Libraries path for the 2005 compiler release is C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86, while the 2008 compiler release is C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86.

To create a VS2005 runtime library package feature:

  1. On the deployment server, open Windows Explorer and navigate to your JD Edwards EnterpriseOne solution's shared folder. For example, E900.

  2. Expand the shared node and open OneWorld Client Installs\ThirdParty.

  3. Under the folder ThirdParty, create a new folder with the name VS2005RTL.

  4. Locate and copy the vcredist_x86.exe file from your installed compiler path. For example, C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86.

  5. Copy the vcredist_x86.exe file into the VS2005RTL folder.

  6. Log into the deployment server's DEP900 environment.

  7. Fast path to menu GH9083, Package and Deployment Tools, and select the Package Assembly application.

  8. On the Work with Packages form, select Form and then Features.

  9. On the Work with Features form, click Add.

  10. Click Next to begin the Feature Based Deployment Director.

  11. On the Feature Information form, complete these fields and click Next:

    FieldValue
    FeatureVS2005_RTL
    Feature Type1
    DescriptionVisual C++ 2005 Runtime Libraries
    Feature Installation OptionsRequired
    ComponentsAdditional Install Processes

  12. On the Additional Install Processes form, select the Execute After Install option.

  13. Complete these fields and click Next:

    FieldValue
    Third PartyVS2005RTL
    DescriptionVisual C++ 2005 Runtime Libraries
    Sequence1
    Executable Namevcredist_x86.exe

    This is the name of the executable file found in the ...\ThirdParty\VS2005RTL folder.

    Source Path\\<deploymentservername>\E900\OneWorld Client Install\ThirdParty\VS2005RTL

    Note: Do not use the Select Directory browse function to obtain the aforementioned path. Instead type the UNC path or cut and paste the Universal Naming Convention (UNC) path from Windows Explorer into the Source Path field.

    Parameters/Q

    /Q denotes Quiet Mode and does not require any user intervention.


  14. Click Save to preserve the feature settings and then click Next to continue.

  15. On the Feature Summary form, click End to complete the feature definition.


Note:

If you expand the nodes describing each package feature you may inspect the feature definition. You may notice that the UNC share path has been truncated for your newly created entry. This is NOT an issue as this line entry serves only as a description. The complete UNC share path has been properly preserved in System table F96604.

A.3 Creating an Update Package with the VS2005 Runtime Library Feature

Once the VS2005 runtime library package feature has been created, it can be associated with either an update or full package. Creating an update package containing this feature will cause the full parent package assembly information to include this same feature.

To create an update package with the VS2005 runtime library feature:

  1. Go to menu GH9083, Package and Deployment Tools, and select the Package Assembly application.

  2. On the Work with Packages form, click Add.

  3. On the Package Assembly Director, click Next to begin the package assembly process.

  4. On the Package Information form, select the Express option, complete these fields, and click Next:

    FieldExample Value
    Package NameDV2005RTL
    DescriptionVisual C++ 2005 RTL for DV
    Path CodeDV900

  5. On the Package Component Revisions form, select the Update option and type or select the parent package. For example, DV900FA.

  6. Click the Features button.

  7. On the Features Components form, click the Browse button.

  8. On the Feature Component Selection form, click Find.

  9. Highlight the entry associated with VS2005_RTL and click Select to mark the entry with a check mark.

  10. Click Close and Close again to return to the Package Component Revisions form.

  11. Verify that the form shows "Individual Features Selected" and click End to complete the package assembly process.

  12. On the Work with Packages form, select Row and Active/Inactive to activate the package.

A.4 Building and Deploying an Update Package with the VS2005 Runtime Library Feature

After creating the update package, you will need to build and deploy the package.

To build and deploy an update package with the VS2005 runtime library feature:

  1. Highlight your package and select Row and Define Build.

  2. On the Package Build Definition Director, click Next to begin the build definition process.

  3. On the Package Build Revisions form, ensure that the Build Location Client check box is checked and click Next.

  4. On the Build Features tab, select the Build Feature INFs option.

  5. On the Package Build Revisions form, click End to complete the build definition process.

  6. On the Work with Package Build Definition form, select Row and Active/Inactive to activate the package build definition.

  7. Select Row and Submit Build to build the package.

  8. On the Report Output Destination form, select On Screen and click OK.

  9. Once the package build has completed, review the R9621 PDF report file to verify that the build completed successfully.

    The successful package build with the included package feature results in the creation of a feature-specific INF file.

  10. After building the package, the appropriate person must approve it for client deployment.

    Afterwards, both the update and associated parent package will automatically include the Microsoft Visual C++ 2005 runtime libraries as part of the client installation process.

    Since this feature was configured to install in Quiet Mode (/Q), it does not require any user intervention. If the Microsoft Visual C++ 2005 runtime libraries are already installed on the machine, the feature-specific installer will exit.

A.5 Installing the VS2005 Runtime Library on an Enterprise Server

All JD Edwards EnterpriseOne Microsoft Windows machines receiving application foundation packages built by Microsoft Visual C++ 2005 require the runtime libraries to be installed.

Customers using a JDEdwards EnterpriseOne enterprise, logic, application, or batch server that does not have a Microsoft Visual C++ 2005 compiler installed, must install the associated Microsoft redistributable runtime library package (vcredist_x86.exe). Failure to install the runtime libraries while using a Microsoft Visual C++ 2005 built application foundation package on a machine without the supported compiler will result in "Business function Library load failed ..." error messages.

A Microsoft or third-party system management tool such as SMS could be used to distribute the Microsoft Visual C++ 2005 runtime libraries to these machines. This is generally the recommended approach for the distribution of Microsoft packaged products. In the absence of a system management tool, simply install the Microsoft redistributable runtime library package (vcredist_x86.exe).

To install the Microsoft redistributable runtime library package:

  1. Locate the vcredist_x86.exe file on a machine with the Microsoft Visual C++ 2005 compiler installed. The default installed compiler path is C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86.

  2. Copy the vcredist_x86.exe file to a folder on your local machine.

  3. Double-click the vcredist_x86.exe file executable to install the Microsoft Visual C++ 2005 runtime libraries.

PK. %y^^PKƉZEOEBPS/e1_wndws_serv_clust.htmMQ Administering JD Edwards EnterpriseOne on a Windows Server Cluster

8 Administering JD Edwards EnterpriseOne on a Windows Server Cluster

Oracle's JD Edwards EnterpriseOne supports Microsoft Cluster services as a server cluster. This chapter does not cover Network Load Balancing Clusters.

Configuration of Microsoft Server Cluster has changed with Oracle's JD Edwards EnterpriseOne 8.9. This information is valid beginning with JD Edwards EnterpriseOne 8.9 and should not be used with previous releases. For more information about how to install and set up a Microsoft Server Cluster, see the appropriate Microsoft documentation.

This chapter contains the following topics:

8.1 Prerequisites

Before you complete the tasks in this chapter:

  • Partition the disk array to logically divide the software components. Typically, you need to set up these partitions:

    • A partition that contains the cluster software.

    • A partition that contains the JD Edwards EnterpriseOne software.

    • A partition that contains the database management system (DBMS) software and database if these reside on the cluster system.

  • Configure the network, which includes setting up connections among servers, workstations, and printers.

  • Set up the cluster according to the Microsoft documentation for the Window Server version you are using.

  • JD Edwards EnterpriseOne requires a static IP address assigned to a virtual server name. The virtual server name is used as the JD Edwards EnterpriseOne enterprise server name or application server name in the cluster.

    Although you need only one network card in each node, you should use two cards to ensure redundancy. One network card communicates with the public network, and the second card connects between nodes. This setup enables the cluster to remain active when the primary node loses the network connection. If you use only one network card, when a node loses the network connection, that node also loses the connection to other nodes in the cluster.

  • If the database and Oracle's JD Edwards EnterpriseOne are both running on the cluster, they can be configured to run on separate nodes. To accomplish this, separate JD Edwards EnterpriseOne resources and database resources into different groups. Also, be sure that JD Edwards EnterpriseOne and the database do not share disk resources. JD Edwards EnterpriseOne resources need to be in the same group as the cluster network name and cluster IP address. This can be the cluster group.

    When the JD Edwards EnterpriseOne and database groups are in separate groups, the database group must be online before bringing the JD Edwards EnterpriseOne resources online.

    If you do not require JD Edwards EnterpriseOne and database resources to run on separate nodes, place all database and JD Edwards EnterpriseOne resources in the cluster group.


See Also:


8.2 Upgrading JD Edwards EnterpriseOne in a Microsoft Windows Server Cluster Environment

If you are already running JD Edwards EnterpriseOne in a cluster but are upgrading to JD Edwards EnterpriseOne 8.9 or later, you must change the cluster configuration for the cluster to operate properly. JD Edwards EnterpriseOne 8.9 and later releases require use of an IP address and a network name separate from the cluster IP address and network name.


Note:

In previous releases, the cluster network name and IP address were used for the JD Edwards EnterpriseOne enterprise server name.

A Microsoft Windows Server 2008 Server Cluster requires an IP address and network name separate from the cluster IP address and network name for JD Edwards EnterpriseOne. Because the cluster name exists in JD Edwards EnterpriseOne ini files and tables, the recommended solution is to rename the cluster and create new resources for the JD Edwards EnterpriseOne group using the old cluster name and a different IP address. This requires changing the static IP address associated with the old cluster name to avoid an IP address conflict. Refer to the Microsoft documentation about renaming a cluster. After the cluster is renamed, continue with these instructions.

8.3 Setting Up JD Edwards EnterpriseOne on a Microsoft Windows 2008 Server Cluster

This section explains how to set up JD Edwards EnterpriseOne on a Microsoft Windows 2008 Server Cluster. The example in this section pertains to a two node cluster configuration.


Note:

JD Edwards EnterpriseOne executables (such as runube) running from a command line on a Microsoft Windows Cluster server node on Microsoft Windows 2008 and later releases, return the node name instead of the cluster name for the enterprise server name. This happens because the executable is not a defined resource in Microsoft Windows Cluster Services.

This creates an issue when trying to retrieve the job in JD Edwards EnterpriseOne. To resolve this problem, add the following setting to the jde.ini file of the enterprise server. You can add this setting to any location, but it is recommended that you add it after the [DEBUG] section:

[CLUSTER]

PrimaryNode=Cluster Name


To set up JD Edwards EnterpriseOne on a Microsoft Windows 2008 Server Cluster:

  1. Consult the JD Edwards EnterpriseOne MTRs to determine the appropriate Microsoft Windows OS level. Install the OS on each node. Do not use domain controllers for a JD Edwards EnterpriseOne cluster configuration.

  2. Follow the appropriate Microsoft documentation for specific instructions on activating Microsoft Server Cluster Software.

  3. Install JD Edwards EnterpriseOne on a shared disk on the cluster. All nodes will share a single copy of JD Edwards EnterpriseOne. The name used for the JD Edwards EnterpriseOne enterprise server will be the virtual name created in the Prerequisites section.

  4. Open Failover Cluster Management from Administrative Tools.

  5. Right-click the cluster name and select "Configure a Service or Application." If the Before you Begin page appears, click ='Next. On the "Select Service or Application" screen, select Generic Service from the list.

  6. On the Select Service screen, select JD Edwards EnterpriseOne network service, and then click Next.

  7. On the Client Access Point screen, change the Name field to the JD Edwards EnterpriseOne virtual name created earlier.

  8. On the Select Storage screen, select the drive shown, which is the disk where JD Edwards EnterpriseOne is installed.

  9. On the Replicate Registry Settings screen, click Next.

  10. The next screen is the Confirmation screen. Review your configuration for errors and warnings. Make any necessary changes or if everything looks good, select Next.

  11. When the Summary screen appears and indicates the configuration was a success, click Finish.

  12. Using Failover Cluster Manager, bring the JD Edwards EnterpriseOne Service online. The JD Edwards EnterpriseOne service has three parts the Server Name, the Disk Drives, and Other Resources, which is the JD Edwards EnterpriseOne Network service. All three parts must be online.

  13. Run porttest. If porttest is successful, then you can install the service on secondary nodes.

  14. Using Failover Cluster Manager, bring only the JD Edwards EnterpriseOne Network service offline; leave the Server Name and Disk Drives online. Move the JD Edwards EnterpriseOne service to the secondary node.

  15. On the secondary node, open a command prompt. Change the directory to the JD Edwards EnterpriseOne system\bin32 directory. Install the JD Edwards EnterpriseOne service by typing jdesnet –i in the command prompt. This will install the JD Edwards EnterpriseOne service.

  16. Using Failover Cluster Manager, bring the JD Edwards EnterpriseOne Network service online.

  17. Run porttest.

  18. Repeat steps 14-17 for each additional node in the cluster where JD Edwards EnterpriseOne will run.

8.4 Setting up EnterpriseOne on a Microsoft Windows Server 2008 R2 Failover Cluster

This section explains how to set up JD Edwards EnterpriseOne on a Microsoft Windows Server 2008 R2 Failover Cluster. The example in this section describes a two node cluster configuration.


Note:

JD Edwards EnterpriseOne executables (such as runube) running from a command line on a Microsoft Windows Cluster server node on Microsoft Windows 2008 and later releases, return the node name instead of the cluster name for the enterprise server name. This happens because the executable is not a defined resource in Microsoft Windows Cluster Services. This creates an issue when trying to retrieve the job in JD Edwards EnterpriseOne.

To resolve this problem, add the following setting to the jde.ini file of the enterprise server. You can add this setting to any location, but it is recommended that you add it after the [DEBUG] section:

[CLUSTER]
PrimaryNode=Cluster Name

To set up JD Edwards EnterpriseOne on a Microsoft Windows 2008 R2 Server Failover Cluster:

  1. Consult the JD Edwards EnterpriseOne MTRs to determine the appropriate Microsoft Windows OS level. Install the OS on each node. Do not use domain controllers for a JD Edwards EnterpriseOne cluster configuration.

  2. Follow the appropriate Microsoft documentation for specific instructions on activating Microsoft Server Cluster Software.

  3. Install JD Edwards EnterpriseOne on a shared disk on one node in the cluster. All nodes will share a single copy of JD Edwards EnterpriseOne. The name used for the JD Edwards EnterpriseOne enterprise server will be the virtual name created in the Prerequisites section.

  4. Open Failover Cluster Management from Administrative Tools. Click Start /Administrative Tools / Failover Cluster Management. Start the Failover Cluster Management on the node that owns the shared disk used by EnterpriseOne Enterprise Server.

This image is described in the surrounding text.

In the example above, the cluster JDECLUSTR8 has been created with two nodes: DNVM8R208 and DNVM8R207.

8.4.1 Installing EnterpriseOne 8.98 JDENET service

To install an EnterpriseOne 8.98 JDENET service:

This image is described in the surrounding text.
  1. Highlight Services and Applications under the cluster name, right click and select Configure a Service or Application.

    This image is described in the surrounding text.
  2. Click Next.

    This image is described in the surrounding text.
  3. Select Generic Service. Click Next.

    This image is described in the surrounding text.
  4. Scroll down and select the JDE Network Service. Click Next.

    This image is described in the surrounding text.
  5. Change the Name to the virtual name you have created for EnterpriseOne and change the IP address so that it reflects the IP address of the virtual name you are using. Select Next.

    This image is described in the surrounding text.
  6. Select the disk where EntepriseOne is installed, and then select Next.

    This image is described in the surrounding text.
  7. Select Add.

    This image is described in the surrounding text.
  8. Add the registry service entry for JDENET (HKEY_LOCAL_MACHINE).

  9. Click OK.

    This image is described in the surrounding text.
  10. Click Next.

    This image is described in the surrounding text.
  11. Click Next.

    This image is described in the surrounding text.
  12. Configure the High Availability.

    This image is described in the surrounding text.
  13. Click Finish.

    This image is described in the surrounding text.
  14. The configuration steps will follow, when prompted click Finish.

The JDE net service should be online.

Firewall Requirements

If Windows Firewall is turned on for Domain Profiles you will need to add jdesnet.exe and jdenet_n.exe executables to the Windows Firewall on all nodes. On the node that is active with EnterpriseOne running, go to Start / All Programs / Windows Firewall with Advanced Security.

This image is described in the surrounding text.
  1. Select InBound rules. Right click and select New Rule.

    This image is described in the surrounding text.
  2. Select the Program radio button.

  3. Select Next.

    This image is described in the surrounding text.
  4. Select This Program Path. Drill down to the JDEDWARDS/E900/DDP/System/bin directory and select jdenet_n.exe.

    This image is described in the surrounding text.
  5. Select Next.

    This image is described in the surrounding text.
  6. Select the Allow the connection radio button.

  7. Select Next.

    This image is described in the surrounding text.
  8. All the radio buttons should be selected, Domain, Private and Public. If this does meet your company's security requirements you may have to make adjustments.

  9. Select Next.

    This image is described in the surrounding text.
  10. Give your rule a name, in the example JDE_jdenet_n is used, add a description.

  11. Select Finish.

  12. Repeat steps 1 through 11 and select jdesnet.exe instead of jdenet_n.exe.

  13. Repeat steps 1 through 12 for each node in your cluster. The node you are working on must be the active node for EnterpriseOne in order to access the shared disk where the EnterpriseOne software resides.

Troubleshooting

  1. If you are logged on to an EnterpriseOne web or fat client at the time of a cluster failover it may be necessary to back out of the application or even log off and log on to the EnterpriseOne client to reconnect.

  2. Do Not use EnterpriseOne Server Manager to bring up or down the EnterpriseOne jdenet service, use the Failover Cluster Manager.

PK>MMPKƉZEOEBPS/e1_on_wts.htm~ Working with JD Edwards EnterpriseOne on Windows Terminal Server

6 Working with JD Edwards EnterpriseOne on Windows Terminal Server

This chapter contains the following topics:

6.1 Understanding Windows Terminal Server

Windows Terminal Server (WTS) provides an excellent solution for Oracle's JD Edwards EnterpriseOne in a WAN environment. WTS enables you to set up multiple terminal server client machines that need only contain the WTS client software. You can use less powerful machines to function as terminal server clients. These clients connect to a machine set up with TSE software. Multiple users can simultaneously connect to the same terminal server to run JD Edwards EnterpriseOne.

Windows Terminal Server (WTS) is a multi-user extension to the Microsoft Windows family of operating systems. WTS enables users to share an application that resides on the terminal server. The terminal server performs all the processing for an application, and then sends a picture of the screen to the client terminal. Only keystrokes and mouse movement occur at the terminal. These movement commands travel through the network to the server, which returns the modified screen to the terminal.

This list provides an example of the WTS process flow:

  • Step 1: JD Edwards EnterpriseOne client applications execute on terminal server.

  • Step 2: The terminal server sends the video for the user interface across any connection.

  • Step 3: The terminal server client displays the user interface.

  • Step 4: The terminal server client sends keystrokes, mouse clicks and screen shots back to the terminal server where processing occurs.

By sending only the information necessary to recreate the screen and convey mouse and keyboard events, TSE provides LAN-like performance over WAN and dialed connections.

TSE enables you to set up multiple users to work with a single client installation of JD Edwards EnterpriseOne. By sharing a single copy of JD Edwards EnterpriseOne on the terminal server, you reduce the costs of deployment and administration.


Note:

Sun-Solaris can be added to the list of enterprise servers that can run in a JD Edwards EnterpriseOne configuration with a terminal server.

6.1.1 Incorporating Citrix MetaFrame with WTS

WTS provides multi-user technology that uses a presentation protocol called Remote Desktop Protocol (RDP). RDP, based on the International Telecommunications Union T.120 protocol, is a viable option if you plan to use only Win16/Win32 clients in an uncomplicated configuration.

If the network comprises multiple platforms and requires optimum performance, Citrix offers a product called Citrix MetaFrame with multi-user technology that provides additional functionality to WTS, such as load-balancing and the support of more client platforms. MetaFrame uses the Independent Computing Architecture (ICA) presentation protocol on which Citrix based WinFrame, a successful multi-user product for Windows 3.51.


Note:

If you start JD Edwards EnterpriseOne as a specified application through ICA, you cannot view the jde.ini, jde.log, and jdedebug.log files.

This table lists the capabilities of WTS RDP and MetaFrame:

CapabilityTSE RDPMetaFrame
Client PlatformsWTS client software runs on these platforms:
  • Windows 16-bit

  • Windows 32-bit

  • Some RDP-equipped Windows terminals

  • Windows CE

MetaFrame runs on these platforms:
  • DOS

  • Windows 16-bit

  • Windows 32-bit

  • X-Term

  • MacIntosh

  • Solaris

  • Windows CE

  • Some ICA-equipped network computers

  • Some internet browsers as a plug-in

Network TopologiesWTS RDP supports the TCP/IP standard.MetaFrame supports these standards:
  • IPX

  • SPX

  • PPP

  • NetBIOS

Load-balancingWindows supports load balancing.You can purchase an option for MetaFrame that provides load-balancing capabilities.
EncryptionN/AYou can purchase an option for MetaFrame that provides the encryption of ICA traffic.
CCPDD:cut/copy/paste/drag/dropWindows 2000 supports cut, copy, paste, drag, and drop.MetaFrame enables CCPDD between the session window and the underlying Windows desktop.
Device MappingWTS RDP enables you to map local devices for printing through a work-around.MetaFrame enables you to map devices local to the WTS client from the terminal server. For example, you can locally map hard drives, fax modems, and printers.
Session ShadowingWindows supports remote control.With MetaFrame loaded, WTS supports an administration tool called session shadowing. Session shadowing helps administrators audit remote sessions. You might also use session shadowing for video conferencing and in a support desk role.

6.1.2 WTS Restrictions in Multi-user Mode

JD Edwards EnterpriseOne is WTS-aware. WTS-aware means that when you deploy JD Edwards EnterpriseOne as a client on a terminal server, the software automatically recognizes the terminal server and configures itself to run in multi-user mode. Because of the configuration required by multi-user mode, these restrictions apply to terminal server users:

  • Disabled development with Form Design Aid, Report Design Aid, and Table Design Aid, including Object Management Workbench check-in and check-out capabilities.


    Note:

    The restriction on development does not prevent new versions of existing applications, but only the modification of current applications and the creation of new applications. Also, a complete set of development specifications (500+ MB) defeats the purpose of a thin client.

  • Disabled local processing for batch applications.

    All batch applications process on a separate batch server to avoid an impact to performance on the terminal server.

  • Disabled Just-In-Time-Installation (JITI).

    Because you deploy a full client package to the terminal server, JITI is not recommended.

  • Disabled intensive specification file access.

    Applications that intensively access specification files, such as the Universal Table Browser application, are not active due to the strain put on the terminal server when the application retrieves data. Also, file level locking could prevent access to data in the specification files for other users.

A standard JD Edwards EnterpriseOne configuration and a terminal server configuration are not mutually exclusive within an enterprise. You can mix a standard configuration with a terminal server configuration to maximize the overall performance. For example, you can use a standard JD Edwards EnterpriseOne configuration over a LAN, and use a terminal server configuration to support remote sites across a WAN.

6.1.3 Network Considerations

The terminal server must reside on the same local area network (LAN) as the enterprise server or database server, or both. Include one normal JD Edwards EnterpriseOne client on the LAN to verify performance and function. Normal JD Edwards EnterpriseOne LAN requirements apply.

For a wide area network (WAN), you must use a 56KB, or faster, line.

6.1.4 Performance Considerations

When you add any ICA session, change the Window Colors display properties to 16 color mode or to the lowest setting that the software and hardware allow. You can access display properties from the Control Panel.

Also, for the Citrix setup, you need to select the Compress data stream and Cache bitmaps to disk options. See the appropriate Citrix documentation for more information about how to modify these settings.

6.2 Setting Up JD Edwards EnterpriseOne on the Terminal Server

Because JD Edwards EnterpriseOne is WTS-aware, running on a terminal server is almost identical to running a standard client.

When performing certain processes, such as creating log files and running UBEs, JD Edwards EnterpriseOne checks whether it resides on a terminal server or standard client. If it detects a terminal server, the software automatically switches to multi-user mode.

In multi-user mode, JD Edwards EnterpriseOne processes data while simultaneously protecting data integrity and maintaining performance on the terminal server. Multi-user mode also masks any of the multi-user activity from a user so that a terminal server session of JD Edwards EnterpriseOne looks no different than a standard JD Edwards EnterpriseOne client session.


See Also:

  • JD Edwards EnterpriseOne Hardware and Software Requirements Guide.


6.2.1 Setting Up JD Edwards EnterpriseOne on the Terminal Server

To set up JD Edwards EnterpriseOne on the terminal server:

  1. Install Windows Terminal Server on the machine that you will use as the terminal server.

    Refer to the Microsoft documentation for information about how to set up Windows Terminal Server software.

  2. Install Microsoft Terminal Server Client software onto the machines that you will use as terminal server clients.

    You can connect to the terminal server from the Terminal Server Client option on the Programs menu. This file also resides in the Terminal Server Client subdirectory in the Program Files directory. Refer to Microsoft documentation for information about how to set up Terminal Server Client software.

  3. Depending on the type of database you use, you might need to install software so that the client can properly connect with the server where the database resides.


    Note:

    You must use Add/Remove Programs on the Control Panel to install applications on the terminal server. During installation, make sure that you select the All users begin with common application settings option on the Change User Option dialog box.

    Install these software packages on the terminal server as necessary:

    • Oracle for Windows

    • SQL Server client

    • Client Access

    • DB2 for IBM i Connect

  4. Install a full package of JD Edwards EnterpriseOne. You need to install a full package because JD Edwards EnterpriseOne on the terminal server is multi-user. If you install a partial package, multiple users will simultaneously experience Just-In-Time-Installation, which will negatively affect performance on the terminal server.


    Note:

    Install JD Edwards EnterpriseOne from the WTS console or use a third-party remote administration software. Do not install through a remote desktop connection. Use Add/Remove Programs on the Control Panel to install JD Edwards EnterpriseOne on the terminal server. During installation, make sure that you select the "All users begin with common application settings" option on the Change User Option dialog box.

After you perform these steps, you should be able to successfully run JD Edwards EnterpriseOne from terminal server client machines.

6.3 Troubleshooting JD Edwards EnterpriseOne on Windows Terminal Server

This section discusses how to:

  • Troubleshoot UBE output security on WTS.

  • Submit a UBE locally and run it on the WTS.

  • Troubleshoot import/export with Microsoft Excel.

  • Troubleshoot specification files are locked.

  • Reduce JITI frequency.

  • Troubleshoot user cannot restart JD Edwards EnterpriseOne.

  • Troubleshoot logging off versus disconnecting.

  • Troubleshoot shortcuts do not work in email messages.

  • Troubleshoot data selection and sequencing criteria lost.

  • Troubleshoot run-time error occurs during server connection test.

  • Troubleshoot JD Edwards EnterpriseOne development tools are disabled.

  • Troubleshoot users experience problems accessing JD Edwards EnterpriseOne.

  • Troubleshoot log path is incorrect.

  • Troubleshoot shortcut path is incorrect.

  • Troubleshoot only one user can log in to JD Edwards EnterpriseOne.

6.3.1 Troubleshooting UBE Output Security on WTS

A JD Edwards EnterpriseOne WTS user sends PDF files by default from the enterprise server to the local \E900\PrintQueue directories using the Work With Servers (P986116) application. Users select View PDF from the Row menu of the Submitted Job Search form. Because the files are saved to a user's local PrintQueue directory, another user can view the PDF file in Windows Explorer or in Adobe Acrobat.

You can relocate the PrintQueue directory by adding this section to the jde.ini file:

 [NETWORK SETTINGS] 
OutputDirectory=C:\WTSRV\Profiles\USERNAME\Windows 

Server administrators need to make the jde.ini file modification of each user on each WTS so that the PDF output points to each individual user profile directory. With the PrintQueue directory located in the user profiles directory, the PDF files are protected by Windows security. Only server and system administrators have access to the files.

6.3.2 Submitting a UBE Locally and Running it on the WTS

You cannot locally submit UBEs to run on the WTS because of resource constraints such as CPU power. You can run UBEs on a dedicated WTS or during hours when no other JD Edwards EnterpriseOne users are using the machine. Complete the task to submit a UBE locally and run it on the WTS.

To submit a UBE locally and run it on the WTS:

  1. From the System Administration Tools menu (GH9011), select Logical Data Sources (P986115).

  2. On Logical Data Sources, select the WTS machine name with System as the data source and click Select.

  3. On Work with Data Sources, click Add.

  4. On Data Source Revisions, complete these fields:

    • Data Source User

      Enter DB to specify a Local Data Source.

    • Data Source Name

      Enter WTS Local.

    • Data Source Type Enter N to specify MSDE/ODBC.

      Enter E to spicify OEE.

    • DLL Name

      Enter JDBODBC.DLL.

    • Database Name

      Enter System Local.

    • Server Name

      Enter LOCAL.

    • Platform

      Enter LOCAL.

  5. When you run the UBE on the WTS, on the Work with Batch Versions from, select the report you want to run and click Select.

  6. On Version Prompting, select Advanced from the Form menu.

  7. On Advanced Version Prompting, select the Override Location option and click OK.

  8. On Version Prompting, select the Data Selection option and click Submit.

  9. On JDE Data Sources, select WTS Local as the data source and click Select.

6.3.3 Troubleshooting: Import/Export with Microsoft Excel

Importing a Microsoft Excel spreadsheet into a JD Edwards EnterpriseOne grid intermittently fails when users are running WTS.

Please check the MTR (minimum technical requirements) to be sure you are running the latest supported versions of Microsoft Office. You install a single of Microsoft Office 2000 on the WTS. Multiple users then connect to the server and run Microsoft office from the server.

6.3.4 Troubleshooting: Specification Files are Locked

In these circumstances, JD Edwards EnterpriseOne users get a message box to indicate that a specification file is currently unavailable:

  • When another JD Edwards EnterpriseOne session on the same WTS machine performs a data dictionary Just-In-Time-Installation (JITI).

  • When another JD Edwards EnterpriseOne session receives a WTS run-time error dialog box. Generally, this type of error occurs when a memory violation occurs.

In both cases, the specification file or files are locked. The specification files will be unlocked when either the WTS completes the JITI process or a user closes the WTS run-time error dialog box.

To prevent the specification files from being locked when JD Edwards EnterpriseOne performs a JITI, reduce the frequency that JD Edwards EnterpriseOne performs JITIs. Complete this task:

6.3.5 Reducing JITI Frequency

To reduce JITI frequency (B73.3.1, B73.3.2, and B73.3.3):

  1. Run the Generate global table spec (R98CRTGL) batch application on a non-WTS JD Edwards EnterpriseOne client to generate full GLBLTBL specification files.

  2. Copy the full glbltbl.ddb and glbltbl.xdb to the WTS machines.

6.3.6 Troubleshooting: User Cannot Restart JD Edwards EnterpriseOne

Occasionally, when a memory violation occurs in a JD Edwards EnterpriseOne WTS session, the terminal server prevents the user from restarting JD Edwards EnterpriseOne. The administrator must then sign onto the terminal server and end the OEXPLORER.exe process from the Task Manager. After the administrator ends the process, the user can sign on to JD Edwards EnterpriseOne again.

When a run-time exception occurs, JD Edwards EnterpriseOne should immediately exit. To instruct JD Edwards EnterpriseOne to immediately exit in this situation, change the EXCEPTION_Enabled setting in the jde.ini to False:

 [INTERACTIVE RUNTIME] 
EXCEPTION_Enabled=False 

6.3.7 Troubleshooting: Logging Off Versus Disconnecting

Users should always log off their WTS session rather than disconnecting. Logging off shuts down all processes completely for the user.

6.3.8 Troubleshooting: Shortcuts Do Not Work in Email Messages

Workflow provides the ability to send shortcuts to JD Edwards EnterpriseOne applications using email messages. This function does not work when the email application, such as Microsoft Outlook, is not currently active on the terminal server. When the email application invokes the shortcut, the operating system attempts to launch the shortcut on the local machine and not on the terminal server.

Run the email application and JD Edwards EnterpriseOne on the same terminal server machine.

6.3.9 Troubleshooting: Data Selection and Sequencing Criteria Lost

This situation occurs when two or more users are signed on to the same terminal server using the same pathcode.

The first user submits a batch application from Batch Versions, changes the data selection criteria, and then stops at the printer screen. The second user then goes into Batch Versions to submit the same version of the batch application, changes the data selection criteria, and then stops at the printer screen. When the users click OK to send the batch application to the enterprise server for processing, the data selection criteria for the second user overrides the selection criteria for the first user.

A modification to batch processing in JD Edwards EnterpriseOne now saves data selection and sequencing criteria in memory rather than in specification files.

6.3.10 Troubleshooting: Run-Time Error Occurs During Server Connection Test

The Server Administration Workbench (SAW) application receives a run-time error when it performs a server connection test. This situation occurs when the user who performs the connection test does not possess the authority to access the pinging mechanism on the target machine.

6.3.11 Troubleshooting: JD Edwards EnterpriseOne Development Tools Are Disabled

JD Edwards EnterpriseOne development tools are disabled on the terminal server. Currently, we instruct customers to perform all development on non-WTS machines.

6.3.12 Troubleshooting: Users Experience Problems Accessing JD Edwards EnterpriseOne

Only administrators can run JD Edwards EnterpriseOne. This situation is a result of the way JD Edwards EnterpriseOne was installed on the terminal server.

As the Administrator, you should use the Add/Remove Programs application on the Control Panel to install JD Edwards EnterpriseOne on the terminal server. During installation, make sure that you select the All users begin with common application settings option on the Change User Option dialog box. This option ensures that the terminal server maintains JD Edwards EnterpriseOne specific files, such as the jde.ini file, across user profiles.

6.3.13 Troubleshooting: Log Path is Incorrect

The log path in the jde.ini for individual users is incorrect.

The JD Edwards EnterpriseOne installation program sets the WTSLogs setting to False. Users should change this setting to True after the installation and before any users run JD Edwards EnterpriseOne.

When the WTSLogs setting is True, the output log directories for each user point to the home directory of the user rather than to the root directory of the drive. The output log directories settings are also defined in the jde.ini file.

6.3.14 Troubleshooting: Only One User Can Sign in to JD Edwards EnterpriseOne

The main JD Edwards EnterpriseOne window fails to appear after entering the password for all other users.

For B73.3.2 with Service Pack 10 or greater, place the JD Edwards EnterpriseOne command line switch /NoLogo, located in the JD Edwards EnterpriseOne shortcuts, on the desktop and on the Start menu if not already present. Separated by a space, append the text to the end of the line in the Target edit box of the shortcut properties window. Do not include the quotation marks. This will prevent the display of the splash screen.

PKnE~~PKƉZEOEBPS/img/trbl_ent_serv_11.png|PNG  IHDR0) pHYsttfx.IDATx'G]F( 堽k(֢%!)'RLHC{(A4$F(ܵX%%*?RP8lŨ1`GP<33W.3ٙw绳ϳ '9vZ^ca|+|cWϸwk.7Tgg^G9s,/\];;zRqWmu]}w-eޝkVk,̚"/iBʋU!VXbgY(j$ (?ۯ|mܼXc֭r) SeVV>}Tq we³nw2={[׽z-> * o*_ tj-~UEQbU|9_dX.ʢZ,ԐSҺUk O>k.` "qv]EQ|⬣s{ߕU3=):V<'fJuٵ,_|飿Zxo*VUiUgWim.^XOկ>cۏ=}eW2eQkz92uVY[,7]Qi.\D_uVs^?B?U^dɥ7CIB5z}#o-S.2I|-oPmܑSKkn* ~/UY"N& 2ʢZ~5Rkb.>!Ļj*)HE!9s^- vey{')KergnC̭V+)܉kWXE5C;L.)5^zJ2ѵLD+s+ E5gNJ?\_;YuuWBru|淔EU2>_mu"*[fY.KTy!BycH>|џۿ+;nyzΏcY&.zzY.>|[6q;]WWy^4ޭ6[w-5s_{ ?gVՉee;"[e,[Y|-fg/U\dYyߴJ)\yؕ}lsqۗ7 ~}nVۥ-}#Y^Q!5񑱫mFeO1pUq'_jNsqG>v5_uWg_rj|Gc/<>v#{sˆ%|ZjdMkӶA~Q]SΣl =ںaŲuŶE_zͅ812MfN]&!Ck cqubǃl^ p-6Ŵ-h1m@i3ZLb ֚e=Lf!8/teCoc8 %ڇYEuV=6Ja H-h1m@i3^ʃWrZY Y76\7^(ς.FT˯k(s/(&۽(+cnGdVm[%^9~ezT&؜撃uzSlB3RލGrM%Jn}vﭏ#gFOdHzQcQxl_rDw3VW#3n^>[!N=3W{C|C |vC/ E9LtzuCc;t3£Sr_GF%j9eoota "$qwA/O}6%GX=Hl̐R~gˬgPnDw!r, Zд^U-6Uj׻]>'tuk0Dnf8"aG(̍x2P~_Aw&Uw|>:rdxYNۆ[cC3]9WsA7vٻ'XZܽx|ҵt::a/2'gil1Xar_? ,06W+5Rĩ5V~ꢩ,`o)6\BN͗#}t޾LoaoA$名x2qRXB|ttZ{R6SmFlME+Gm3+[-svCe$L*GY1C"]37ѱmBa? I{O_ف]?$"my>]%`.8ESkl o};h:A8EXϖ+z^v1TVWN!~K ?62]Rl~h4Aqh.{EI:1_z[(keB$̴~q/a]8X9QơGNeِDPaMyE[(}H8i4/xcwnhyUo|h8WqC/ !GF驒|@y> gzaPZ  8yGr:.vOfRku5a \yF##v "ȇ u3븃P"} }UTgpCnDXwJ0nU`6;_4llnM(CjfY56fx(M=ciŴ-h1m6Y_?0vמIOAT+dՕ#wկ>mM\T rz*6ZNbPi?FGAiqw!k31~M\G1F=ڇYjl 8!@Q", l6ôHMΙDT`g 0<'8ǀP"} }UTgpCnDX66MY f6Ŵd}U\{&=QR˯UWGUjiRr&t}GK+K枦{ꉭyensڝM`M)w!徒8){rZK>j1@Q",:fAlQn ce)NXO-smw䷏&6߅|L?żyJM; t%blv`t)ՏsNV'|Z~k~ڳލA9Ԯ-%Urψ 3ɛOK2ca5pl#{71F%=c5 ].sU)I:AV>p =Z)@p +e<({69u6 KҊN}~ool2u KQ5WFoKK7tx"+FZ^u|}s2õ-ɵ]ojrM#Nggbkw=nՁ}/j!䔿a۪j9hu I/9`H0p,/5<%'A^jg#gVI?+%ٍN ];'PGrty9O RkOSDK'Z1kkH.%U(е:S̏AOk_#9Ft-nL.bΩ A^cLkX4߇uo.u3P]a΂ _L]1Kz$08my(T2'|*XŦ>Ee[62\G=SkTe 02Ig12mgaEy:o6iEۼ5ٝK7:-&t"űۺ|`k{66qJ6qpjfuΪ1 0F4llnޫ HELf %79g~SQfZm*lsoҞc< B8aVQUcc@aFai43f6ZLb fcWPpdDJ-LV])9rWCKə-g,{5'扖A;EٲK+71*S&f7 @KVw,6N61Lk_#9F߼f͍Azn ce)ir-smww|ǵ5MlGok6ВՑb~lbPGrt[ݸ%?]Jc=ŜS08ְh)~]2ftyT;&|2v,|Fk䅎ʯ_PKt=cfJ[(pgS~sL%Qu:qtL~|KhֳPz6O3M,$V)M6.ST=:y8C t"űۺ|`k{66qJ6qpjfuΪ1 0F4llnޫ HELf %79g~SQfZm*li ̱H-h1m@i3ZLb f6Ŵ*&+-IENDB`PK |PKƉZEOEBPS/img/trbl_ent_serv_21.pngPNG  IHDR3D9 pHYsttfx IDATxyU&<+esX:N 4ilVhh40d;4˒lB&/ =tb-NXLO ikժ!m$'d+3]x+n9q' 2 $0\KҕC H R篚 DM0`' ` HR @'2Cʹ{7SYIIA Pe βB" d2#2eH pdDZϧE& J$isq)';CU9a RFYP$4~kD+ '9w&ֽq,)Yc`yDS2k>Hޭy aBREF"%4Q Y))EJmޞj0A*8썑f6kJ'$%DL4h|ʡYmU(+!@L-҄6dn&f|ސC~2R]& 2dd'c XMTCa5s @E10A^nVgihaV%30T$PML"'/c؄3&C& ;?YfP^NBɌ (\{Jj+aNfҺ?"ɮjf2g{'Z UIiW pRQɐݎ=K.bLYDH5VT-؛"QAW%&"3é52%J dq} ""3Aj=L, C{jJUR ɍ=2 ˜!H.]Poɘ_҅~TJ"r$+*L dK~z`LPʚ4鈬.rL|of réyP*fVUQQi^ 88Ѫ`DD `:+Cuh(dGETSE3v$I9&YJ7DfEgQKɱYJ2hU X.,fR.K(RY D ])fDЋZUM2m"{zr[) T%("9 f@ztY4$!w~Hv]fU 9Sd\+AQ <ŷGk )-߿Eb5.+jLGsd?;.W>y{(]~jpr }릟sfV%!t-.Iw^~ɠpiD\༢E KG ̕xUj)W͟CԒYo+_4K [4C Cf j4?S}#p7AJ^wbے' DZ9Lc}l+?e_7_ދ^kHZ")fpX2EM3 "%0Η0CIiLGjtV,^#&Rsw~fe+ǯ8+ҍ1"Lp*jW*= _W?\t"cK~2P%/L얯3o㭼/J Tu\7G>pzϽ< ?1<޽z$3F$"@*D\)šj30gV9L(![.\ʼnP4+Ȟ/Ԍ d˖0ņ`Qm:J2mϬw=2n˸O50Ae 9d,FUi^l^YV}ꇃL658Ō^@ EsD $e晅zG"`Z d')ڢ2 U1gM&a~ٟZ_}u^¡}!#m\2 B8Z2CϾkgzg?6-X쉙3mW>3Qvm~ŷk/Yy2вƃֿ'ϺrKV׽lI)bcl>_UQQt$̒)*2|3U0I2 EޝgY2T@B(P>Ŏ81+uPJ 4 joRc|_<,W3}5c%ZHxzRffXb+ذ+H)҄QY=AD$j `0V$iS5-rHBDH$Ln 8Y9SIЂd +5u]]|S8\ ,%mDMzTd .L =ńe;tekO%O ʾàr<K`rN<_go?Z208.zLs_ hD%AE F&:vqɏ:P*JSQ;K7ztxgcc%|oG_5gqXdbEsBv31ۡTؙ2d6dVG\b"! {gqFEqs>`ƄZgL $vKtgBteO?~{B!3x_i-Bb8 P=!iLbccI0j((5QhHSp$(-"<&Tt֚R留O .H7K)!Ff;[p6i2jAP[B(= m@+g%/o~BeDjLYcc&gj}~Ʌ ï= nHO3XGyO e=jd`*]cǦdffaȘqL0^K^+_zUBun} +drh ͖pZc^J*v z> ," ar"#&?*+)^KR4+A.v>)!1DLnPk3Tѯ3D2խ9m5!F R&i̿}ݛ>bRb/xm(XYGխbЩ6dI5`^+F|Rn3bsuaasa3BtCHD[خ0JG~{zF^MOXo^% / |;&S A}/w>owa߽0^U0.AY#H1b\_^*̀>>,`oșH;6x?j߼iR. DfEޝc@[{)df"f]͇J fDXPjXyR0"3:<3Ŏ8{)@j' S`'k-e"{سwy|[_:=N#!Qeqe.> W"pt1H1D&B鑙NH(,Ve2B*|yP3w,fCZ"KO'r omɂ5lY 3we7<F^gVsʋpEtQZRot!+sx|^ #GKc!]^u`gE N$ Fq+x_*#: `j&)<LGp|><:K DJau^ wLHH jsk%hC Y!I3DH DOEeRU@Vnpz#Cp"YWyw_>|E>93}ԂȖL-&~o*9":+bRF5v!$Xh~آCJRee&N I J 1{7Sry2kMzڌ5hAA@m#Kϟ_p邒8:_?x /=bn:.H5k1:l @_wYk{`gŮdXo\Fqz8.G٩lAFT2Ҭńڽ│! BAq(YO< 5=jLnFYM So4!Lˮ܇bC=g^yp5016$$Ң ӅAI=,})SH~LˬN8)3}vf|~_ְHSM~V-E{CLt|wC,EFSZ5W2af焕a:;Ɋ/|i 27D0c!${TdAy2V8ΚP"21,dй)r}_R[o}77FT;Ɗl˔? d jh22UK܋^ ESy2TN*I>PZQ0sj5HZy*a]&(BXhVQh߼%7T3(+tygEg 6+-PM W>s8,Pc<_2=CC]#l޾z.}:T)gkcnXO֌Ždi?0X7Ϟ4 ۄ!|p%y@iVtKEMЖ/Z F-غx,nՈ|7D#d/2яe>1钼8/:؁Y;TwL^ a|'^D !<U[EU>MqYk`Ձ4S>Y}ru+S%yP&5P3?Lk"ǓpEj uӲ`Λ=u}i\r Ȁq)f+ӥe*Y*0R2)ӸSEeԋ(`j@%]R yߡfYZ,YCU0R )6Jqo!+ΚPkz8({TdPc% lT@+ȣUc$●Ea0䐖J49M"Lv暋7t{y+ CeZœEdVx*XhH3B SAf5m %kxz23JɪdO(QYҫO[>ߎd+A2PВ*ᡤH1k(J&l}/~,gYz&{g n ฻?c}v ]10@&EX7%4xiTAMoLT(2T`Cvr /!,mEQGʸPq lRnOs &« F; ښ_ ͽ/LPb?7D}y[1c]?CRBbטq MHhCYH=)+Y5.QTYƉjKH2ycq4&ce}>cK:4YMK,T =F M#1)hMEоGMD5CF&YO88XI+{iUsKd"-̞@d SGmYIs4L^8fql̐A(rXD.|!Ċ;T"@pر Ũ.kVS>i $ȓ PSZOt4.IR naf(վSM `Ÿ*EӊPrV(3NY*QN]ik!{JJ="LC H9&,<`%$f.E5 lؙ9r wD`LE6L#:Zf c{@^3ҳa5]v: rc Ir. |w##ªNBWtiTsjZL/#%"+;ZdfH&CF'P*p* E/HHaȄ(R)}`%o XdLCIeH˱uZx'GAhFfa̬D h$-=aE@^v#i䋖ˉ<q9w:r,3Yb[,V{qsɮNAHUZ9]}ypw>hQq5l8J1.6~Z!%djdHaΙ4@C bV0P5^`gùpz. 0Ox /᣷E*`0L-1 R @@V̛qʡ4.y+ۀ%s|/WQ<]tr0tj5[5T`4sn8eɴǓ[yNFNYfkc|294usm ٿ 9>BP&۔C͠9?`$ifnJ 5z$Vh[kJ % h3XӇ:(r$&#ZܛH$cms-jfFDAI"lfA s>rD1(hǤ"i - >[}b|b0Mw2ilP * @ GBiye2<zo$9G'&-o|'q|є:gbOXIlk e1(Z >|ʈ]d?%N<]NRΚFw FWvlwӅR P;Q0p*vQO`-}'&%m@غgk8Nҷ}1eR:t ޚLFn3 L<,$̶O$iiֻOXظh. UL4ABf&|twHRn)FvF+Ɲ(vֿl!a}F@a1w+oYp xcJ|nZl񃖃M|{BMO4i m/5nJ=GWWW*Ȯ/inː$Bpȩ-x\柇7jUxĚ!p۱OByx_q)Lx ?^8{޶h I}FUVAa!ݴCSh@:ηGq =[m.N9$⽊f}&G)kEL&ֶQ44h8fߘ˷k?W Pj7x7Qf#]aSD 3jJRqJr B IDATEل#vjQVPD24msF歎' Y@s-D{Tit'8bݏL!wTVwesI6')=[i433޺iAОbN߲H][w޵eiͶ}-NCû̝Srhfu?wݳH;cz}~FLlK:~8%[ֺ-ܾ箭Lbtm?Bbz \R3n{x/l|@ֽ;=zo{40eǤKؑ/[V僟t{S ;rJg+8쵷5|4=[ʈ@})<'4sźq5o}hDy_g>Dҧz۶_0{ky>j;<?{,n`v0|x tҹs2ZZ=w+iL 2?|-;'0Trdw?F`) ]K08{^nY~]`7՟@ pZ:*!A7]wLt, U{m-wGdЮ={~qylC{7+f\e[!WKIRkZ0i4. E#m&L8P YN}?{rg=wӍA#bn̟]%eBʈ ϹWG֒N!847$}L|@Œ`wܶmn7#7VxH߽Em_=LfLhͥ8qmqhVHK"IAqzv__*zǔq`s`f\~IM{_~ѝW \-\u'oHENnycRq`hK eThrUxsf{9QʘyҢOZi?O#CשaM.F7vR+֭5{M]vI@nǛm7zϻ.;oW_yM~@n9@wa?ۯܹRE]3j:uKroXӽ+oP޷; LW_7dJz5;q{Td-߾[64? .Tb e^\ қ>mji;&92܌K4v{i`٥?5`HH/lۧVoGF;uyr5ؠ+WM}}YCSۮ^cC6T5P&D[hDҷux N}ڛ6l$e~KS;ცʺ˗oGw]/%E~}׬9E{) ؜}H;hT;IvJ =$d;9UaU"75WoZ2뮹wxrO[vJ aVPeϽּjUrēbnM~rXͼ~%K_|ݍ=dkXy򈌥(=7z2k׿tYŊstg|}Xb#Au/`bm dRvtssɿ޸{V 0uH 76L{ X "_ԑe~oO3 CWK)&k~|Iق?2L+,EK_^q \qw?쌛w Xo'zæu/I=-sd[GyB,`Q!Î}L ws`sƭ~mSt#\6))e73[VH:s! OܲV k߰?uPWt)晇0A׾hy ><-rb$':U&}Ycr۾PfDK[ 6zEjjt~`ªs_R5#C7]&2 ^kwie5x?z_;0,ٺMW;I(}H1gH&ȩ{7^w%VW}dH+tkR?ӄ 39Sf{ /ɗ/\Tr Ǫ,oaX I`$V\"Hc@n5" z* {I[BRbWIoK8{0dg{˫a(AJ"sVX 0tsH(2 ^`;ˊ]nJZif4Sg@1x+نrCӔU#S޵ym{x-tЬ~շ} 4]jj5lT#•˗iyD؅_Fb^kyGr`它sffQE6ByK e2 koPk䭌Z!kn}f胉h._Z'*Jz󗏨Qiy/] NН?qAkIyhVXw# ,][ݵn-{ ;}(LBfX8A8Yk9'h=r0R]gHeZ61= ߰8[nָJxs]GgIyDeu6Ə[d<n ФW̓ /t=4J>􅛯}ѲE@`5^#ݧD*\d @X5}W٥ӇD/gI|?]{HH$fDk*WٗIqg䈸BDFe8+cm,ĈG mǕ'DVYu}+)3S`uygM:]ȚYZB?A2v7g4!NE*0rIeQr Ia ͦf;(Xo#j`RC,{Ft'z DV`ax> !+<]`54>Hgrɢ|f~΢"o9+qsWNk@fT( n".A #_=۸U,Vخ6\xG xxbZŊߗ0PAvgu{Zj nvd(6-ؚe2ƭ'Y%S!Rwv V[63aBb$ ñԧ0;>?=-JN+w,u^IF\Ue V3zܔ`\-'NSv~<ޡ}`>1ď2fpv& +zv @¶mGj !;|mG6SO>;(< i;z̎O.LqR뵐ʂ/Qv ^{専 Q 'odV)uv̗eYD/z ]jLmNHU2o\l3nZU?j}m'i5T QD.(Q p׳u\".dS ؉aD'67SsZ DP;_R TgeNHHolЏƽp,{r)'sXUs'qV7T$";H7JXa1T.> \ptSf*x 5FD#l*tve)z+]0` h2]] dS`$eA!;=R# VM۾?Ud))".$Z-g\lDY=vGA7Z!) 0p-z$Dҽ^$/,`k y%@esKYnQk>)BtpT`|^Dp9]b sd|*!QRB ~Ium5KoFFg %?ɔ`d)^J'oN,.% I%Ć1 z%O IDATʬA&WviB4n/.ѹ dr]`flePrq u*!x kS;֑H{h+\#S&9if 4A#=HR_sNwYd+;" Y5hC=*%X-<y)[Sh5G8˂$xG0V=C^r8M\mI/S ߢ]Ft0*V2Ve;XN8( fpB2CeKM0 ״$:Oх77!)l⳼0l>T^Xw4e ҮֈDʗF$oTdjZeIF,RaEZ,u*r˙cfɝV|ZDӈ|6I߆ZnyD+ UOoOW#[:fl&V|W*.(#iB*Ztr5(;(sqbfJ`ޛHƞ& 8/~%[)\au4Kվ 4j,TIJjgdȽ\q31 !פg^k!s'YY"['ȠpHc ɥ,,qbVXg\, 'F9vV㽸@i)Xjd\2wb.&GT-:-2jΒ2ցÅIUD#N, Pkqjƌ=iM)3wt Ԟڟ u9+\Q;cv|^ƪh?_{Y g- Ձ#F~]5GD]xdTxS2?d0[fZ*#{FasIcbZ'Yu70dɌd{ÀI#-Ugg#ߜmڂu07G ~NRjOOuKP:jb/jO_;Kv6،t]"#J`).W]o t;YkkٗM&:3~xI:z>kif~|QAeڱB&oiԆ*T z`5EҧqtlbБ5D±^W^Y F%DY܋pfbvLw_^D DZ2!o꿿OOM@ԪHkqlFruܳ\Ϟx{߱YJ #YY-6،g)_ڕνH%G>E0cY0%Q`Y*{@rtXSWXK7zw%$啗YAzj %GLP5>`_zVɖ<0{+&Ϲxty8:>}`7>Gb\r_gǁ{~U7WDŽ{{9ǽV_Bc#g̯74?Мٟ:~ڱgJw t uQ\zxǎ{ B':uE҄:ɣZ~?e^-qT\ av[&^YG拳c;ޒ˷g.lUlM"㣖%,{ |CJ}bϟ|޷sg юSH0&7,Ll} kgw7kU־Os}?ӱ@?=g~rT5t #quBK0uZ+&/ AXM n'FSj%E fLɐ脖If9Ŵn1>ۆ0v7u&)fz;?;=d@=Q~"3PoRArr̐ )*shgl<Ӆs =#k%h{Fjɹ??k7>4|S-:Za=:~s$>koܾ 2dF&2kN? `ʔ)+,6M@JRD%2H:+$U!ՇFB3 :\x,wѻuΉ n2?bv3o36sKLg3>kC$̉o96cg;q @p}/KgxwDlsrG@EKDEŮLѵ}NWZL7h~=$uI^J<0.}}C7Az pmMտ hz -M>_|WeI/`>PV B! NZe7oĜi3{n߲(i>=DKGj7N'ZRDAR:΍TŻC;6l7s>w]L_]2z/MFl <7[; CßXIB;ЎA1Uݏ$w?ώ%U &B}{l@bŪ5:$X7||3b >q}?/zx>V 0O \  Ox g0ݽS&ԔHcJ,-ܫzrY@<_L@i p8TDNĀ8S&^Փ#?>cяq?}3Oևz㖬7-\pTɃ7~!MQfooK2n쬆v,NoG\e\3nHII`[d!Tdؽ)HV4{s?͌ナ1|E@)齛HO%jvuj<;j);F3՞Hv.nypQlnߙshqF6fו^&[3S9xvC{sL@_}O3JlkF"1'ڮ-hd$m{hoMccJu!cEvZc}@DnǷ+rמ?ǽOsb?#pzco۽cqz?6n5ozxQ:yfgaXz_ θ\±ݛqW۳Kq_NSV>;oWΡ-=Yz~`z9vm}00j?5[ @茰}z?7b(G߽!\`û=z`ä*l;ml?v'cA Hcvcqrʞ%׻AkVlʠD]_Gޏ~pxUߑ )XO%,}ii#g\,@`wOerZȌ=8HcGO],+Htv"ܾY>ϣ30r*k\j7ݭ&:Ӟ}۶i}{bpua hjeiUB0H5;ڈp2EK96UN e=vx/^>˥]h@$16#wɽv僷]o"'$dr{xc h־cSm/oC[YII'@g-B@شԙ&?sb ,|GR˩#%n>p%`.QL:3,gߝa03KYY3l\c 56R):rP\rjR 9Ng2ub߮'w3*?m"k 4C}9;3,rwC-]f.= wxs#vȥ[׏Kz8ABUim!䧏PAI7npp/T{ݱaHQpiwƷ;e%fwsieTرƦ];6Z] ;W~!~f.iWb) /!t5ĢL ]ԾΩ@b"lnfܳu rG 7J};O>m Snɾm&sK!%귖Xrqhk",~*Sm !}23FReƔ*h"2eGڇ =#Nf?r~Ca&:nG/u%1WrO~ςFnߠ,1~+  >pc/ o^o^qh opC?0?1Bnb09N?^msr#,yMǵp|K9| a+'8R&@ɐO~r!9@Ŏ XyKwlB`zr Ӊ#YRbZZ>>2ZŅʒ1i|Mg/*}asIU_r7? nn?>@I0JA8oY-a sǫ:+Ṿl}~mW鮠#c#E(e_=f$Qܚ'w޸3϶AKb~ . J2H&?hoW΁eCU=LlWpY#t%T8X}#(KNrC/%x\˕ιkS@8sC;Rqލ9.Cfԝ% ]2 M*(dscƉڷ޾ן>_J&`I&}xyL"ݩ*Z""ఌ\h9GC0yV9.,`h}gvj ͬZ0 &N߻夐n(L&[7;̴3LgU5no{Kr L^ʱm7!#:9϶dM;qӟ杷SUfkb: \i%b`+K]%v^W +;ů-7Ua2xA1^;Տzx*.vo 8I0}7+IӣG6<}RL-mt0:yxwU˕k׹G +̮jۇsfQ)EtjjJ~ ':̯4=#W~#MuHlzد|rAK?0l $! k`gݑ{S{ukF9~r1;4t!6G-;>H=ۻ~[h^@OO0|C/G<R#OOO_gy!SH01.@ce!Ygd:ṩ?ޝ[,wҗNڈ'$ ")%3lzω>eI ?u6hOMvK dpZg~MC'" RExvN-coߤG٩jl}`m[nf#G߾8rrSr#pg~Կy;ڗ4xש߱,vy䇶ď =0Zgv)H#T Q=SK@zd쇇v<1O#N3ds>s$ƷM|BQ8Z~;`s^! ]o_"6_U5qj_ullIƥׯFCB\ZʠS̋` H:sZ<8lBVF~mkzdqz+'FciTYśwpf`o}YZ7KTϖU`fA];!6ckޛ>6h "v%X(SWAiYfs[Ň5D$**k1or{Hn;g6l[oGlr^EC++0W߶i@ccU"o8sh رM {oپȶ~l獭w~ 5W;f7tvs0fj.8$ahG''ɡ6`TJ*|\9TRe?u`0GbbETˀ$uff HA e~ϣdbN|ZwN&Zb߶΍k{1jˈx}y2j^5\ia-t,̹O UU/{.*WqSo,Y_j@Ǒ?s§؎lnX0ɑqxdc=lq|'1R0]WY<~胷aJpDj 0C2FukZkW4XQ.$K3~sa慇d/0+9|ٛ7K?ϡ8% &3(-!b:(3,K"F3>,?yozXhyAȉFMٕ]#Ua a+z _™?\EI9|bX )`r_~sgoDCb_eP3H}]D 8,xne pj_ߗfUbexkyB, @.`7FM|ݾuk܆5PB#jFd]ByY궍Vc.mwT 3C7jdS2E^o[>=X:9{}Ǫ Bk.;*䙯޼f(<2J2e|%fq0s#WQ*lB$VuC~ңILG#D!QD .w9|WQg!UD=B*gc*љ 5R`qhUEPeU<,~97UgG +lŢtP FAuK9 *B%:Q,$3=$5T)w`0RtXDX" 0jGodaI/ :D IDATkn2\8%YĀ/H16o┐ */j^v],Zܖ e+lӕNB*Uh'SRGPװ=g)iDZ֨SqfDvTs֍qY+AŭmYuY# XH$ &_hla$P|VztU(ԉR o\^ Du)eq'(E#̬^]*WxB@aĊjv"nLFghP/q&e09 ^Dp,F])VЬ[o60 EG% AYC ]H,9;LRJ^brH?,,]U)`IOY`)߄5"eR-~"(l^JkE x`5+5XldhٗȆjZ\gBa\@S]7EW -.^:O,"r(#^P#؋Q!fFPEI,逢Q\V䀑pw3 d11f [ZurM>:ǃS\fP/hٍ,(z n5(+{գ 482++Cl Co2XvhYTR0,u8ѫ"f 4AY&wNV {E,'T@k\RHRn<9v\w1_z%%Q 2Mok׬+\SZe{w4 UJ-;@ (e_B'dQC'y ;K%r rVJX[˫%s[nZ,_wJmfMPU@dw 2C&aVN%PҜb-h]3ljϵ7u˻/F aD8s߲ ٔzCD`EG$RpoIͦUmz䝥(PtV4Te P,ӫ-R]S_i?̖o ]+Ϗ:GT-ӭ4BteHԅ_.L$^>ɑM-2X[KBk%&;Me@Nj3< pt4;7C30V$5dSlˆʆYN$ZP?ds(jdި *KX edU`bG@^ &,/Ut^.Ok?y?_D3h/@dSAdc_Ȩ/ ~55 o5_Fr}%ޛFu]Wb{+QUS[kIS{@ʲ<$-Hv,k%ՖhMIEje-R@Ze",'&Q߻gǹ+b\e.޻sϰyCobnHZoYߐXQѥ|×8t2 @pIp/gkOӋjj1YLZ9>>{-\خ~ir ݀֠]7tZqlD$ŒhA\ CжnqVՐ%q],27RS|r+mxl_}M.C|1wP)e \@:MNsPDRxin7e4"]^f5e@@ŵ1> LX8iS!Jz+Qr)3m`#Ve3Ňc< /~*qJBͅ˟ /\N':> $"%"1j332dhJ2B@R\nNW[hnR&SJѡ#DKfUd!T]vn&e,y;kr;D 7 (ڶSi)צTv<`)S[u )͏[vRכ+hsX8_ Mm~,Ƶ95:'j=J96qe*buUhc#.F~g{ >ĉbܜkm\K^.E5r*8.ppWJ6eL'+1rr nf~?9[f*kE"(vZ-iq^qt%πU ,H @#v*A-Oh.S[MUzPRDgtD 7.zU;J-+h9He;`szv.) $$@wO)eύsj5e2Cv+(<(j+TvaREfSzOӔ."* O3hyubOɎv\gEKʀ艖YZ;]ԅr%nqI~FR ~`4+|Csuwjۛ H xdo/5UEH5ᕵꑲksMBp٬5J&=QvLъ42΍q#oIYfyvA0/eksciR:bǙHrjx R[42¸~A?^kz|t?}H&^Jlrnv22c$ 5?NϭlC CXbˬ] uo {%>;Drt~ƥ鞡><ȇb_}&*|Y* ƘHfǫ:3Xo`i{)ÑrަFS+qAa[uW/8ΎVi[jjVgbbJ0`Gd=8&X;nsFezs#J4dD ty7?q}eRK"I%OV$IVמ^ U^JiCEǞ2Hf8GG!eh}ރ~ 8937TY4xgνs:"iK[%\X9nggFDqZ`2Q#-$ot;n:#pꅱ$0̦dH8i󫑊tX{>[2W"4Y+hM,sjnVjzW~И̺ VFuέ> 6`irQ~wӳ)ȏ<.QcXbb=*( ovF7,>Ήˑ\Ǘ㜞Q32H3N}0qjŊý>`h]̺MO9Ė/eU@^{*1VF`_ٕuq,q+r/ 1 -O\TynDn%9a*K kHz()kvO-QdUlzPz^9{b+8v~T : 0VC>&~l F/ b±]_]\qʘ<9ptbQ.3vZ;aY{{@-O|Uem1bYY [2:{ .{{=#>仧AWB n֮+ Ymv>ږ|k̡O}+`+S;?{`-_ze%XNLDBRqg&?= WV%##xٞW6ܥvYn3=T/=3>; Q򏸷aoSw4ҦWHG6(;fsEݗ>k6y?Ǖ*ѣғy:K3F}Kre- I.GsyXRcS+VCy_M%X`?|̑A~ W/>䎹W:/u"dǯƥ#}u|Z:|Uػԗ'ј8R3#]jK4iXv?p^,NבDVIq}ajxekO[ky-]\QL-rǯv_<iphz/z"``\35<<鹗•<4&'Q) _ݳ}NWDdKI'~&j+Z !T,-=Œރj;`]t_o=Nv>oWn3GzЕGmO* -Zjktv Nbx֎YZ,;lqzA!D )^YX#K{/.H}{lڇYUGe\"?t qύJMB5PGv.R*sSQ.Dr]~jaÓ 8Jl޻wB=-轻{(P?snl/BHwu`VtT(/}ȱw+S3}i~`~nv屙k2D`}>4H0kJ6oW9GF4rpW`G  td{i'G 5 &B;gD7ܳD1NK!gf,Aߥ>{vj' IbG޳@x1}wo9 ql@gfƏ/=IJß_vm;PXUnFB*Z&s?x\Ym]vBwz2tǒ}ckYd1{<hJcwDߞ|\%g j+lX`*+xno };{BWWlm`57z:HuFl',E|] bFN?C};wD*8<h wSS \lQ]Q رc+s}~-Kf6xX^)i$+z੘z M-9"CgپN&)'-@'vHtŴkgwY˒I݁f .c&ڷ#uH=2*URWԶ2}{8*uч NV21`}`-: 8[4K2{&r^;wlxj~@貰NيJ覨$,ٿ"UtxR lw~ /^0;w`sV3SQ;w9i#Ec6Fd,ЮQÄäү ҃n+epfVU$GL}/{mcF{f\'VBip3R6l2ԅљU{gwס>ڊŶ@]$vde' d؇d:K9>t*tKbzgH 66@;*/L`auF\KYh/_~:Www|ob]fm;{8g%Y?=>85jⵙ^xJd{W/?I6(o BɒPGC?jIW SI]W =@ؽs>6/|@wj`!Y QA:mѫdHY_\|su;?~NXG0xg Zu] ~pz\q\*3[^ir.?pį%~irC$GdT!W'zUpGhFOSyf5I\X\nuv@*R0CWf7%{ wY/΁`N?sj~yc|׿:wYVYȨ+?unѹ93L>i 5)_.p&0MӍ3݃w, y鏎j{s*x)պlIgiGKYCZ{m36/ |0~{`s'Gg*>D4gÁ|щY`y'lxѳ\3[p '}eH{ɉw\?ΩL|7AV^Sy+@@gZ޻dWoYSA%h/XH̩pi=|pnF^-GM 9d̉}:yUp] ^.7x߾SPW/?dG@@U *E ,y֣}q~u+Q-A&#X&5I 0 ?4u 8?zpC.bʃC'7]W+Wjd^<^N481(+4'ʺjV,{4ѱeFF0"C\Ho LJ~'nO?>#۝[^)fֻѹgif;xn88;i‰{[=xNrp V鐱 $O!oء{zXLV+ %*ofPT'|+-U0m=?GyW1Mc3}V17]zj/B̲I_w.~c VV˻w U`bʷƄ:?} ˔A5,&t1I肁 3rтvdHLvOk{ )pIJdhe6ȺN'd>=  ?~ۍL-{OD7Vv } x˲p3,;'PE}݉UFޗN\xᵡv[n,<]So Z  މTY? ]U4/b)V"߻9kS+1ռuՠBwW%:[`CpSe@O^Ekq`xޮ.f!Y41)1)-L)UbWN}C0څGOˊ)mG ꁙdJ]~z+VPΔG^;w-~y?kמ:<@SއJLS' dN@v[XfVV7c#@\C#7V-̇O}}[ԓf{{w 2\@DVQ0d`M}hэ>{*u۾#3`??7><.4ŹGlƵgF vP2h}l8ǨWLET-<ߛ^羞 Q/N_n1xcJ- 7HDE JPŻzxtj }OZ.-}ݽE2mD*ȃÐ[OY' $/= v%xKYZ;P5"k5|WO xёrC 5B@(j@cQ'Y%mMxq{޾t)4,50ijYx-W~V?٭BU/]"͍<~ t^s\ 2.)(lKVn:oᄅb3y ͨB$<3 IykdB53OvɬjLGyyGE0B_e(&rҽ.I0/FWQC-7+<ߚLݠcD`leq XHe] 9o om3/Gnd&=U"[ULزiR>팽oNZxܴ? &a/L[\'Fs$mDj$aVF!:*v&* :W  hG%șp7LswmQ/I4rδ({JܲYVݰa%Rt A兀@n*+0?LU5KǬy-yx$dQdXb+9f3,J`lWSCW/(I"Q-4v<Ȣdx<p .C%.%0?@9JSJRq06pUMP0;fY(wR6SE: TK2g/qH"Ti)fKEw Yu" srp$Is)][5ȉ$VxB9TYl23IR@DQѦ0 b n:ouo= ɣQE6@թ`3*JmUfDvI*C! J{FC[GXp G3aRPbۄ 6BRԪY!#3Gt #IH qt&nQģ-mi,3fK]WFBhh`vUVTS"kL hnA&ݩd0Y.ϚED`jXq!5(V'd0(oNaw\H*Ī@ ,D MwX)+An1-9.R58 IG"kY™jn`̕'9`[x!d1t*Y&S(; XKPԄE[jlfI ?*L775q U j*hp$bTR9ԅdeZZ vQcR9L*^ug1N qTr;LMIF[ iUざ@j3-p#y))#B%!vHe5PnzLE46PY :1e1FXK*#;ŝqP $Bt3QEgJ2L$8V+fe Oau;".Tx2 bj0 UE&ZVUUh;"{#h-,"VcUE`=FRb eU$73eeGˈ:D=5XÛ(a0B#?*j+ L#]ĐFcmX0 @#KT\PYsC^ Ȕ`CYâ:%ijbho 8 B`#i&xBD+\[1T%s.Src ( R.PYY0 >vk2Zq4Jԍ)Ͳ>图0&d]ޮX M]o-u򮌶<2!#7~%L^KJX'!lKld]l9"$dP :s]9<إ=MRs+|U%\TquInF:ڀ^vKz&ymgSa5`n^BUU!OLd6,+GֵU0%Fo;YE5]֐yj7W]e :ݠ `Sne̐-Y2 { -:LP6v=6)$ak%nh jC]HrE1{H2GŪfLRFNFMkR$6\eʔÒPrmUKNHHuF+`Pj̜:JAWdN% Hh' LT I$&s$R:b" w^[YْSF&wr7rKϕhMac jo),W:T%rs$6x#DJB[urqذDJZev٢2:}$kTREub# juȀ'a"Z{F2w%bjDY͓IS* yce72ÜZT02ߨkA4̳j^V2`@.ef )h,,Z<骬jC-s;j=7Y49! LUr32e*:[L}gR*力\$ABU)mJ r*V5jo'^Y6U៱2Zf{A`uJ$dYq!4bC) -۪p?]{U4H `x &)c{/5~_%("8VKJM8oyPdrqI,T2̦X;$:Ѣ"N0I 4ﮚV23 Œ!w v3XErؽn5B)EN58 Qʓ|+h&8hoW%ϯNBd?~wug8% E~lŮ{IƷ:$DcJA5Q6 ؑ3 BmP !aj(NvXGgFiq FƢ5o4&9*U!݋#)@-tPQ!Mt7R5vD rٲ5N$Ei{UqbIăgLMb"@ʎD?@j*dے,%z2 T231gk~|4)`EP.I{;{[[ !=:Yc=^ \@X}v+m\f'"HzYz 5Fֳ:[ԕd.Ա*ZBiR.tba{֭K%Ѻa ;z@M*#Z#Py9a9-pc0pIŕHJWfXؠ^1 *%IPJapN$8 , DY. 2^D{|TJhj%wVtiHɥ(*m2V)DMNDh^UgΏ-Btq2&;@m,0ԝ-ʨ : *$84ԑhrbSסׇMJ%XLڃK@)QkWΩ9Fh,Π0OϏdũWy@gvܦWBBګGQ%F;!_:9m@2I,i4YZܤ?3J$GNvL+f!Tjo\rի]$VӢQ#ྡӒg_z-wϯ_00@ g-Nz%+3{-MydK2QQBP컟Ipgxbpz矞R}+婁};O-Җ y]&۝\dr>8\.7*!A܈U:>'J$[̑I{o>-יCLQ1b!ّAB#0a+Nvr}Ѡ˕-lR}xD*K̢ 9SoJJfL&No}hԺNl;UW>3uS+iez`=Lt;Xzv:'ڂ鱩 -嬥黆gQ^@\!ZQ=`LρxB+~zaUj!(sC#U%˖ڲwG[Y:}mm/]Z}:s@ `yrԤLH&dFy{}pxB^GSt,rq&#-&7TɪCl_yUQℓkGi*{)c+QJ!gwXtړo^5{qjpώE) FǂY(BҰYFo0Cgn?4={Dzg21{IL[䥞k{6~]$/ͻīFY`ãSK'C ~U  hɟ#:9~+ڟkl] cvŵ"- jEe3>6vXA@uTGo0g9Z[IEXD᢬!(^QrUjCV8z P37F޲255xQZ:GCO.t{F$s/,B~^K.„qcSion3M 6tCdz5XG 76?;w09stn$&sHR^"/\)~^όJ'2}m~9;{c@Fw*;gG}iNw/`g?ܻ@ ؝_^Kv߹;NRy0*LϨ#@ApgMLEħ%#ZXK1!A߽Җ/5zP?=ǢC֝C <¹/q >쥗^PpՖpRr,DK!C Ó'0!{T6J^] Jx /Cxā/ҟ{vqЎlZ;b́`6z]9㬜 ݍM0n>7y|UEKk3w@vFUs~{évR+B>v.;*ܜ2q[=kOP`_7H6:|t`.~^ pf&?t}m!,}vQN謶mIYgDGVlf_jCtrhoFL5뜚0csfȸU**塝vBGh?ďZSmh*}kiQ!hxq ۷o嵵-:c650D4 ŢO}׏f"Oј҉9yַm1n2 ÑcdJ5i@w#k*teydDͷ^)~T 6z"U^4HZ7 8:xӖp]'rǶAۆr)څe:(To~0Jc g; '.\yvjm\w dU+Բ tjܦf֚̌l~~qssFoز(43ca@ l:w~RtuF]pבz ybyt_'('#M# Xq T`bgaA}saW{3IYB@7ND2U>H{;ZG͡Z7+MTas-ʕ Kz`GQhtn"@?=lG8ς$jςLlZG#ܡ\L}~H}ggHrV6־qhbdF'}klЍoC;;\gVf>.v:}7,iđ;aH|po9t@1y坡_Qsspdz= D2)KPXd#.9;NT~O l]4qχ/<<JZ}{'{奛voi;0pPϷ;kF'ounػeML ܽ]g6"?h0;o'hEw^S/w$ c甇J,B&K`2g ޙynnMR~jXV]YjnwtV?|ޜK;N.z/>ZEe0DLkW?`չÜYt s |phd BmK/d(/YJvd"񹮐{|͒4u`dQdayz˾zvL/AJ2Y.>==85)lJsXja^9QT:u^<~hdjul]qȑ/@U#g2ϓ!F:>չDZҭm~ppK TH%p;nƁ?]L½Xڈ\ ;7oYW\Wp! pk?] eA&{әoTW+4 [@#zr\nhYY :;=tĺs&ӹ?xx=I6׺o /.=y`dt~=lȕijGhy=䋠t.*Ps/?A@o8wceuhf@f\ʼytd@ܴ@!4TE "VFFeSv _\RP~Laú l宱=; svb +k}H8{8eK_= G} =?1zد|i+5  U ?O*~:e o&&Z{Sfp}^d=~?b-cm>06~"-m{TNX•ZM-Ycebe/.OHvMձPgOJEWpG & y90x0s[Gn OD$%V#VزmQRL$0=[ڲ$XddM (&&ņWZ TPvW-Xп>kV/9<[KgX{⣣za!}{Fږ=m(a*,ZXFX^xSH+%Qʈԭ : jsem@YdHZ'I7iULV[u LXۼE$wݛ{ıyZ\N*PsiCtAW~aKFطAٯ5$سY EKyq׶j]56HJ_кQÁv܅5AƵ ڏmpغk gY#dH_ĝp,=nc1Db#XKkރB~O&6voϳKo_Oun.+{ݓޑ Z˽9rND硧gBgAv)YBW;Q범 ghц .A{qѷo@0φ^HYK;` Idѹe?Ė߾&\7 2s\G#[g 0{Qsa#?lS:+;66rR8zUF55{ ;ó)bѾ{iv0pÐVx:CkeܲCj_X@O>7nzw`|s֋n]zنsا׼s?q9t7̿uyv_ e_[lEgU([&|6ZVĹof8W42_=;۸X-=>nǕ9^e8@{j_UlY vy}:݋޸9 KNUGg]R~H_o=y]΢,:}Ĭ}`18_s>!euex0w \\1>7?ˁFZ"wΟ }OnWnz^;8pbFGu[w݅-{=6PbǶd!0w*Er"j=Xb;W 50o?s_W圯JCrh$ FyivWbMB0"gumcbnhHh(geK;zͷcW[%;7}PڏHRtOFӃ+A7C7lN>ډs3?uᔝ~[\hURJB K`#YH*q) Q?=`sBPDkd8Oݓ'{ÖF_:i=^OQm~P^~!d9S6?zAY\5%$U}߀>ac?EZr+o!v= E3Wz=\o?o:Wێ[Ђ4ul' ,}Gy;­oo.XNi mC>zߧR7Ozβ7N[xgu IDAT楇 ( ~i̟  N*>%"݈ͷy7mۜU˒nəodVýOy0%j+="hVª4mfYNkO;ntIDtOMշ-4h8u_\p4tÖH?Z)C\A}jqmjq&E{U'"d5 hO_ >v'G`~˛[Y𡟙O,䛇a&ˀx㓯4ymtFW>7*gՓo@oMd"7NeKsGR;)dg>?4]L¥ ?{t'__Īh.0wy̓gίgw/>s̅\<;+oZ?K|X_^qT/{LT4Lg]lΕFO=y|A^ fZfQ-o#&riy cskquw6;Ÿxp"~cskqIayT']5ڝ;f jgvrQjuun /5/||unN,I:śyI4=&'IyeBg٧jr!1d[Rȥa?ڵ.] /'0}FN`f1duay{X,33Q<1 jO,5W:7dQS[Wzkٛ˫/4G< ikA}z28,5xi9ӋSYG_l_m?/Nh /%6l?%I^X;ϸ:x`1xm~ )͏ibv5;cj]Z}Hg|:Q`B 4jbqwaUTGI='gx@ rJ|Qۋ N[?qlwf2w9Y6}h"0JYde^1oԼ0_\wf,?d @ѹG[z^2!K1WGӆF-P9" 9{id*х%dd1l D !#P @|<;7MxP~yU%$~;weoJ, B/0<]ʊj)Itr!7-fi >O s05R^ ?x<;"e",O`FIP,<k :6 Û9l8L ;S*͏mPnPMmDK$q@UݫumС^a]3+O޲㆐=[: | TcRK^HPCgz,GzvC< Pz$C(o0{g6$XE!P:e>y'^5!HDET_Dcnf?[. YK8x@gh֋\zDŽo-aTW`E4q\bp)l=0:JwEei>҇(PXGÙRWAR.[)%ǂfWV_Ej> `oDF:JҺ=B*ApzzXz2WuSo6k)Xo!'zfB/ɔ\A5_Q (OAu>j׎R[rbKeBaMax"3&:qq˵ոB*(1/Gu(20Z%)^L:C)n,y#Tz!r@mΪP=κ_ u#I+"NBO`T:& S+f"SqfT"{aEH5c o^l8]rkq=+ 3e^L3WcM8( Ap[/yVCp!HAuY7T#REYc=2<+yg˝EG/~ ipK% +jYhl`B׶Zъw^`TeXNA=xL+)Lw7PF ̉FbE.gU1EHkN{ - sgRyQ"Ȅrа :BlR Mh` 54g.Q H {e4/`Hj  nЧ:ق pO5CT 9@}! +v9VEt.U^D l 2R0o^58!|o248(T*m d t8-2L$Z*G,aJ~vh71g,EI(u"CT˼P12Cu6d01-)\) Mp  NXgdrYa袃BdȻj)EYS=c&}hX2]XUwbN\=-2md&ްI* NH\^rAkC®#FŘh602nȍLxDdzC,b^Aɏ>?}/}]ӧ^+ 6y G"Z0<تYuda5xꆥF XJ+| ,|?'Ί"jh5sTGwn-,YdV:*uNSJ#<]Q2),/]t%Ljh+p)ڛc+=Rɥ@wP/=4"(ΖA< dӂTM#:ce-Z I"sԑ>VMExbe7"rZ ka,!٢ʹΔI.d; RŻ Σ!aԸM 9m%:*^tz/6 C%0X3rOX-rf:  „5LRMnƱR@^ 3f$'fg\s5XqFGLgEIOjχd$3oZ}mg`r<L?\ -W$Yee"}#Q@FYKӃ{L쿺ZHA E_)'{&HoOmmLYj;Zg ,$ܪg=u{l' F"׼%ѸȳS[El,O ^ʒzG.()s^cL/ F a'Y`r7ϡ%o= ia.庴6R`QD$ f0Cў)P$EF宔~ " -JF+&h>$ĕ/{ =7z;B"݀gJ Zf|`Ͻ "SK|)|kMʑA4;G(JLq\pe6$)ӌ0(?A ,]/)/{etGVfA 4Pj"Ebh»G0rk c?86#Y//51> gx=_Ya!j6v+_90:wϞv̏`i遝pW0!U{M.nRR^ +Ӈie_w\>{R\Y)ڌZ,E&n(9}YލsT}ADCV>) "N8z|=(DirI4PF I0Z>)w7tQ(QZM:AS iV NɂcVx]M@pTڌ`97(hIg@PIE$`KQd@d J4t6o<#4"8?pz*7m҉بI(mxyjrBPŁw ;`mca2~\noLY^3^//ය0{|7 ޶vζnp%r#(e ko.`%̞X_}!z~n:8Xϐ :oy؁hq[7+C> fHƘhL։88il1ݳ5ٙ-WwnC6RL]u{nxF^Ew(Or)#; 0}|`nn̬/M3΅i |5;ؓ]_ӎ t<]X2o~uY=dX~CxdUũ%pooh/:i7A,o;zK+qLl }@ 'q?\X!EKѢWE)UƱ){a@ҩQ&Kfvd~V:C%ԐN3,1MvKFnvh, ;;_ON1nbbe*@;7sAv^uZ|AkR&n|XrHqHy '*#W=;FiSК\SKI"ڧƌ$+>p2åǘhllÒlF_9ڳcADDɖ]#E eh$SÎ-8v拳aW2@#y\Pm/,/\x-27os!XǓ[_FPR9flD! BmwaX Z*2@pFYSfو$ Ygٻ>0L t;8VђM.8ʇ)qËNYo[|xZS.K~m`{'Z9?zfG[ٗufؼgqz Ȏ~.ܳgrvI8Voڰd=z=wܸ (*R[GfHb2uC|APNJ@@^|!L'V-g9X@ɍ{&[s]?%# %GgՓ;wn4# [pGoO',{D\ۑ<_?y y"rtj^\72{Ϡ 04K>b+[L'j]5=1{'G11ݠ g'>sm~v{Nͯr={@s([;򼼰qPQolJxkdg?D{d碜ܞ;ٻ7Ν9g[N."{%W[ǹwt[}ξ,#p33:|vvQA? U I?O{ﵧu$&[ .M?}\>?gMKӿsYW޿]UF7n=rw2/>8zKW*h[ζg6lY;ОL-wxnb Mɵ<έAkO rKs!3?̊ ԰ԍwg/ &_񾍒R$ o^B23K1H:odMQ˯x[/-3sWE~,U2 qD w}l!^9,CDc2؄,C9 oٱaQ[>|{lf-Z:{bL;qt􎶲;gѣLQ̬+-\XA Rwܟy{MLehܣ[,~c[P䔽|7ceKJVU7"8dZFg=['v.q}, EGЕtx e774v%ZR s בn݃- 츖-H??u}CuP#!o-~; Dfk;'C%3Qf8:OXc;{w`:gN>mV)}CoI ~`}kd./H|'F|ܭ"XCl}u= Æ̌\g`#y dc*QC>;su_5̜jڸKAONω3;=clPѩwΎ2Qm@dOw5]lOtf_7q,$C^RN7%kɌ\ШVٮd/<ľ0|9}wowc}3}nN`a?:_=c?==x |m~rĔQԢ/dyýͥũ$}p޽!I:ē|x%V(w _L ]ypsG(퓅?V74$mDxWD^'!uߴ7-q <{]YDouѵ.D}5.à:nXܳUSE@kj߻e ,f\=w6s疀`b ]g{sQ)aJkv]u~؍hIj(wN?1޵2va66tdl4mݣU ܵ&11UvQ$ jqێBɖ_+goT.o.ܓ~:qnb4v8%tvfh6h-o׃@&U˖7v2nױbGPXhgUGO]5ۏ,uɌ/zq;d9$\-WF+;* orC0P8XwV-#[\\+BDmk|c?y##GSٻzXYcK_&i3.+Whms[k?APef$S<㕧+kאI* 諳%]Fpt3ڹ`z^WV9P3=`lB~_V VxN3v?h]0Z;hiۆޱas=7=ؿiɪAmn|^k0)i02t u`j ӃQEyk-=dm􄱙vu]Z* b`9]u)W^FL8p+ z^uի6+0$ (˒uABiP6$R| 8w yנ1~;@D66?0xPxCV;ۧ\%[_<r4;԰Tq<\U@r& ` KwM^P =]l|Vyg?` @DyRyKr1v}r4+Uy횼LO`J`'PR,]lFO$)]0=,M K_97M}4-Gy`>4kra X9Կm3~vآ_\WUtHr'JS#Ckn93=o@pT3:G/J2 gKk[ݛ<7(c̱ÿoNy .}qWOM~♥ 87nc fq #Om[> Y(7w;zٹ)z ȣ~|ҩil] & sM[~?>~%P x8f;_;H}ZyBU[? bm;e!zgf™;fiAoZ#g?lS%Dͫ!!"set GcǷ>|~KQ>w<=8+Vs/\Bᆛ>7R3; (_Fy?ݧ \h:M7xF ̱wX:5f_ܕ\rh3/p0TfA[P4wBd+6ڭٔ+uW|3 zW[LZ\p]RwfNJEd˕Y.峭rwZW&YRv5Ŗ0M405'ʕUגӣ2a3=|&02ۖuqvp̴˞s/咷Ooi18>L +%)6~&ʷ9U5׺rԞs{,S~fkYff8>Wkx-Fxq5r^:ӣAٕtnr33FF?ݜʼn1HAL4st)kYK39 83i3 }Ç{eiqzcM@HkƲ/d.M>yg;˗f 8Y/NYwe->;khJLfG1>sk?9ڻ&>rglh=90Z}G&yrylL3=b 1:sԘMue֣Q؍sc#ǎfڳc8onWSsv3Kk e,>Ptg2LX7_} ޙTS7<%X( #X%}j$ 8=,Wg'$YI]woNbg՞a]LqvgG|۹3c1`ǚuճjӟAK[ V襙iظQݻsSOw([:B"ȅ҇}IХ7Μqu$zӫdxE{%&t]((!d2AVS=`w_A򃀹7oU` 9+,5(0K0\Pp`ab^no#>:ѥ1V ߾ʱ4{wջU.,OZP:5]UO&ȼ0@v:J@MvE"ALf`@ERȏIFG|Z@8Ak1IArCs&E}7&c'\v:K άR4áЭP?ɕ{R͵W=z"h֣86pRghZ++0[:"3$w\2$R>E|dD67ge}P|dh &2Z_s]̞"OS)h@U:ȭ#) vy4<XQnrRj:S-:GMDjQ,D7ʽ*{r2Ip2yT#YpL*kpt {@I,SS]:`DE+jzýf2AUˉ[-O)d^J{U*î dיd,|kk4XWjfQK(>7`w rj˽+5E5[=%.JLHb>jeBF|Kc?@X"b Wr(>2gfhxʂE d׭Xrb_ W>0޲gν>\"JȗdxBHl?m@8]Y,In0dt+5z)e.yl,_28r*юg5Fd:%77(]^n"G. XJtg2q6o]2\z˼܇U&cpTsDDja$j+c|P@g_}Jb\ OXnx_L4.R ӕM-d,',r\v Jr8Q]e=`ȚUno1>7gulKл;Pg, !G,b߯w IDATr{kv /np3#Se-׿fR]  En]{Sub= 5D(e.{|ǾMzsd5쨘a J($k&% Μ7B= y!j.wh/JEq;H^LU:eޅ-s*\u`,Pꈙr9 -qA4[9G![3nqL++_Q.e |t%al Bq>[)v w3u*Ȋy^u`Bv@H7K1"@C`?\*4 EpAv' 4別TFB+hJ Lt0.O*"C ŖPD{T wEFUu+M@OZM'р+vo*od(G5W$ e!5b `h5Co2$$ ]V} SKD*@h*5!`k>p5EN-3CHWDF/%YȻ_Ĝ+TR.ș 64@`HBHѴW35 >EOhW[`@- ۂ3?+`y$8BP(AJw P*!TYrf(uZ 6\c2J xSo5-7 ԡ C}%b {e}Y0\` 2SBPr`W{F n&J{J?LsF TJF' R#Z*}:C%|p+ᄆN4DlQLJTza's֩zr@Aw-*- B$FݰB1^' (AR .{HVQl)>qbk\d" udnI(𚁹.T8q/G0C_c_I+7JCpГSDIHUR0!i*{ڦqi1 'NȤC26@^z)+W- R'&@#J}'|R@ X@/N~_,V,diYi-ꡔt)fΉa[÷TTW:EИu~C/dC޼Յ+Bq=xB`:D/E6%ե`&q]TÐې'{[~~wǯ}%Xrc.ABsA& xqN) !/}~/y$BS*"g tȑ%H@ `cilzUJ9vj)lg;5HBY,Ucƍ*0s@߁SƅWC;H.GzMD<;'d2c2lYo4@2dRtjSM}2Ib%tj-X4;Fd}c;H b-]7X4T)4vC6Pk 5ffd5u|ghSsBML4ba:4:JabaA 6tc$\,ŃVUzwKv3.A0Q3QҪTql 34wfGg:/O36hĊC\zj[hdfi'=43j1]"z!չY{3㿌[f:7`ay(hTssR7< hM߱)wWs꾡E]QVR>Y%ؚZO/*s2mN+dtMݱ~.3G9=)J6%$IE>YtQ[@hVo/3 j@MAlP$챵;򳿽w/)!UD &53D北 QO.i^ aRBkr`fk>oX1tg%p>yvwwң;rtEonr`;ox\WȈ4#UuL\z$4P 9nƦK͉}rsj R}Ѭmg5;6O-aab``3g=gfLO)hC! qNDScіыP7wYUr 'mj*g8k[\R>럑t_;u4#"<4f:| ^N[e+G+S, Àsϟ#¾g;)=#KJg!4?Г|G?k?䇷8q*l9O w.t0*pK~uXcQ`+7`i)$옥sMaj׾ CbJ. es,}c'7#_nkϖ=P4{8ؚwtXt|<ڸWm-~#Q`@Й&ggXlL``67c1w"UHUj[f?|έ @rN]5UQ]:N`Y[9`֒x-K/` _ TWH|Ɉ SI<۽:|ϭQ1"0@ף%x+ 6ՀLkn…E|hjoT%`9Ѝ3 یsQKduhc (m>]6%1YE#|ԘYeL#Vkw7x zjt`ak~~78\Xv_o޿PP%*Uvע=D/ppv>53fL|c4?T%|iŧ03`*X]ϟ5h\ tqW[v(v\S?D` mOK _W{S"/>Q7AKAD{v,ܲ-=CVA\aO莠D^Zԗ_<7Oֿg ~˥^ub/~`0vk*W,]RʹAh`h:PmHLb. >ypvG| <V݇4n~؞ xynGRokM0a%BrhQV8zWC+ؘF4a4Qp0%بHIArRB 5Jq@V!ོ4{pӋU] `Ѯ]εcp?<ɖcȅ'7y̢>:Ȗ͛w]|*5ȻP(&t{7#IK͆/fzxKõ#zĊFNubHڵ]R֋3sC.Eo={}C pmmM #C3+{Gv|l&̏Ξ~hĂ2q zi2~JN޷+sc&v*t(]eR~kQWIvNwF:dhFbmMɳڳkBnwPU=`T@{w|ϠX:5|u ſ^H/pݯ?/Vmr<.=-Qm2``,jF2x K#ۆZov(:e[{u@+nQ2vV+gȩ%c(\E/㛂jv_ظ6h鞃;n0ƻOGYH2%ؼ e L0hUel[%fW⥙wll˸\h%ٻ?8}0'I䲾YapM.|!}?~z(M? AF&f9up֍oT @??1(Á `Rwh7m=q(֫@ oacW$2 9׀PG4d\J!JFP9Ae*Ny˖J8: [`J?tG㼴dȎI7s^tߓ8J]d^F2D?.lDoȆ .j+H\,|!]rn$EHtپA1K?+ly0{޿X\Tblt!ڭ'g.tpC@ڷB ~j(Ɵ%Go_k6T b}#>s.*4|G~EKY@/3D@;;z@Z)$aT`HhWݟfE$OR6T/~_r=Te%ʝ[׿IP=#w Ap/?L5ٙj^KI43v}saOBWEG? ;}KutXՓA@Dfpeu| |/&VP#fTҪB{휹gP(nMݮ=wɁʘhٗ ;Z2y#Hrmd՗R-Z@:,"843oS"!eQLKۮ'_=hdHAKYVfQ>Yl:w1&*M{@]>+hMzwͭwo\u>ϻ R&w,$M] e׮vM*vE흹NXLbǝm9E&NmqlcQ yL#8{ *d]>GınЛ+X!\>_fLaxV7m#ZYu*[bk L f.saRIHs-H} F)ԝ+9 3RlfePըLЀrnn [bvGE ,zg~ZFwobƑ["A$C\\ɋ @ ʦлh breT7Ǔ򖽿z9`K{DA儛%- &cw'o$ ul2A ]I3.ЙY[f(;w-Vbe)D+l{&*3K8Ϳp\ٕu`b/maq!l"B% *8 Rn.eXC]֖>avg} `NB]pǶMrC[-{:5@eiL壏Mw=z'BU"IPH!Ș9ͣ^[WeO*Y9|QgbH2s#Epﺡ)gxc ``| />2ynC3_GO|h:%sM6׈ IDAT'aZK̛H򽧎0>{;PiO3=*B@`η 䝙= D$/ 5v/X{6(HcdlyH+xa8AHN' h{ܚ #Kmwnuc l8͎i-QJ#"õ<6.GDzwVGl$"Rl t|vGyF'>?n4gբ%Pz]ӏ0{ vG>[Ka|L=zϗ!ʞGO5s_+g1Xa!rO&>y@1Ϳ aJnd֛ԥXW|qc=\zrtbCwBu?{U^=}w~_=?+/mLÕ]./I٥,ɽvIOc-IYݥ^*y害 $\WޜKӇĂ].NcM.KOAٕr&GwI80jK`d%iQ8.1!1 O-Ւ_鳾7ӸG&~Hi4Ʌ(kyovS1ٽ.8V)O-T[4'pl`@G\.ia \^/Lblv9irAL:}̬VSRSmγ~B_(J1޴o( (/"3&^}Z:{t^q1[fsj2@n`I4L>t{GJ4B kGS 7}C˰R5qxp; N'H&*]"32<Ë1Rĵmo4Wek@HU,dx.פ ΡIAYD+儛ȫ*NR^$UjecHٿ -Idr1^-ozꑼր:jV5opI>UFfբ5-xh -TWbh| *4g7YdbgXZSRj2ȤE\Z&2iL5ࢵP]*Hh`k~* GxB+kOr}lB@ ͎QDR=ӕJe9]4R0пi^J)ӨZ_&*"\ÕA<H\V0dd+ R)% Qɜ9'M~[վk5Uq@nWLUVmnT/YjRO5js$_ȶfn`$ט[^x3dV]UBnB늮|V]Ujl(MR[iRLRY!ٚו%Z-Z22+FFfn$OJ2ծbuUj)Z63ʡuU/˦3:C*WWѯPH4Y]r\όjM Ϋ 7JJ472֒@^ՕW]g^ts4 S״V1eSf PSdWey) vs゚-]j( *^)͹ƸSn3oey_m5oU[,FVޜ~P4qb]H:T5NQAK ~tgrB;,=tΝjڍ(u;Q.՟6Lgvj}MzF5z19w$nxzЈTvOH=tᎡ5rlzŵ <6شHWiR-?Qv &ڭ<4+dQRƵB/ Kw'xJ7kc`֋.7׷g(z ;flX}z0;qpC,_hC hRtaZ(a &>]hxfCH|bX4>1KYN] P +>c}05N= ex*W_gkp(W(r 9 =(!<2SRH\(:J:hR*%!zh7q_)^z7_wտ{ߺ_}16g O^sصp-K)9*֙ M{ah7Q==*qjIz3n, L-b]&F4ݎz@d,U?BS+ә#ѹ9" B P~@ *%T ޚmZv{ޟ>{g{J={}]J9go!h)_Qy1̴ )ߍʡ4mH:;J@9kq*$3O|Rs,L^sg]VNჳ+.B)T;/gg/cu9T)z[kdOƉεEۭQg'aʜJr;?!y_Kʮ8<,s>Lw |2y](\g&ɶ/^*0mZ;?.¦3̴O`^ǽVV9">C*ia8 S99 L.H˧4L-5EE¨ҥ7nv_{ߵ.uP Q3me_4L?LЁY \31wg:;t\N+5o~Ec=2fY>5_k.!7 3Ϸ+gUJ-XOdn>{ftss&YjOĉp&zeHq.^qL=7gޏϪK:. e\u%܄P~G;E[T>q̴Ѿ 1 ɳ/ԙM?+e$0 峓,!gƙ~)V:^g`]ޞWJ]usG0u'3ҹR5}c{:Y6T^?Oش09`u$* |-X,]_ ? +ٚmt|KEȭ{?5!vȸ{w#y sh̝GhSdt ;BCz+ćFi˞?rES5!UW naݔ25WEfuƓˆ쁕p~z]_&s*%|g|-di䯞s]Z:IsBsty~jrc^" &l ̾[z tz]XOe`BS V&qۇ>uc;)؁o,!abS? |v$Ϗ"*عoLJ@ ԃ,ǞO~c1@8hLTE΁g&X2 R0чpF@`p$/WzA_ǟ>|[gYz҉1d*~;7N۵49y$$[T==0(ľ(7"Q}C*p~kVJmeܐV#*}la `-[k1XO#Y>1 'N>{nҳ|ࡹrpr Swt "%p*\wh:C$-}Sspo{+%Lޟ=}axп_,jiYAn7U:VSW~g25d4@Ӣ\j| :9F_xtt[MCR-1 Myl}pp;/#{~Q[P`:VO}_Hsy& ^lot@J9xd0"5a+scf4&Z@~Hr\l}UFX1U@UXDs?XQGߒHp &uFſ_00 dWfg\^^D+O6h>`ہ6 JȊ4V/eHe˒q8~,f=ofw 3{sgzwlBش\#6w -~{sḦ0AB?nFڶyo 3#:p{&-[߅.w>H}{n-[I[Ӗ./3iYڒcgCz:fdЙ9f}as]@{&XMOhGH{>vз:}wzK'. IDAT"H[vbRe?FK@퇺ŷM ~=0:~ϟ9Br@Rj=dN->jFK@wٹOIna=TU+zh`um}x⪜o/̍[0N/,;6{{TT0mS6e/ʺ3 BviVsOg~e4$r$Tp&G4Ҫ5:>Ytf Bnp=M 8ۗ/)w&2{1%Y'^#,T$Xcf݃!Ew-A $gMuwrfANYhr=C<畹d5jxe[b$\+$~zE9Nn%ok3w|%s_}xmɁ? RuㄌjqAJk|`<AЪqElBJ%k$̢--ԸR^RJٝ+d! lݕ?gov$w\ZunO?@f;{-_ɝOs_x-OXOn[~x滏/m 3DIaBAoȎA5(Ħ͢3{_m =0˼?9(W2xѯwCs>g΃5h{v.\{LZ/i|qfb+_~VvnYoQYx-p%OYj<0xQpװVjT~ŨY*z^m}IVg2s:T9ڝ}Ծ[$j"h⚭F4uY wNv G댂hț)O [)?uGڻ0gf/=z`ο}Y\hʋ[l u˛ʿ@ 7kSuT &doBo$VPh3P=[N.6Ф"t?CplϞ:ەe0܁J9t8]g?1lӞun -ۼx04剎ZCK-GFD>1?v[µ6R y87n=ҥ{zR%ѹnvj*F 2[TBI*^'K:paZ=d3#R`3P4#`3]8u߽l=>wO}ES(g\Mo[v$)ߟmt^/3;)4pC$S\aݏ2 i?eA]kW%h脎C'&Jgjʢ_ dMamGgCs/2%& +BAx)epaã[YH{ ab Ins2shH!)gb’O7s?\%d!DLV4o@ a:ky2VÊF%ʨ.Ȏ~HQ)nYF%tMGrLb&JOeï$ǒZfmeV/>leZ 43oANب %͡KDW*Y{v脎} Pefܥ^y Ej3+8am$96mK]Ku ;ppBv ;qҲu{gs&JK  RlzYޯu.jKŴWgǷ,I$Õ2 CTfB`d@޾߿b}mr/&XwVuڋp;$- ԗ^ȴSh%wP_J0BG>coX-4?:guߐL02Ds@+Xsu.tC6)m oہ?@-;ѹн9nځ/t Q|޶EipNЅt;wnr;4#?0l6 q$[GMXK "yJp}lR JphGCeΙ!4m+}s B.fN=+Kt{#lvgVQ+Ap~fP }OcgĩsтXtdn-M@{aa|ϝ#p򑯟 /M3=F~ѯ.vˣ>y0޽ݱ2?y;oB`oCEH)ШP@ Cȗt,]'/>:!ڢ/>2C![ 0&$r#ǿ$u ęvRZNG纄y 'A9xn 4Utat=cNs!>sCD 9!}LJ ű{^9mB́}&H+:bTKؼ}AC6@̜ 5ԍ֙^`Bz cWC-gV!WF}!?033[%w~`!~r܍L蓋эsXtG&l>2qwb/e,|0&^V~(:?Ğ'v {WlW4<*웘|߰߸]FV_{\W/^3_וW=V#9pMBrhԝ^.}w_+O@ܥTYdh3 r06m8Y.uO䒴!ֱ2{Qd9Q =͇f85 vxv%(Y?:\!̎s_+sG>bWN W~2WskZ#Ü: >NG(~T<;Évp)˒٣>= 0,{:Jp} =?-();@Iw#3͇ܞT&$RRcH3%9]EJdR㧈C AggT@KNIp|!v~;2/I;Ggsc8PEG$l29>c YI9\N=AJ$}yzSED]cEuL+LA=ޕ\8XTZ:``=v@u?{K+t/ZWwbrjAjš|A mG`2'9hz@GZ*87Q.Cs}Z.\\_Q~|QYIǍc]n`(.՟1G EZ!G!f3h7%s)s8}B5TEd `?NT/d(HF9q.C|wEZq*_:{ۖqݽz?ݷ ((Jξd dUb`QpThԺLY> :s\#5 j԰ZMM;l\<Ҝ>_psgM tdn@!zlk><>/|Gk0(c 3b $WfL7$wlJ%iԗh^، .=jWx'Bj Ϸy:ym7QFdvH$%$!*˲[P倡JͥP W>[@\&n}9_uEG@' IDATD.y2Wy!h]|Ꭽ2G| Jӭ_RvQvz%;33D`VM(UsGK 09>_AS<"%N>w7Br2.*rZ&`-($t.vP8g 'b1+{Z8]&IJ`AH2B Q ^T +%',sUE&;w{v/ a"PNK뽶H'JO Tt`+L Q^uw4s0U'کʒUfl4+D10S;38fq(SUŃ/rشD}z%l,؂+ċ0} ;@_͒aE+X !}sSԃ_.A¸*ZTPO*4'B8q$gUOH D9?=D/ޜ+3֑Œz2s0ttsCLLӣ&+MݧRHdD3"#ˡFle3D #K3̎%V'𥣖RWrb,vnETD ?K h5v?9O,wgFflU䡩<1G$8,nevm(ɛBJW&RfR;P:( ˌpkX=cH/M ׽Δzm9T']݉ݛɉ=m4QЮGDcj7yB:_||nU^wo0(qEKDNp߽Jh)D4*H LȮ,AMkCw=ޯ%޼{˼?h[ja|]#sRo+]! ;c?ZpHJLAڽmAY~dͩso\ -rͻy.s|ʇԕ9ep9sG;pb.c. T}c]ĶL Ⱦ{f߻qOxb-٫ۖ@#g> 1Ȏ!Qc9=O`ŮVrr3«2jN&"%@A򶥣h`d{+k$C@ /!%`ΉiK%jM&\R'#s[7l_9 ̟Y"J'Tó3~iAYh}g?Lrh%_]ȃDX>mK$3ݰủ>gst̾OݽL[$/m0ogF}fIO~߈7=EU )Eʅ 0:3/T.~Gre-^8'4 (bX93[6?r$ ==z3me:3c+G31;=Le 2g* FM_%׈@Z6 P[H&VASs_޷8ᆟx{G߿Mm8},@KMݽUmO>=_ ŶW:gos㣏#_k{]*rγP2i6OO>Rߜx;lyooryLu>߼A9{ąT"58{Eqܴ_Y136k܋e6w4]10M~]D]Cx~ ÷lQp#6{0g{v6⠩.LpA&c‥# u/E f;W#66ǫxJ Qyޮ{cH &C.YWgڭ@"O5Ξ8S}B#'F9qb\j|6ߕ?|9Uc!oOhF2юكT1}bx~|{n3~b@FOb{ 'i)U Esuđ AC[xf%Y_<p>JnZ1kk\N5<{Y|G.L4Higϭ A6V,}ϟQt ޴gxyݺ|a,LH"Z0ZOL}e ɪU/da]a0?zs'ɣ|sc<ř*tOtyFw߆郃~mo_7 nܪt owE_& UׇܼUNι~ӆdDeOڑُ&O*W=RODr;u̘fǧ4K}NIB먭`Ƚ n[k7Ul)ݕEa (nܮ++gNkMImxZoϯFn4ܴή2s蝑KI)7毖1t"t7=*zzO~d0~ E`|6nVY/.WCa7o;v|pǎ߻cpz[_(tN !*bِr1B^r@)ľO/ ;6^wfs;X~[J>17 zsL$حGv$Ba;Ua勿sٽV9džf*+ܹqb ?g끭zE'Wo ڸuIEg;f^%XL}M=0 X @mߎuw?ՑσهGz~T|rʼn[椬zv=9>gs:3cM;5 ;op{fs{d7dYhc$ DklqRkUꉑlYOidPZ@R⺨$JDeCt 7k$J +h@ KNёӳ u{%wwS:=QLWv aibdI>37}^NXϾI&{xІ,OH5r*$z4C ۶ވ \'Gm@_n*K/}zӀ Aw@p?oMvVz`oq&~d'o fW//l5 ??kza]G7|voDr] %HEE$=>F.RƵƿZR/`l*4?X9aJ̴XkJ-UT|9̝wPP^mH|]pg.N|{,yx6l` I,t8lþg/M}_ڸoO~{w[QRO FG3^?>t L߃ϝ-XW`flB!D??{]#8!A7;;7D舠CrO>V;ϪO}`1dX6&즧޽"W!yUTi`=i陽v߾r&ȔS(t2A25:T 1U&L2`3Sq#Lh0)n,.3Ʀ߻Uڰ_ %hA[f߷>L=?@ʑhDy;&ݿy䉟1H #ʒs{J@ODgRFD͐ \ڃ֗t W R  Ɯ`LRɀ:YLT&[Al9's=  7o;I{|?wW"SغW3 *qjs]?再j nRѴsw.\w VR IP `uT8^'P <L6БǞ:pp"ՀE [>iϛHwm0=hݱ}޾f#(߻>/ 4w"om<~pϟZOgdl ] xWH^s}_*`=F _̮XjqX3=l |'RX^3L_9q] sP9rs#-#5s@HdHxop#o+pClit Q_G|wR߭ԅ [.ܦ[3H0c;,, 471RݷkDy̿=†Cݹ7[YXq,Jw^~7,%̹B]CdR;p1ԱP%26LIPj' ᫁۸Si)Da~]ipK!/@d R]o~!(E$)͎-mdA"Yt8%`¶cocPMEӂWK($f̔ vV(h-&F”„/)gfV 9@H=($!vBBt=tC *er$$srܸ:fd;3%V);;,k̶X{?iP iNjm]C w;ٮ?5i.$%iA"!'a=|PmΥ3+܃2T 'a4Ӷ7(a)A=>!0}ωJ)߲Q+KP,80<3x[4H+0|ӆ"$i@9IUSV酮Z0KZ9*­lC;֓f̬*^Qi [ kTWt) C;Tg8 kWCVN珅uR)'Q`4ŠN C}셗85]9lJh[|or7ܺGw EaD[;*7~{G[|o:ob#D5Tr DY"Kʹ3]<dԹF0eƛv>}ۭ5 Jc6_\Q+X{OEFWr8 R|iSwSC[PBPÑB.BLR*ƙ% [k__pr--#ZX X972%zjl @ ]Cn^I)}覑t+9ͷ 7m⹎Ȟᛇ nrTݴXV͟pt፯]eG g:LsJUT|^v-.Y )u}Nz~(w7,JUg@na=Yd}~6EC }_%V9$.OQo VRG3 t Ԋ*6~9t_x0!QuW"]/iR|Vfm gϛCnn[7m lZOV`m0ϰnG2|woyHzkύ ٮ`ӾmgfdЮ%hao@ٻu 4E()h̎ݼ{ۂ?cr WEl4kNztc~OezK3o|meꕯyA*u2 grϑ_G#^*A&lvb-~Óoۜ /=k4sv߶\ "l.wG0>uV` w?pn9g'жF0v>>HEmkk ycS1}'yh VF,Fjɢ 1?DMrt)ux}JT]`侜v͌{UD ?H=mgFg B6Tzx ! !{|tG 9G^}l}=Gw|tYz H7%#~ooB[|c;~NѷnAτ|5j\ f8(7?϶ OuF:yxOCgw?:oĖO_-4}$w>G@iۛ'6><۸>:K=ޑaEٶq;?=GbGT7%?wn# ;8lp{=|[azo?gs|w7_Xͣ_ ]g8r!ԝ$ Nw\Y/( HYQΕλ:3cl ǫٗǐ*$Rs30,wɽrWs7}yd<ݯp.۾-|*r?cm5e={R(ƧfF#v:>_ՙ:9VNļ$iʼnc;ÑyϒS3$\4L<2f/N Z(EXeU+(8dTM,I_:K:?5F&%__c>`1L,]=u(tG^|njGےkn0.N郎ZEKg\\]yyf? W'ڏyIY1>ߙD[^KNٮKX^kM.Dt6~9Iq櫹DM]z^ݙQN>5Fp`kaNvhq<ă8ٖ670rzZ&\qe&#<0}r~@yʷfy̘s( ~|A|~"GIR9]z1~[S͎hk9E^+?_7}/vUj W!d*ר*SKgr +FdF!2 P5hp9d*9 Ȝ"%o%#-7| Kol % G3C+3"& x _ "'ҋ_Ŧwp<{V E{;yӬ{ƿ|ğ 9 |Ƚ)7:d q-ҵn*'ߪt"SP*+0 T‘ͤ\&E/$k)U [쪲W,ȑ~w]` TENp[C{}RT@$l6DVmH@bQt-T,Fc2~ S'5Y5*h"XSI z+}i5<5:{ԑ-k&lᢄ^ȒQ!fCYX5R@բ5u 7Oƍ2pi}U)Y&#ZQ*o!< ߹>}Pjnqln*FIٙ<1Q%rBѺA-~gn|3.YW5#nHf0v:&bg,k? PvKv*}_ZNXz JՍ 2Z/rLd_FOG5+CB%Ь#U^f"sE@p2_?ޫx[YVs*3g$ߝR5ep8{,GbQ +Ƿ0kW(EϓBl B j˔5X}"\jY/(3Y,F!ٔE2梵z ~02 3*]@dCê)\P+c3 Q2=ܝHբP+۠X9pCB$LTYS, &V$JQ!v`MS B)b5p}ZER5^AC ]D(& 0@ dyO$z $㢌d[*xם II z|,m )bωM5ĂFJ\s}j% ;jb͒\L֗@Ss`Z7gAtpVsMb~ooIuRBrfIZ)^.ר`V%=ja@# AoZ5.ZEV&Rߋn-UK| n<45T6JZ(=uї'@Z Jn 7 KkjMZI$ A9Ť˜HkI}UHR1S8ɤLRTYD`0ZsƵ`E)d77q@@.BUU2PvXt+{v $)Ȟv>@07ۺsDU{Cĩˉ#LI V%S4JcFW(é%В2KFl⚍l0/"BH_E+]?1W%rI*(*O | XOR&(!/TL ![+[U K,fes@p#ɫ?Va9ᣟW[$eOi7k^,B)uI5$F u/L{P7[YZX͹E&iRv)h.0'Eت ht32`f&ES Z5ry4CDdHի)A|7HJYR ٝAy"F﹣$\;w*ZVYXM4 %l߶I%KPZDED$Ps/-0 ~Q'X3]>TIna7/ϵ^Y,O,R/"h^6xF-gMJSgorK` ,ak KjVQ ɅD:BݐKx*-E(-xpI;-€"8pj[6]]gy0 kxX%;Hs$ܽkt]gu.<][撎XoJ/J-I$;=_O!$Kvp)%CK-Nk{ Jb[r@j؎%m96kw>ߏlVsaI{ֻ;sb&⯂_*+𨚧?f2<dVU ,'8_׉T(8R $ĂE}TxFnlqF]WxX2TXՙN#ܫx>5`R哎?T Uw4jHH?'a3r0[?%gU:4yLy WP5TȝHH,(53WSUH1\HLNjH, NJlKFL0>+jn@Xw! ۂ%3*"Fzq`P좬,sw,BEg1⬪ (5?SV!=A#@U{e5l6lHs핥D:DBu ~)}DAĂU8` s:o6`U"u>yn `cbl^*"Wc[))Sdu⧒̈T T1sqSPἾkY&˩j@p*;a%"U9jd)=,G<^O 줺UF+ џ]Cj Y}b,T1 !cUjNռ~Y5/ %#Pʊ :ḦS<`g:<͙V˝YW# dl$Y1msB=7jĻ$oǀ0Lnm@Fܻ`.ܻd21̔U s8Z72ޞDc1⌕A@rՃP.LOO+ '6ɬwMFQ7~T#?CER޳1ARENI?zW,&dnY9g; 6󖑪(|1ZSa!q@!9ڽn63nCY|3EȎoQ&s 9 MldJV77$iT|^Ŷ/GBM8p}7}zm;De>NsfgYZf÷AI><~vmY>OVQeå{ہw L(,UJA74(pK|ƃ{{dŊSf CvwA#殧qAh=$-ỷ<6^j$YU;y?DI?T**}}PyɭR;C,{G]y/Y߈wfعO@߾ CߐK93᷶cT9?0ȩ@š}#`ې$QH/oL.riK}6=wH#őz }r *'у|;ǃ=fY`[I.MfH̕|뤖UքanZĎ}q\EuP_5w A:KHu2~ t~eY݃iY'sĮRf+fP5;Awzh_o̵YTI&څ}0ctG[ 9W_;.0~5󆕄ru3G6w!cޫw_&\}ŝ: >Gdf)v}ŋA_ R>ws޿O%L;Wy~G4=è^0eD S=#mGA:Ԩ>D*8,yP [01J^{\_G6VM&ݻgu({ /n]"V~p.b =w^_f(|t#QX%子 f@R)c #_\qW%u宍|hoǶ7_<K.vۆ[@g$ ʓ`  fhO%[Xs ~i$O'm1u-k7 ūbպ1֖\@kdž޽.@(i~;oqGH.x@µzHr|yukBLkhdf>nS@S.  F-:`\r#r%57D@Z;.3 t611vedS{6ۭ7Xm$!PKT_W nKld! /$ens*Ī%gBXڅ:*(ښ;~Hh>o˽1%/s݄{}q5ݛc$Eʫ=(KK]^eZ ȫn٥яUj[--Y[MhH *2)97I*' <8]+:Vd\Vzӆ6A7_QvY"IPd$?پ5p̐K׮n<5nmHec L͢h8 aT6zDt⼯c 4znXQBPvP=@޻$隃V%}>[Fmɽ@Nc}kWm{k໽~v.,xIJ[i-/KLGF5s(aQ:Wu ͐d W> IDATjwTuM|&h[~*I>90 3x꯼uȆD֮גg~E}c lSj)>rşCF:X7.}+-1pr)O C2(/ZYՀȩ$Q{onV:|i$|Z:SS~Uo__sGqjgȜS -qDEp'\)#OV80Mkl&(E`;/}NѰDT-uv>Rzֵypvآ;/tԥ{ pZy2riwgtArv[<eH @zp*N*kE^G 0G#aGDYkâgns * 92мopKKֈAd^yr mZrUC G0z`NT|v#W]! c)IJJY\Q,!eAfb0`x hnj pc+]3[/YK`NP@H\s-dO~AZYLrQ4x%+5v ѵlJk`bBDv&8:Ƽћqcj}kBGjql.(pȐ^Ph_OsQ2gE㇚($aef.f7?vU2dMw\4 Ao18dYЈѰe㇛sXaB° &TѪ$TIIJ(TSi x&/7iO-[JUȅ 3@mx˺uj?34bdg'c|L:{rxQGe waCM@ɉsQоl5$;zd˟1ذ0KFu ӎ1,\ Y%A"(MQY*+{߳#d ԡQ\y,΅32sK&Ǫ fIA:?o.|yߖ>= `om}j%4?kV ݬLj@o5].ys5;B'~pweήpgu_cp ɁkyY5ДS{6V Xza޽g ~xDT\X!@܀J-;HXဗ pEcӣ"E;v;bsr5;mF&~eyӺό ɽ\qE5Bk7cLn1|x>wiBk^q#^eWDǴ|ծVlǟ\!㟺|˶lի{0Abz&nl\-|bO]] m28pSDYdaeJ)d_޷ό亭}/[ +_>3L`o/kD`K?|Ժ/]+^޷>O^/_O(` (XxEoS"9}AmoM7G7}3^X9ܿbJ%"i.L%q=9"@5X*v˷ߴo zޗtUBtyFoKQ(lu_`@_ED!#ڟ3D:wWk`^ecYʗmrP3D7v={ F@C '޴ `zokՐ)JҪWnCF>}־uɅ/f\g.?Wʗόڭ/;˯v*{6boYЫL;+_ѻu'G}ݰڿ:(s$_Һ[VB^5ޛw7O_%]D΀2yXZWᎡ'|'z;vOGU_x}c%ͣc:ޙݕK 3ܲ_~̪]bǐ}ݻ&NoĶDs>재 72{&#Fc )q`&}#-I^S/?M}n#GkhEN!Ǽt[\Y|Usxytf=}#wr۞=!s_u\Y6ZE7ZwfLvI;гkD|jj1\U^tleq<eX^nQ ϲF mGAUتZruSΠKOlB_j [ƪ#8+"##Ү>μwi\FjI={w`,}r|bwA IӃݍ!ibz݃ێѰw Nȕ5}Cmq,GG>#^1Br&6oٽfU_=;@bpNd'Ɂ;Oz!5rs&27ebW7Q݃Dgl>=0vH59;08:k=A ?U[i6 UaSO l%pweM~FRt7D;kVwnb\#fp %z7ܸ{9?9J/@+"eB5 !"ؔegڵ?7%3* N>c.\,(gB81Z[Ȼ"Y3 m¬;d$h~ZI&CB7$dͤ\NȔ{-SRCuX ^?UVbP1,/8w 05kt `FXѫ;aOv39뱪:g(8@[3fF_fZxUəm5+fmg;K+Q,-HQ'x25ͨʑq, ҬOPgE ]W,2p~oқϗ h쬙T5uPѫhl0C 3 ǩX먹g ,q!5{eDf0Ù6arwu*Ka-khA$&xESc3(lS5TCIVͯ|Ҹh L*49?tT-ETsř,*p9'c66T]|?U+}GV/_lOJhE% N_t-2dܐs2:;c㙆ٟԈUԡ64% z"'fΞ$.0źꡆAD~rV2*Q_m%Hss('6VlA3|xj}ʾt9R"JU} 54)zN8r.s3Q^RH lgSAQDP.Ԑ*Q_%!$ڠe;hVFt;x\ X= Ķ /A$N .AjMdRHF6` 2/!є THP ^z$!*hhтM, \V`Z@EȎhk+nSEGI`LU..*>OeqP SMO>SfU_s#fɐ,_͉hx֯xT z;k9ǹR@b3QI SjO|L勞@筺"duGXHFZg@QLf6lŅ-9Ugz^P7}OScc-Fl >Z Ú-("#.&f5@׊٫b3p*-nY+ϱC5ѫE8ىTt}g Xo6{q N[I,@+twˇ_r7ܲbM՘IJfh߈COf*0[0?${ SV:Fo`8DJa >pՌ ͩ >1He po++'eTy t@ 5JWJȂ;MDChmgLA[%Ao!R642(T@BU7=3JE*`%DApf!{ͻSenԊ S&Yp)zV:GmDW)rb1/Z7 =<4<ΐJ䉩PJw3M*˥޺Q#7 %-3gpr~ '!0xBݲ \(`Ų1ëIS""h }:՞j^ 9VVdHRr0Jh=ORɊ`ʥ:Zm N̶Ο;LYLYz Cr/8wBXB ^UkunkHB`Jn^GdF r(*x`%j&)BW/_o>s趺e#=U1Gj!I`=J[ V@+0ƠD!S2+? fܫ&Im#(2.CAXp<@I@%V'CF*W=< 5{=3Dyo]rɾGtU22hl\?W@$) /2<{VrYc"'^L,Yi5@?ߔ-;,Ae"=' juy6 p7..d&O;ns,븷g"4\x*peSCEH M\r)U?XDX#gp#PZgu]Iʀ_._z)V 3ʤiT.V#0' 7KzM}O.PpA>C`M L* f=ӭ#RD vGK B%ߌ Ȃm]aó*Q Qb^H gOFM<".jDga).Z/~LO: B0"e K%&3aFg>Cx@ӏ;`9'A$zD-V`AIHA~2 Q:.'H[ed,*j̊{|vr ;l6XrwXhy AkE\-2ɽlc!vn}Lms0$̄9Sb9vq XJ 9>,2ِ&KINYɴ3Oݑ p K'R`l4ɠCC,A&d BjS dLNAc~dB.,C d e͔h$eH()}aN@1=ϥ$״ :YUrLIBReQ$r 8{i Ty;n`Oxǧ96ͩx2)JPFW`ޞDFn;0HiJ2,)'}R,2K/9dZ%3{~ngYcŜǙEҏE}xd,0bjɋ{~֢gu,z秣f(_wcLϙ漨:^w﹋:yQN OHI-pzJ tY/s|ǹ:~|asvhGs;g-|{?(||GGs۟h>(鹕kN{dzxv}̤7zos?c 6%gˬs%(;cCFJ>N$O).Y7}AV4Xj/Jr"ls~u׎4Com *_򞙉ǚwWk2#gd'&C^ "&_g7|h7"3j5/_L=1+w>`Drdsarg`q3 UPKOӃj߱JWI< !X!blǪnr+zB`ih{|דxRR)ǟkG|o)o0%fs,IFדxX:Iځ{vMŌes3 Ȥ%e y1H@v,-G]m+2=G'3O gsj^yfM?:qϊvގ^pL=mצ66oٮ6ܶ_zlr_U6&)97T$?'R\&$$s_U+%Oᯯcly+o6+7oWԓwo}+ooyfc;k垭o{Ɯ JW_#O~UH8f)enqQ<`:~3[JR.V@iE$-p̹ _q{c_[Q%a_[{h>~ׇdv(LɬpEl/?cphCnFsͩoaLPx `OQaH԰x-Itzp*6V PF ePF` D'|gW `l-t[%(3@r'[VvJ1'//+><}F(~+6o~.>_?뇚߽Co}ƌϚc-iI`ۓx"ARo;>6O ۗa=29畛i6fiyl;?e&x`@9kݻ?s4: Iɿïlկ;=iz=s 'ChLz_E>~x!M9_2=Rׯ{_]E{ ;/_ނif/[?D&P$TH4|bFbC;6^㒵_$k }?0M7GeF$E~]łEnuZ@+)f2 ыfz,#TJc˛ܽye-~s  :5$ Ԕ vlD[f vh=3 BvBVl[IRS2TSId~&ޛMSOJթso߽^I\uQew[0+& \if^9q/-Fa>+W%X$n8lPws֎m+Tl K7(=򶁫KYXϗ^Sswϟa9utY̚bZsI}{gZy^|)P{gy| ,I$=N}rȘSѼ3S@*ϬXѩ\,IƠiQ}z$\wDO^8YWɍrAoGl%>ry=ΏB٬\}p~W4zه?Y9bR)sc}:2(eINln18b{ dQjd,IbnhA@"2g̘2P,Fet ! >~E;,8`.Z =~Ew@'ܟA>S~W~zhYߝ}kP,#7O@8%x (УݡYϘPylgp3zܲ'2*='~gO6>6?tT-Gj܍` (b}_{kjs=?tf~y}KOl6\7=vFZeEPe;Ͽ#SC4gqʔT2hEgeU}Q"sVW|s^mxf>F|O>1|Kg):*vuMاҾmC C[z4H&3aĚ+bRhrwwHaCg;s ,S% Y<ßX裟޾C 9ܡ _:'kojۯc~Si] lXَ>{@-;fcVfI=&mBoW+\]X7@ܟ_}O?[yǖ5S'U毬yȝݧ.eG}MpQٷ_cFns|p~g_xp Y~>T2_F\kn_nاMl#[KBG_IVB5ciB=ئёK dbRYWBL{m|kD9'oҾ޷ 2B!loۧ}߮O=9Dw3[3ʾ>Ș2A?62+Gsc=$utdڃثuҷ34:ޝK qLji0~}SsgsGbGF v@guu)=e k":;h۷2'uMjut}h—Ny]© 蹠ں, 0mnɐ!2<޸a䔵, +w7/[&S!^#3' h?l2[r'aP]*dB0ѫ.sN umq_zwG.g߮cOHx':s2Z΄,F#򛩷OҾO }HDȕ'Pgi5^Y}nl셍?mF {߱C/ֶ=wz!5pϬV g7V_UVkϏom=ZzhBxoi2**I_8xV&WetIR >2:uw׾S+7+o9MۧneWMLjow&ydw[iߧC6s"7rT ;mB2I7Y$(oD$$OSI?@#[t C.%kCw ?7VtS$Q w k_PZ{;sõ+ȶ;/XcFW^>4Vrp2057}'x_=}{W& |%wc7vޑ7[;zNY†ֱG{^4LKA76ʫH Α;{7҆ږ?["#Ȕ#/aA}m>[}뗽sɓr\Mhd;,Jsg@R!t }r^?ņGi9&nk/lޓG~s(:d]} 71d$3Z;\ݓ{ݸЈpújdC؀ $!By# ;E&hI&8fI\zRͽ1v޴ = ArM}=^y@ 1uh=]zl#0({ ox߷gV^3O>0NIn|'<5i/Dn. TMuh˼GVSs4$H$34xGC$c0eL3-L PtX4*d*/jwsc];?&Py(Z"E3s䮓Iǟ}5VWSNm,dn}V~/*di k9]WZg!HQگp½l= 6`kUR_Rhcrf+{fK{;nvʉ@j\gRJ_Xኖ["(a5wfʠ]}QxglwlPR 0Ϸf?xf޷^)9 *ʹ船~m]WyAX.DeJf&*{$IR^]?D< gI0w]:|䮓a)cXpDry0f:0nxޅ'WM;[/Y:j>މ.f /C/lgOI +;Up1PɥS0-C&c"Ķ<0KFE-J>4w+rl={ws`_u~ 2A ܄`̚QRB,Dd !KLؠFqc[l?qzc SdTĦhjP?r43IqǴR`tϩ.EǼ g_tM%{ &]FYA19t};&U:jD4=퓺*uu3IES:'wLѶco%Anh3,#ݦ3j)2LPJBydg kKM}S&g-anH18tt^YGAƬrGԶXx_vt/; n :tz9Xh"uoln*GW7lv=ɠ# *Ȩ!ߍRP :h&Ȕg%n" h0G2NfnA3J?rУJ^wOh6Avvv7,231ZǗ_gc$RNHa]ww4g_Z&:;43ced23dfs2blD̚PG,ukTRsK Z"#7aO푏B_:V_iOpAϴVY RM+[bK4%o~]L垧~dRr1h^ KmraHDLUP* #TFmyS}ڿjX$z@ ?~kʤwuwPl|J12cCN!rxAb Y/oX{al:oWn60?X=eKcon9u5 4ޏl>;ZZ=?Z2V{qܙݍQFЙ%Z+e{&Zb &Y9Uɜ(freAE]1xIæ?۳-70Z} 3fգ9I FJ˲6]HW$SS; nqיM ;5BYs:<<h`(X [7Vs>n|d칳Bl{YW]t-}kڃhy:"Ǟol쑛/gwgAJ̜ßm_4o{7#m[ydh& =ɉ20h Ӷ ф Uv2:"34}ւ xxSPqw;<03))ugܷ*b;^7#0!2RnVZ޶ k_</[ 7\^Vの{{Uo T86ɝ9U*7ŜomS;9Lɢ6'h lfMyՕ\[#虥B X]7Kj!KY d"]u?}ݴ;޺3YC/{9geMo=+F~מ~- ]0""28i +~98U+#s7,͹"釫2ihCM 1xね!z'A ~H3HZϿևj6?r\tOli|ug7hwGN "2Yl%-,*B6|kWkctGi|“Z-XN]ҁyo]vIoL; R6t0C4!8` $;?r<l̒_JW ڝ޲Ʒ-ϗGO{ڍW1A;|g0@٫לqߐ}7^}i4E8@c`)L`X{O<%sԝE (7k1:ym,~ѻp~I}ėQC}C_Wk 2zns*4v-0!c>uNe,P+X); sEH8 *on|6-gSzSڹ{soz `ʕy('yu IDATCΞ9 Ny?=Gv{Vs;~+G@ċˆqsMWOw Ⱦ79wsʋo>S=ܞrآa^ޕR@0\gݡhȠ,-+_mP1 gŃΠ+:M"/F xr]`ƎlFD Vs7/|1y/s[Mޱ DզkA|ud8O~}!d?@Ѝ{?4+MWȹ=̤({h1`7VdKe/I-P#1lc&yWVkkV(Ʉ|Axk -{*wΡtc s5*<IfDP㾴){x=HJb>J?^w>wNi߿uo]ߪIrD{2ed[.HérDD$Bг~ʡA7rr^*ۙRrچ(t>3sH3FgZ^m:)gNW{L}Lu+'SkOԴ>Grl{Xz-)b"de[Z{ǵY{tiY9j?Z# Դs~ze-_j 4(++W"+/?>_ZI )Db!d! HɅځ MZ&foSFS 'Ŋ_,deg[ZDH撑-(n vieSJ;+Oy+al̅Rg?lP{N޻=I O|oxt8R!\RqT[ 1DlIcFNb1 5R. vByUPA! F ?U;NnZS-y;Z9ˌ([>`tdRk E${nioۗVho*z/~މ_lݻ]@hnyz$k)rzufI"Ⱦh]^m(XJRz³j`یy@VvD.1X&#\hn5]vDi_dybYL\X) Rw1 W`bdB B,oCӏDpxX?;CytHS.="]=q'4QH@lBqoJ؛{w e 4%_L\S~l5IO$5y$=)kScyAhc5*cZ,7Mtj8Q!)9d@ĥTnC3A?wCz4= @g~oJؼv3O$]]7J(ބٛxr;TxRW|sg &.3ҺgƷSgƷ>=mKO^0z~Q$%t&x_7% w/>0&(`çmc[QsTHS"k0ꕥ7e* B*%-,kn3"jE{.ۮYO<ú;; @3o P c LaH ) Yp\0 ]߅124JHC%c/%H46mʫo5g^=>`@X$=ToIf o 2>݊`2L7hO!X1lzS63Chg\!l$t&~`$D}5oxy{4+ٳ@溔./3O1&jZ$9130c9fM ͫDxUr37мܾX $X (b?3:01kB'jTCcu/'8B&Vlω f)mi1 L`b@zQ4`hzWJԽ❜iɘ@jcY T5gJE}Qf0gD$sQ`$ Gb&gL/t,"Spۛ5m( "ʢY*%4G)Ox'3a6Qo^@QKI4hvpwi|0q%] ˯3h>D lg5d>jL0(h4 ,̠:AyƐZ&.Ŕzsd@acn&A)$3GA@U`hjNH͙ Ls7'L49Ntr"SprZCr!Ȋ"*MScD("䎀53ӂRW(@!1i7 9@0n&H{L$4t.*LUf9 hJUyK#6ԌXQrI%B$Xm1.dsZdӘJlBYW &3֍I!" 0!X%uzR(EnEe& Ӵ4!Y'QY QnDid0 B@1! 1/; 9IN8!Bg&΢Iš 2aML8% R He)hn2#H]4]Bnj"*?+nڞ wBA`qA."l<=8,sXMGd~M=ESjƙ YQ#aMX]Y\DeHFޯ~PCIl^3A-KDY ybvOwHD8\4~]1j0:c@J _p$塹!R o+I=84̲Q6 #OzyhA k dP)1lDd1.m :- d : $Z,gSFgz>~|<3S׮'(?t!e3Tlފ4Z\ᢥ#z($1tnX2h OJj*^VZ"C]"րXyB\1U7̜1jDkBOIt?({Ŀ^>j0@'5K:N~*w7O\2P"ҹ:AC(1Cܴr@:R/I`'_F%j]'\ŖawԿ=Xtޛ;N57}tk SN**X8k50ľչU ϛd)g(DOCJIE2YOE(%ɿ=`%'u& W?5wE5GoZuJӿ)V}W$HYG{bIHKy#T}_s_;-ni&2p54$ROki^@T2`RC/bZZK:fB't5V/N ,j;j3IV/8wUT>CP&Awh?x%cBD `N^B='/p(s/SzV{<+j(axQ\Vo|ָZ,%AS ?167Rj?ܱ_>rƙǑre!M42iſHXx6%9xq3oNK@?7wqsg|W?veKODjsoF#tK!D?5Ϝ+kw7-|tQah}-@9)‹_2'I? '-uǖ'G- 4wRxGO8T@P"0x̅>2L H1`J)ܸ2$sFI%i"cԂc*o TFxAa>9C _<7"|'oy?@{stTrI3|^f3,i(9bf^~(vY@Og_vZ?Y>c!a6s޽N;kOf^>O[vy6+L$Wmej*@p y')$9YivA):A'0s]_WЩFxelKFϥyhMs Ѣi ,q.3v s G#a3'!ߞwn6h!پx2 |K0IaV; X*V?6;EROfYvjS{VOf]7B;( ?5gfH9uټ8:pY!8 I"vBu\x\Hsc.i}l>iݓ\[TNYﮆ8ShH23Ydbw7D%P7.PY3g I0`EpeνFp3C"w$MD)SKJsWT(ԖSM۽nXY=GL Ix{؀~r"h(!ڲˍ 5 s3+lEΓGU٪%$i-B`'L쫒ݣ{p9CUk؎񍻟}Cf-rۦ 8o~_<v=2VnѽAyo'CCj.}_\;0*eji2rm! ύ|W{ڳvtvnlƏw5:3NZ"yULD*oVbeGOX=_+^̒7o '^ g8eOlj|WY)|+N03?ޙXIJX23&ےH7=m 4aW9W~Sn[=,:ݯ_Wd 謚B=qrzqs |Ϸѕ<9mǰ>?oV)CtSC,Z>ܓDT HeDQ%) L0XD -v޾W`{:,-ܺse= ^|rEIY/I~sA|s|^^:w `];~FzW΍;ud}2`9֡A%6m *#Pp=-U9zvտy*z<}#GɓOd!._uƩSbciazSKAsVu,/ {}rt-5MW5q3Jk'mהSGSoɑ%6#س¾2?lazm'.}8tvŮ(~Kl>g$NJR \S鮄io^u!7"ImgnyČ|?=3M2CteWդA̍o=xnh D2~OQ_=4=ίBtmON-MpAN2 ZRIΪ= S7Bݱ}P$4v3WXB4Zo:zX%A0} reU2:6nfN`tZCw7':(Q.ORn3\ `h>> >Ó,!I w ]@O㾕cKi~XTiv 6ٱl u&Z .`5Cn03xmP=N֋h_",z{#5JaA Ip;3;6$ H`{A:>2; K0!+k߿`jK?xC֍)nٹ"ݟȩ9hq8 Fey`l)D/h uϾ|5'O}dпscb&ā[QW0_="&ɈЏOkL'`|_Ejv;qO{hCoZ[? cs>0;m[j7φKD8r$Q' i {Qsq;O{8j|ʪ;SC־aϗOL@$5vn_>t׀ømʱ1̍n0s2B%JZ2z $Kj@| ɢ >/z;Iu( h=i7N-No`A:< xıuMp=* @`X=Lݵ@u]Vv?=`F7Y22q`cHnp&xс8wjRTd;d${#DZlM8ΉS7#:pR bee Iݹgfֺ}r+Xbj`"f#dW6 Y؝n)rm<SYdΜYaU2$I\k&D(#LȑP+lɪBg_ SU(7[2Od$[LvSh ܁hp@2 4B_{~zGw;M9Gj=PXr$u)D82zݱ!o NI޺q@HZaڲۃ_~bo28ptAfn^I8k3ߑH]#uwb0icdO?#ws]D#$3`h]m~ 7),Mޞ`pit,B^=xʪ7)~K\ TsﱹO8- zBR·vnX_/}1i$ * 5{AQDd Dto7+$lJ#Pq6;Mpd5&۰6-ѽKott߹sBv6)BaH/-t=ƣ 7~qER g4=Y[B@S_#8,w2]wL=t|s:K3BO=-m'Ykw=ۣW JeTIo=uJZ[f;6)!(TJN]g%e3i'6ZqW@]>7>pr;qt}ڔ3YܛVHt_Y[n$r.5C=oܴ^4rݱۢozU$X0]#xznܖϬxf|#᝷ų]ضpVO$;_]֛ס^pajHu:/q&ƞ9+'i"2r6<_ra}-r%1Kc37rЮ&:1x6<%u_inB "vt6U*x]Q s`fצ3\fы9Gm7xء_D_y|;JU y,+%e{<N' nভ\AE(,a!-=M܊3$^m~n6me 4'yYe;c0ɶTo~7,'Vls9YÀ::s7=z@ˢ\VĐrvٶj]*E4y wN^/v=yUڵ~dwVېN>5񾭤.{tg߱=Ií r!C%.u?7#/w~lb.akǎ6eD >9Π?mjV.llo pc/t %Qxz5-"YFq͕r>])Z-\FgN[m*rI|]%Eϟtfp.TK豇+Զ-laz _y޳ix 8w|{neT SU@XO~@zlF'>#7]{Ju{5 .%xO>v]'w.mxlaj'&ݖa_e>5ÓOEHoC[U ~`cEνCe><؍~>V|v5\ϧu{@ ũR n`s+59N2;?SHa=lxp5jD2popO;>t#yK~ԩ_pv<>C#|}|o}j=ЏN>,C?0%w1L/("̆~t^rCB?*"UST׹:+;Ξg{B:t`|otͬ(Vqrf!#+ea:1$N,J.?&#/k{y{YƗYQƢT+D_T՞4N/IUKKGڂ2rV{~䊉+s3!2:7;_8/_vdѥ|uv$03j f0ZVVgnܝ+Dq.ien ON 'B9vSq+Rՙ$&Nx117wV =6+s8Z96VN#ͭȕՙ{Ȏ,zLqL.z->~Ʌb_Ͻod$ kě ǟ(f_̥7ʳclbqI G ґ׉lՑk:sAub3$Pw~j~F9ld[RtLj{^oatW_{Ø%Ȋ ;TYfS$FُKFIFhR=i*&,_ MX>m["3\&-d_W, ! Z VECFcZs@ 0eF@)Nl eAR(J Y^Pn_"=9xw/^PWGɼw m s^O{.%r#&o I\B olH^&5`8[̉nV Dɳo,$h%t$PS+, '##jU>{oTݑ;ݶ @`.><<+nu} -@vB*P0_A |\d.6UT3 (5EwAMܢke3kPLc7ںHJm0DPLd91T(R;B5 3s悄,m΢;r GIy; ?8?cV}'#Q+XgQfQ nr +4K7e a='~FGB1%53W$#AKDf7b o򂰪vṉв@qP;VjdP(|BіsyJ)v*I)AJfLL:4@&D/Y|L?hz,ϚP ]%/"=kudV%lHJeC]y6Vbz@ uJB E  ׁoCsFSHŇNln4D +9oӊzM殗iVb*Jrwjmsy6XS/#⻃ʙf@`VXp,Nv-hCv?njF8Q @# X n2i:"NKh*-uJaZ(,fǹE9{T 8{ʘ&8tt3=%NF26 r8LW3B=*QT$ЄboP##Y9!792$f0.s2AQ!zhI^P)YP KJg*ď0xW7 7V>XbgO!l˴ogS4_6i Eg3QX rq@+\9 $2t ` *hex* TY>E&o"c_|ƵVU 2J^$jsL))#.dD#!^=B;Wh¾doZ\1|-;*#23d9EjrC7:Į@SM &"ʪD, ô>%BXWFyY\RrCr&փ'Yĕ u ubUgU)(٢'AU_JIrD8sXbwTLxU/.l6Pc*OLDOPl&FL'[Y"p-3 Z55 2X<82RRtV '^K>F$+%SHjV -b HNEc맕]р(M(`YQ3"^5ժ'DܐB A< KL*ѨX~5HK?*_Z!3(9! k\+BLp\^pzW T-/ck^QFO` nT'=^P 8 X=] ƆfmIu͞PZKKqTb("@b{ Vmkz=MpE[ ey갡8ɕ}[yƵ=ԀKh=^*;t<j 2)Ֆ?_vq5t#%m5EIeu)G,YKID/ps U] 偤{ԤU$),`kR-47{p 8 _pYT ds"W;=z\s$( <9T5z,])'^ 2:@RcnHƵ )5]@ԭ!#(!2""RzAD0*B"$Ffe !P1V$Q{ 0+k4Dl=j, ׸3KUۼ%戽\VGC# {j*\5ɄZ\(:Vj ]I%_K_"8P,kX}+F+G/y23%QN:k?KuVJ?K-0f0xLWZP*\;~sIh*HXlN-jG/Й;DM0Wg$2:h+<a`{E>~q2ǤNhôDK<8׭)Hͮɷ>I8LZ|G4lU ibQKnY?HK?gEe8s߬*EgX^n<%]ҜJmWgGKt%@ȒJ/?B&Zϊ;,L:z;i^dΏZɌmcXl7nnhe)P;5#FK-Z?!t{8]^%2UGO2pf쁪9D*cMvfX%j+IFΏ'M/ARjJ0G&j) /) D #)@ȌY`ʈ$PwgǍɬer,LЌi.WȔx]ZnATύH\PFW~]:9iȉW\=/OT\T^{0Ֆk0?u$qj1S80 Sk8;.ߜP:pׅ1L/z^%YB= L%3;L.fI G96ۑ)rꄤƉņm' #pdP^ɶ UTZcuFĉ2/Z{y^.BZuc摕Wu6\'ڧ 1L,C.i `8qNL =. `r)~x &2s'psW>>G UNLƍ(Qc]w'.dWgM.zָg;T\~\ʟM~/ukx|dW'Pod{amSRi=>2"iq*8d8ǎ`б}/jf>Ug> (RW-LC,}g?q獠uH({8݅WOrF`jmz&p*t7 (9PR8%;6B Bd,+lyXENuh];zjj' M9s6JQ0¹Ԇ{hK{e_; wW9ƻO>h&K'23w99ƢgRFh!3|i}d8[?_X4N~aC1c{dr.??wVC<6Km,FY#!s`X̠1jZpgJW9ѰxIJFn)e 0CCпc-9N~a߃3aGx~~>&]W&:RN=-Qn5 r23D e! @[>GJ﹩?=cI]fs6DGOh.S0pu0cĩesf}q,UO:]Y23VF+kM%m޻|w@$/"oMM{=}WYdݙ1cYZ©mS^`!,ULWM,G3+4='3;HK<1zzng`'W:ȫ.a 7o_m$X } `탍*dB.mґf?kz R2:0x˰N+^78`ڸ6;WϜ䶛4iKؾi0Qbj|̐'DgI2nMyvR"=V#ۓɪ-V%pM̏u`B"}~s}zƝg+/ixˀ@؆[utR7}t"ꌺ וڽ7u_]=7ɠd`g >n$ٚ^K}>u؝O-U<*E3?'x`b@^؝KZu Q(0yz`:;{ dh .^<{ʷ^(Kpz7t+N]:Oj `u~]G'BMLnޝ9Tq "G?.G:_7 t_}@ hHV4^mnJB%`wgV;ki=ݞJ& xB'ZBAE(;Z"?M6`_YPw(`ig}f~r~_}o3>ə qxW.M#Lx晠w|j]ORzСLz`@̯ڶZ5_7O}u#aIVF2BU9ySӿxi*W#]==Z tZ4lj冖eL;]Ë#̙L~ݟOh1