Step By Step Virtual PS Install: Creating the Image

Click here for the complete list of articles

This is the first part in creating a virtual image with PeopleSoft HR installed.  We will use VMWare Server for the virtual machine and the host machine is a linux machine.  The PeopleSoft server will be Linux too so that everything is installed from downloads.  Of course, this will not be a production ready machine, but it should work great for learning and testing purposes.  You can always deviate from the instructions enough to use Windows or other supported tools if you wish.

VMWare server can be installed easily enough using these instructions:

Install VMware Server 1.0.6 on Ubuntu 8.04 “Hardy”

Installation on other host operating systems is not difficult.  You should be able to use any host operating system you like assuming that it is supported by VMWare.  You can download VMWare Server directly from here:

VMWare Server

Once installed, log in and click the create a new virtual machine — click the “Create a new virtual machine” button.

This will open the wizard to create the new machine.

Next, choose a typical image.

Next, choose Linux and Red Hat Enterprise Linux for the version.

Next, choose a name for the new virtual machine.

Next, choose a networking option.  If you wish to transfer files using Windows File Sharing, you may want to choose bridged.  This gives you the ability to access files from other computers/servers on the network.  If you are on a computer with multiple ethernet cards like a laptop with a wired and wireless card, you might want to choose NAT so that you don’t have to worry about which one should be mapped to the machine.

Next, choose a hard drive size.  It works best/easiest if you choose a huge size like 100G and don’t allocate now.  This makes the hard drive flexible, and you don’t have to worry about trying to make it larger later.  The image will take as much as it needs without crashing.  If you need to delete files and conserve space later you can and then shrink the hard drive to free up the space on the host.

Finally, click Finish, and you should have a new empty virtual computer.

Change Assistant Error

Here is an error that I ran across and how I fixed it.

Error in EMHub error log:

<Jul 17, 2008 2:53:48 PM EDT> <Notice> <Stdout> <000000> <WARN [ACTIVE] ExecuteT
hread: ‘0’ for queue: ‘weblogic.kernel.Default (self-tuning)’ EMF_CATEGORY – Una
ble to register peer com.peoplesoft.emf.peer:id=2 with the EMHub>

Error that PSAgent gives:

ERROR main EMF_CATEGORY – Error while connecting to ‘http://pserv01:8000/PSEMHUB /hub’.
ERROR main EMF_CATEGORY – Error: Internal Exception: – Error registering peer
ERROR main EMF_CATEGORY – Error while connecting to server – retrying attempt 1

The fix was to reset the GUI

Viewing:

select GUID from PSOPTIONS

Updating:

UPDATE PSOPTIONS SET GUID = ‘ ‘

Then, you need to restart the application server and the web server.

Resource

Setting Up Change Assistant

Determine Last Update Date of a File

We have had trouble with our interface picking up the wrong file.  The client thinks they have put the file in the right place, but the server is looking at a different file for some reason.  Placing the date/time in the standard output helps identify these situations.  Here is how you can do that:

Local JavaObject &javaFile;
Local JavaObject &javaFormat;

&javaFile = CreateJavaObject(“java.io.File”, “c:\temp\myFile.txt”);
&javaFormat = CreateJavaObject(“java.text.SimpleDateFormat”, “yyyy/MM/dd hh:mm:ss aa”);
MessageBox(0, ” “, 0, 0, File Timestamp: %1”, &javaFormat.format(&javaFile.lastModified()));

Startup Scripts

Sohan asked about my start up scripts for booting all of the PeopleSoft services.  I have been wanting to document this anyway in case I need it again.

Here is the setup — I had trouble with the Oracle database not starting, and so, I found it easier to start the whole system this way.  The system is a single user VMWare instance, and so, I simply put the main batch file in the Startup folder of the Start menu.

So, here is my main script.  This script just simply calls the other scripts.

@echo off
echo -------------------------------------------------------------------------
echo Starting Database
echo -------------------------------------------------------------------------
cmd /c startDatabase
echo -------------------------------------------------------------------------
echo Starting App Server
echo -------------------------------------------------------------------------
cmd /c startAppServer
echo -------------------------------------------------------------------------
echo Starting Batch Server
echo -------------------------------------------------------------------------
cmd /c startBatchServer
echo -------------------------------------------------------------------------
echo Starting Web Server
echo -------------------------------------------------------------------------
cmd /c startWebServer

