Managing Oracle E-Business Suite R12.2

This is a sub-post to Installing Oracle E-Business Suite R12.2.

After installing R12.2.0 you can start to manage the installation.

There are a few things you need to be aware of and that will also come in handy for your R12.2.2 upgrade.

Login

Use the following URL:

http://hpserver.kentw:8000

Or if you use localhost:

http://localhost.localdomain:8000

image

Login:

User Name: sysadmin

Password: sysadmin

VIS.SH Script

Login as oracle.

We need a vis.sh script to set environment so we can run administrative commands for startup and shutdown.

However in the new R12.2 architecture the environment changes between fs1 and fs2 depending on the latest adop session.

To enable run file system (fs1):

. /oracle/VIS/EBSapps.env run

To enable patch file system (fs2):

. /oracle/VIS/EBSapps.env patch

To ensure opatch works correctly do the following or include in vis.sh:

# OPATCH_PLATFORM_ID=226; export OPATCH_PLATFORM_ID

This should already be set in vis.sh script.

In order to always get the correct run environment use the R12.2.2 env file with our own script:

Create a script like this for vis.sh:

# vi vis.sh

#/usr/bin/bash

. $HOME/EBSapps.env run

DBFS=/oracle/VIS/11.2.0

OID=VIS_hpserver

DBSCRIPTS=$DBFS/appsutil/scripts/$OID

PATCH_TOP=$APPL_TOP_NE/../patch;export PATCH_TOP

OPATCH_PLATFORM_ID=226; export OPATCH_PLATFORM_ID

alias addbctl=$DBSCRIPTS/addbctl.sh

alias addlnctl=$DBSCRIPTS/addlnctl.sh

alias adstrtal=$ADMIN_SCRIPTS_HOME/adstrtal.sh

alias adstpall=$ADMIN_SCRIPTS_HOME/adstpall.sh

alias adadminsrvctl=$ADMIN_SCRIPTS_HOME/adadminsrvctl.sh

alias adopmnctl=$ADMIN_SCRIPTS_HOME/adopmnctl.sh

alias adcmctl=$ADMIN_SCRIPTS_HOME/adcmctl.sh

alias runenv=". $HOME/EBSapps.env run"

alias patchenv=". $HOME/EBSapps.env patch"

alias dbenv=". $DBFS/$OID.env"

alias vis=". $HOME/vis.sh"

alias ops="ps -fed | grep VIS | wc -l"

alias opsl="ps -fed | grep VIS

# chmod +x vis.sh

Run it like this in $HOME:

# cd

# . vis.sh

Or add it to $HOME/.bashrc:

if [ -f $HOME/vis.sh ]; then

   . $HOME/vis.sh

fi

You can also add two functions for running full start and stop:

startall(){

        $DBSCRIPTS/addlnctl.sh start VIS

        $DBSCRIPTS/addbctl.sh start

        echo Oracle122 | $ADMIN_SCRIPTS_HOME/adstrtal.sh apps/apps

}

stopall(){

        echo Oracle122 | $ADMIN_SCRIPTS_HOME/adstpall.sh apps/apps

        $DBSCRIPTS/addbctl.sh stop

        $DBSCRIPTS/addlnctl.sh stop VIS

}

You might get a warning but it can be ignored:

stty: standard input: Invalid argument

EBSapps.env

This is the environment script created from the R12.2.2 patch. This is good to use for R12.2.0 as well.

Create the file in $HOME.

To enable run file system (fs1):

. $HOME/EBSapps.env run

To enable patch file system (fs2):

. $HOME/EBSapps.env patch

Create the file from this source:

#!/bin/sh

#

# *===========================================================================+

# |

# | Copyright (c) 2001, 2009, 2011 Oracle and/or its affiliates.

# | All rights reserved.

# |

# +===========================================================================+

# |

# | FILENAME

# | EBSapps_ux.env

# |

# | DESCRIPTION

# | This env file displays the following information:

# | – Location of RUN File System

# | – Location of PATCH File System

# | – Location of Non-Editioned File System

# | – DB Hostname and SID

# |

# | It gives provision to source the RUN or PATCH file system.

# |

# | On Shared APPL_TOP, this script sources the RUN or PATCH env file, based on

# | the hostname of the Application tier node from which this script is run.

# |

# |

# | USAGE

# | PLATFORM

# | Unix Generic

# |

# | NOTES

# |

# | HISTORY

# |

# +===========================================================================+

# $Header: EBSapps_ux.env 120.0.12020000.8 2013/05/10 13:20:28 ttsharma noship $

node_info_file=’/oracle/VIS/fs2/FMW_Home/Oracle_EBS-app1/applications/oacore/APP-INF/node_info.txt’

CHOICE="xxx"

if [ ! -f $node_info_file ]

then

other_node_info_file=’/oracle/VIS/fs1/FMW_Home/Oracle_EBS-app1/applications/oacore/APP-INF/node_info.txt’

if [ ! -f $other_node_info_file ]

then

printf "\nNode info file $node_info_file is not found."

printf "\nEBSapps.env: exiting with status 1 (Fail)\n\n"

return 1;

else

node_info_file=$other_node_info_file

fi

fi

host_name=`hostname|sed ‘s/\..*//g’`

CTXFILE=`grep -i $host_name:CONTEXTFILE $node_info_file | sed ‘s/^.*[^=]=//g; s/ *$//g’`

if [ ! -f $CTXFILE ]

then

printf "\nContext file $CTXFILE is not found."

printf "\nEBSapps.env: exiting with status 1 (Fail)\n\n"

return 1;

fi