Here is the startDatabase script:

@echo off
sqlplus "/ as sysdba" @startup.sql

You will also need this SQL file to make it work.

startup
exit

Here is the startAppServer script:

@echo off
c:
cd \pshome\appserv
psadmin -c boot -d HCM90

Here is the startBatchServer script:

@echo off
c:
cd \pshome\appserv
psadmin -p start -d HCM90

Here is the startWebServer script — this assumes that you have installed the PIA as a service but set it to Manual start:

@echo off
net start Oracle-HCM90ProcessManager

Oracle Tip: Dropping a Database

Here is how to drop a database in Oracle.

Make sure that have ORACLE_SID set first.

Log into sqlplus with sysdba privileges:

sqlplus /nolog
connect / as sysdba

Run the following commands in sqlplus:

shutdown immediate
startup restrict mount exclusive

Before you complete the drop, verify that you are in the correct database — the one that you want to drop (thanks to Dan Norris’ comment):

select * from v$database;

Now you can drop the database.

drop database;

Tuxedo Install Error

I have been attempting to install Tuxedo on Oracle Enterprise Linux 5.  The installation presented several problems, and so, I thought it might be helpful to blog the fixes.

Both errors appear to be part of the InstallAnywhere installation system.  So, the fixes that I found were not specifically for Tuxedo or even PeopleSoft/Bea.

The first error output looked like this:

awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
hostname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/tmp/install.dir.5362/Linux/resource/jre/bin/java:
error while loading shared libraries: libpthread.so.0: cannot open
shared object file: No such file or directory
Tuxedo 9.1 base installation complete

I found the fix here.  Basically, you comment out the part of the script that sets the LD_ASSUME_KERNEL variable.  You can’t just use any text editor or even vi because the file actually contains the binary installation files zipped up in it.  Instead, this sed command seems to work:

cd linux/sles9/base/
cp tuxedo91_32_SLES_9_x86.bin ../Install.bak
chmod +w tuxedo91_32_SLES_9_x86.bin
cat ../Install.bak | sed "s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/" > tuxedo91_32_SLES_9_x86.bin

That fixed part of the problem.  But, I still received this error:

awk: cmd. line:6: warning: escape sequence `\.' treated as plain `.'
=======================================================

Installer User Interface Mode Not Supported

Unable to load and to prepare the installer in console or silent mode.

=======================================================

The awk… message looks like it is a problem, but that can be ignored.  A couple of searches showed that other people’s successful installs had this error message.  As best I can tell, the problem lies in the packaged version of Java.

To fix the problem, I first had to install Java.  GCJ comes installed by default.  I installed Sun’s Java 1.5 by downloading and installing jdk-1_5_0_16-linux-i586-rpm.bin.

Then, I found an article that explains how to override the JVM used by the installer.  To make this work, you need to edit (with either the vi command or the gedit command) the install.sh.  Change the line from (line #259):

        sh $INSTALL_BINARY -f $SILENT_INSTALL_FILE > $INSTALLER_OUTPUT;

to:

        sh $INSTALL_BINARY LAX_VM /usr/java/jdk1.5.0_16/bin/java -f $SILENT_INSTALL_FILE > $INSTALLER_OUTPUT;

After that fix, tuxedo finally installed for me!

Resources

Writing to Access Databases

We are thinking about connecting to an Access database for one of our interfaces.  Here is some PeopleCode that I threw together to make sure that it was possible.

I tested the code in a VMWare instance with HCM8.9/Tools 8.46, Windows Server 2003.  The instance did not have Microsoft Access installed, and I changed the path (c:\temp\AccessTest.mdb below) to a network (UNC) path where the computer had Access installed.

Local JavaObject &class;
Local JavaObject &connection;
Local JavaObject &driverManager;
Local JavaObject &statement;

&class = GetJavaClass("java.lang.Class");
&class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

&driverManager = GetJavaClass("java.sql.DriverManager");
&connection = &driverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\temp\AccessTest.mdb;DriverID=22;READONLY=false");
&statement = &connection.createStatement();
&statement.executeUpdate("insert into tblTest(TestMessage) values ('testing')");

Hope it helps.

Resources