if [ $# -gt 1 ]

then

printf " Too many arguments specified."

printf "\n Allowed arguments are \"run\" or \"patch\"\n"

return 1

fi

if [ $# -eq 1 ]

then

INPUT_CHOICE=`echo $1|tr ‘[A-Z]’ ‘[a-z]’`

if [ "xx${INPUT_CHOICE}" != "xx" ]

then

if [ "${INPUT_CHOICE}" = "run" -o "${INPUT_CHOICE}" = "patch" ]

then

CHOICE=`echo ${INPUT_CHOICE}|cut -c1`

shift

else

printf " Invalid argument \"$1\""

printf "\n Valid arguments are \"run\" or \"patch\"\n"

shift

return 1

fi

fi

fi

edition_type=`grep "\"s_file_edition_type\"" $CTXFILE | sed ‘s/^.*s_file_edition_type[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

currentFS=`grep "\"s_current_base\"" $CTXFILE | sed ‘s/^.*s_current_base[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

otherFS=`grep "\"s_other_base\"" $CTXFILE | sed ‘s/^.*s_other_base[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

neFS=`grep "\"s_ne_base\"" $CTXFILE | sed ‘s/^.*s_ne_base[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

context_name=`grep "\"s_contextname\"" $CTXFILE | sed ‘s/^.*s_contextname[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

if [ "$edition_type" = "patch" ]

then

RUN_BASE=$otherFS

PATCH_BASE=$currentFS

else

RUN_BASE=$currentFS

PATCH_BASE=$otherFS

fi

NON_EDITIONED_BASE=$neFS

#### Display the E-Business Suite related information #####

printf "\n E-Business Suite Environment Information\n"

printf " —————————————-\n"

printf " RUN File System : $RUN_BASE/EBSapps/appl\n"

printf " PATCH File System : $PATCH_BASE/EBSapps/appl\n"

printf " Non-Editioned File System : $NON_EDITIONED_BASE\n"

DB_HOST=`grep "\"s_dbhost\"" $CTXFILE | sed ‘s/^.*s_dbhost[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

DB_DOMAIN=`grep "\"s_dbdomain\"" $CTXFILE | sed ‘s/^.*s_dbdomain[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

DB_QUALIFIED_DOMAIN_NAME="$DB_HOST.$DB_DOMAIN"

SID=`grep "\"s_dbSid\"" $CTXFILE | sed ‘s/^.*s_dbSid[^>.]*>[ ]*\([^<]*\)<.*/\1/g; s/ *$//g’`

printf " DB Host: $DB_QUALIFIED_DOMAIN_NAME Service/SID: $SID\n"

#### Prompt to select and set the RUN or PATCH environment #####

if [ "$CHOICE" = "xxx" ]

then

printf "\n E-Business Suite Environment Setting\n"

printf " ————————————\n"

printf " – Enter [R/r] for sourcing Run File System Environment file, or\n"

printf " – Enter [P/p] for sourcing Patch File System Environment file, or \n"

printf " – Enter anything else to exit\n"

printf "\n Would you like to set the E-Business Suite environment [R/P]:"

read CHOICE

CHOICE=`echo $CHOICE|tr ‘[A-Z]’ ‘[a-z]’`

fi

CONTEXT_ENV_FILE_NAME="APPS"$context_name".env"

if [ "$CHOICE" = "r" ]

then

if [ ! -f $RUN_BASE/EBSapps/appl/$CONTEXT_ENV_FILE_NAME ]

then

printf "\nEnvironment file $RUN_BASE/EBSapps/appl/$CONTEXT_ENV_FILE_NAME is not found."

printf "\nEBSapps.env: exiting with status 1 (Fail)\n\n"

return 1;

else

printf "\n Sourcing the RUN File System …\n\n"

. $RUN_BASE/EBSapps/appl/$CONTEXT_ENV_FILE_NAME

fi

elif [ "$CHOICE" = "p" ]

then

if [ ! -f $PATCH_BASE/EBSapps/appl/$CONTEXT_ENV_FILE_NAME ]

then

printf "\Environment file $PATCH_BASE/EBSapps/appl/$CONTEXT_ENV_FILE_NAME is not found."

printf "\nEBSapps.env: exiting with status 1 (Fail)\n\n"

return 1;

else

printf "\n Sourcing the PATCH File System …\n\n"

. $PATCH_BASE/EBSapps/appl/$CONTEXT_ENV_FILE_NAME

fi

fi

#### Reset the edition_type variable so that it is not set as an env variable ####

edition_type=""

CTXFILE=""

CHOICE=""

Startup

Login as oracle.

# . ./vis.sh

# addlnctl start VIS

# addbctl start

# adstrtal apps/apps

Enter the WebLogic Server password: Oracle122

Wait with login until you have around 130 oracle VIS processes running:

# ps -fed | grep VIS | wc -l

Shutdown

Login as oracle.

# . ./vis.sh

# adstpall apps/apps

Enter the WebLogic Server password: Oracle122

Before shutting down the database be sure that background jobs are fully shut down:

# ps -fed | grep VIS

Wait until you only have processes with "ora_????_VIS" processes and the "tnslsnr VIS" process remaining.

If there are processes hanging you can kill then manually; but wait for a few minutes:

# kill -9 {process id}

Or do something like this in case there is many hanging processes:

# ps -fed | grep oracleVIS | while read a b c;do kill -9 $b;done

Now shutdown the database:

# addbctl stop

# addlnctl stop VIS

Login as root.

To halt the system:

# shutdown -h now

Session Timeout

Login to apps as sysadmin

Update system profile:

ICX:Session Timeout = 300

SQLNET Security

If you want to connect from an external computer you need to remove security on the tnslistener:

# vi /oracle/VIS/11.2.0/network/admin/VIS_hpserver/sqlnet_ifile.ora

tcp.validnode_checking = no

Bounce tns listener:

# addlnctl stop VIS

# addlnctl start VIS

If this is not set you will get ORA-12537: TNS:connection closed

Cold Backup

The easiest way to make a backup is to make a cold backup; which means to fully shut down the system and copy all the files.

Shutdown system:

# adstpall apps/apps

Enter the WLSADMIN password: Oracle122

# addbctl stop

# addlnctl stop VIS

Besure everything is shut down before making cold backup.

Make backup:

# cd /oracle

# cp -r –preserve VIS {backupdir}/VISv{version}

Start system again:

# addbctl start

# addlnctl start VIS

# adstrtal apps/apps

Enter the WLSADMIN password: Oracle122

Patching using ADOP

This is just a short list to remember how to run this beast.

In general I specify workers=1 to save memory but if you have enough just remove this statement.

Normal patch application:

# adop phase=prepare,apply patches={patch[,patch…]}

# adop phase=finalize

# adop phase=cutover

# adop phase=cleanup

Hotpatch:

# adop phase=apply hotpatch=yes patches={patch[,patch…]}

Clone – copy file system between fs1 and fs2

# adop phase=fs_clone

Retry (if failed)

# adop phase=apply patches={patch[,patch…]} restart=yes abandon=no

Abort (if failed and cannot be fixed):

# adop phase=abort

If you are low on memory you can reduce the number of workers:

# adop phase=apply {hotpatch=yes} patches={patch[,patch…]}  workers=1

Managing Concurrent Manager

Check status of concurrent manager:

# adcmctl status apps/apps

Manually starting concurrent manager:

# adcmctl start apps/apps

Manually stopping concurrent manager:

# adcmctl stop apps/apps

Manually force stopping concurrent manager – in case it is not shutting down:

# adcmctl abort apps/apps wait=y

Top Linux Command

This is useful is you are not sure what is running or not.

Basic command:

# top

Monitor a single user:

# top -u oracle

Inside top you can also change sort order

image

Type shift+f

image

Select a sort order and type enter…

Like: k+enter for %CPU

Xming

Instead of using Konsole you can use a xming on your PC:

http://sourceforge.net/projects/xming/

Create a text file with xlaunch extension per user like this (example for root):

image

Containing:

<?xml version="1.0"?>

<XLaunch xmlns="http://www.straightrunning.com/XmingNotes"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.straightrunning.com/XmingNotes XLaunch.xsd"

WindowMode="MultiWindow"

ClientMode="StartProgram"

Program="xterm"

ClientStart="PuTTY"

PW="oracle"

RemoteHost="hpserver"

RemoteUser="root"

Display="2"

Clipboard="true"

/>

Double-click on the file and you get:

image

As this window is running on your PC you will be able to copy and paste between Windows and Linux.

  • Copy from Linux to Windows: Select text in xming window and paste in Windows using ctrl-v
  • Copy from Windows to Linux: Copy text in Windows and paste in xming using middle mouse button

Installing KDE Partition Manager

Download from: http://rpmfind.net/linux/rpm2html/search.php?query=kde-partitionmanager

yum -y install cmake

yum -y install kdelibs-devel

yum -y install libuuid-devel

yum -y install libblkid-devel

yum -y install parted-devel

unzip partitionmanager*

cd partitionmanager

mkdir build

cd build

cmake ..

make

make install

KDE Partition Manager should now be available in the KDE application menu.

Weblogic

Not that you would need this; but just in case:

http://hpserver:7001

image

Click GO on top left:

Username: weblogic

Password: Oracle122

image

Workflow Manager

In case the manager is inactive:

image System Administrator>Concurrent>Manager>Administer

Administer Concurrent Managers

Name

Workflow Agent Listener Service

image Activate

image System Administrator>Concurrent>Requests

Concurrent Program

Name

Workflow Background Process

Parameters

Item Type

Minimum Threshold

Maximum Threshold

Process Deferred

Yes

Process Timeout

Yes

Process Stuck

Yes

Schedule

Run the Job

Periodically

Start At

{default}

Re-run

5 Minutes

Apply the Interval

From the Completion of prior run

Increment date parameters each run

No

image OK

image Submit

Errors

WebADI Issues

  • BNE_UIX_PHYSICAL_DIRECTORY is not configured: Clear system profile option “BNE UIX Physical Directory”
  • BNE:EXCEL2000 is an invalid Viewer Key: Set both system profile “GL : Default Desktop Viewer” to: Excel 2010
  • After changing the above bounce the middle tier

FSCloneApply

Normally I don’t refer to a lot of errors but this one is a nasty one and there is no references anywhere.

You will get errors like this is you did not ensure file system 2 port pool starts with 2.

FSCloneApply

*******FATAL ERROR*******

PROGRAM : txkADOPPreparePhaseSynchronize.pl

FUNCTION: main::migrateCloneComponentApply [ Level 1 ]

ERRORMSG: adclone.pl did not go through successfully.

[ERROR] Error occurred while executing

txkADOPPreparePhaseSynchronize.pl

[ERROR] Error occurred while CONFIG_CLONE PATCH FS with RUN FS using command: txkADOPPreparePhaseSynchronize.pl

Creating new WLS domain.

Running pasteConfig.sh

Script Executed in 1902 milliseconds, returning status 255

Script failed, exit code 255

SEVERE : CLONE-20372 Server port validation failed.

SEVERE : CLONE-20372 Ports of following servers – AdminServer(7001) – are not available.

SEVERE : CLONE-20372 Provide valid free ports.

oracle.as.t2p.exceptions.FMWT2PPasteConfigException: PasteConfig failed.

Make sure that the move plan and the values specified in moveplan are correct.