Category: PeopleSoft HCM 9.0

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

ORA-01502: Indexes in unusable state

I kept getting error messages like this:

ORA-01502: index 'SYSADM.PS_PSAESTMTDEFN' or partition of such index is in unusable state

I found the answer to the problem here:

ORA-01502 Oracle Index in Unusable State

As Katie mentioned in the comments, the status in 10g is UNUSABLE instead of INVALID.

Here is a quick script to rebuild all of the problem indexes:

declare
begin
   for index_rec in (select owner, index_name
                     from dba_INDEXES
                     where status = 'UNUSABLE')
   loop
      execute immediate 'alter index ' || index_rec.owner || '.' ||
          index_rec.index_name || ' rebuild';
   end loop;
end;

HCM90: More Tablespace Sizing

There is a fix out to reduce the database size:

  • Financials: 704935
  • HRMS: 704332
  • Portal: 704763

The only difference between the changes in the fix and what I had previously done,  is the blocksize setting.  As far as I could tell, it really didn’t make a sizeable impact.  What did make a difference was changing the properties on the other tablespaces besides the index tablespace.

Below I have listed some SQL and such that I used to shrink the database and move segments from the tablespaces.

Read More

HCM9.0: Reclaiming Index Space

Analysis

Determining largest indexes by blocks

select index_name, leaf_blocks, num_rows
from dba_indexes
where owner = 'SYSADM'
and leaf_blocks is not null
order by leaf_blocks desc;

Determining indexes with the most free space

I found that the index with the most free space only had 32M free.


select a.owner, a.index_name, a.leaf_blocks, a.num_rows, b.tablespace_name,
b.blocks, b.blocks - a.leaf_blocks free_blocks,
(b.blocks - a.leaf_blocks) * to_number(p.value) / 1024 freespace_k
from dba_indexes a, dba_segments b, v$parameter p
where p.name = 'db_block_size'
and a.owner not in ('SYS', 'SYSTEM')
and a.index_type <> 'BITMAP'
and a.leaf_blocks is not null
and a.owner = b.owner
and a.index_name = b.segment_name
order by free_blocks desc;

Determining index space used by empty tables

One thing I noticed in the previous selection is that a number of indexes were on tables that had no rows, but the index had 128K allocated to them. I found that 21606 indexes matched this scenario totaling about 21G of unused space!

select count(*), sum(b.blocks), sum(b.blocks) * max(to_number(p.value)) / 1024 total_kilobytes
from dba_indexes a, dba_segments b, v$parameter p
where a.index_type <> 'BITMAP"
and a.owner = b.owner
and a.index_name = b.segment_name
and a.leaf_blocks = 0
and a.num_rows = 0
and b.blocks = 128;

Finding the PeopleSoft record name for the Oracle index name

In order to be able to put all of these changes into a PeopleSoft Project, I need to be able to tie the index to a PeopleSoft record. Here is an example join for dba_indexes and PSRECDEFN:

select o.index_name, o.table_name, r.recname
from dba_indexes o, psrecdefn r
where (r.sqltablename = o.table_name or (r.sqltablename = ' ' and o.table_anme = 'PS_' || r.recname))
and rownum < 5;

Creating a Project

I wanted to make PeopleSoft do most of the leg work, and so, my next step was to create a project in Application Designer. This way Application Designer will create all of the project header rows in the database (ex: PSPROJECTDEFN, etc.). I had to add the record for the first index just to be able to save the project. I did all this part manually in Application Designer.

I saved my project as SP_INDEX_REBUILD, but you can choose whatever name you would like. Just make sure that you change the name in the SQL below to the name that you choose.

You can use the first row in the project item table as a template for inserting the rest.

select * from psprojectitem
where projectname = 'SP_INDEX_REBUILD';

So, to insert the rest of the tables into the project, I used the statement in the database:

insert into psprojectitem
select distinct 'SP_INDEX_REBUILD', 0, 1, r.recname, 0, ' ', 0, ' ', 0, ' ', 0, 0, 0, 0, 1, 0
from dba_indexes a, dba_segments b, v$parameter p, psrecdefn r
where (r.sqltablename = a.table_name or (r.sqltablename = ' ' and a.table_name = 'PS_' || r.recname))
and p.name = 'db_block_size'
and a.index_type <> 'BITMAP'
and a.owner = b.owner
and a.index_name = b.segment_name
and a.leaf_blocks = 0
and a.num_rows = 0
and b.blocks = 128
and not exists (select 'x' from psprojectitem where projectname = 'SP_INDEX_REBUILD' and objectvalue1 = r.recname);

Warning: this statement did take some time to run. You may want to see if you can optimize it a little. It took about 20 minutes to complete.

Before I could see the new records attached to the project in Application Designer I had to clear the cache in Configuration Manager.

Inserting Rows for DDL

insert into psidxddlparm
select distinct recname, indexid, 2, 0, 'INIT', 0
from pskeydefn k, psprojectitem p
where k.recname = p.objectvalue1
and p.projectname = 'SP_INDEX_REBUILD'
and not exists (select 'x' from psidxddlparm i
where recname = i.recname
and indexid = i.indexid
and platformid = 2
and parmname = 'INIT');

Updating the rest of the rows

update psidxddlparm
set parmvalue = 0
where recname in (select objectvalue1
from psprojectitem
where objectvalue1 = recname);

Updating the Indexes

I cleared the cache to make sure that Application Designer recognized the new changes that I made in the database.

Then, just changing the indexes is not enough the make Application Designer realize that there is something that needs to be rebuilt. So, you have to change the build properties. On the Alter tab, make sure to “Alter even if no changes”. Then, build the project. I had to use the Alter tables options and not just the Create Indexes option to get it to build.

Added line to init.ora

db_2k_cache_size = 10M

If you don’t add this like, you will get the error message: “ORA-29339: tablespace block size 2048 does not match configure block sizes”.

Creating the new tablespace
create tablespace sp_empty_index
datafile ‘e:\oradata\HCM90\SP_EMPTY_INDEX.DBF’
size 10m
blocksize 2k
extent management local autoallocate
segment space management auto;

ALTER DATABASE DATAFILE ‘e:\oradata\HCM90\SP_EMPTY_INDEX.DBF’
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED;

insert into psidxddlparm
select distinct recname, indexid, 2, 0, ‘INDEXSPC’, ‘sp_empty_index’
from pskeydefn k, psprojectitem p
where k.recname = p.objectvalue1
and p.projectname = ‘SP_INDEX_REBUILD’
and not exists (select ‘x’ from psidxddlparm i
where k.recname = i.recname
and k.indexid = i.indexid
and i.platformid = 2
and i.parmname = ‘INDEXSPC’);

update psidxddlparm
set parmvalue = ‘sp_empty_index’
where recname in (select objectvalue1
from psprojectitem
where objectvalue1 = recname)
and platformid = 2
and parmname = ‘INDEXSPC’;

select ‘alter index sysadm.’ || indexname || ‘ rebuild tablespace sp_empty_index;’
from (select distinct ‘PS’ || indexid || recname as indexname
from pskeydefn
where recname in (select objectvalue1
from psprojectitem
where objectvalue1 = recname)) a;

Reclaiming Space for the File System

I used the notes I made for resizing the database to get the free space to the file system.

PSINDEX was 47.89% free — 13.28G free.

Resources

DBAZine.com: Indexes – Part 2: Is This Index the Right Size?

recycle and keep buffers in other tablespace block sizes

HCM9.0: Resizing the Virtual Hard Drive

Once I reclaimed the hard drive space from my database, I had to shrink the hard drive in order to get my image smaller. Here is what I did.

Shrinking the Partition

I used a version of Linux called Knoppix. You can download it from here.

I never actually burned the image to CD. I just opened the properties of the CD drive in the virtual machine (while it was shutdown) and told it to use the iso image that I downloaded instead of the physical drive.

Determining the how small you can shrink the drive:

sudo ntfsresize --info /dev/sda1

Changing the size of the drive (test)

sudo ntfsresize --no-action --size=42831122432 /dev/sda1

Changing the size of the drive

sudo ntfsresize --size=42831122432 /dev/sda1

Changing the size of the partition

sudo fdisk /dev/sda

  • m for help
  • p for print (note the partition number and type/id)
  • d for delete
  • n for new partition (choose primary and same partition number and desired size +###M)
  • t for changing the partition type/id
  • p for print ( verify everything is the correct)
  • w for write

Shrinking an Unshrinkable Hard Drive

The only way that you can get a smaller hard drive if you can’t shrink the drive is to copy the data to a new virtual drive.

Copy the partition table.

sudo dd if=/dev/sda of=/dev/sdb bs=512 count=1

Copy the partition itself.

sudo dd if=/dev/sda1 of/dev/sdb1

Note: I had to reboot between copying the partition table and the actual partition.

Shrinking a Shrinkable Hard Drive

Shutdown the virtual machine.

From a command window run:

"C:\Program Files\VMware\VMware Server\vmware-mount " m: c:\VirtualMachines\HCM90\Database.vmdk
"C:\Program Files\VMware\VMware Server\vmware-vdiskmanager.exe" -p m:
"C:\Program Files\VMware\VMware Server\vmware-mount " m: /d
"C:\Program Files\VMware\VMware Server\vmware-vdiskmanager.exe" -k WindowsServer2003Standard.vmd

Note: to expand, you would use the -x option

"C:\Program Files\VMware\VMware Server\vmware-vdiskmanager.exe" -x 30Gb WindowsServer2003Standard.vmdk

HCM9.0: Compiling COBOL

Here are the commands that I executed in a command window. Adjust the paths as necessary.
set PS_HOME=c:\pshome\hcm90
set PATH=%ps_home%\src\cbl\win32;%path%
set COBROOT="c:\program files\micro focus\net express\base"
cd %PS_HOME%\setup
cblbld c: \temp\compile

(make sure you have a space between the c: and the \temp\compile)

Here is the output:

ASCII Cobol Compilations Proceeding
Creating Directory c:\temp\compile
Logging progress to file c:\temp\compile\CBLBLD.LOG
COBOL compiler found in “c:\program files\micro focus\net express\base”
The system cannot find the path specified.
Target directory (c:\pshome\hcm90\CBLBINA) exists and is writable

Copying source files …

Building the COBOL targets …
……

That is all there is to it!

HCM9.0: Init Ora File

Here is my Init Ora file for the database of my VMWare image. Hope this helps if you are attempting something similar.  This is what I finally got to work during installation.

DB_NAME = hcm90
DB_FILES = 1021
CONTROL_FILES = (E:\oradata\hcm90\CONTROL01.CTL,
E:\oradata\hcm90\CONTROL02.CTL,
E:\oradata\hcm90\CONTROL03.CTL)
OPEN_CURSORS = 255
db_block_size = 8192
UNDO_MANAGEMENT = AUTO
shared_pool_size = 72265318

Note: I am still trying to get the shared pool size to a good number.  I have lowered it considerably, but before I post that, I need to work out the kinks.  I had to have the shared pool size at 72,265,318 in order to get it to install.  When I had it set lower, I got an error message about memory.

HCM9.0: Resizing the Database

The database of my PeopleSoft HRMS 9.0 VMWare Image was larger than I expected. I had to get the database down to a manageable size so that we can easily make backup copies of the image. Here is what I did:

  • Starting Size: 63.6 Gb
  • Finishing Size: 39.8 Gb

Query to Determine Where to Free Up Space

SELECT a.tablespace_name,
total_free_space,
ROUND(total_free_space / 1042, 2) free_k,
ROUND(total_free_space / 1042 / 1042, 2) free_m,
ROUND(total_free_space / 1042 / 1042 / 1042, 2) free_g,
largest_free_extent,
total_size,
ROUND(total_free_space / total_size *100, 2) percent_free
FROM
(SELECT tablespace_name,
SUM(bytes) total_free_space,
MAX(bytes) largest_free_extent
FROM dba_free_space
GROUP BY tablespace_name)
a,
(SELECT tablespace_name,
SUM(bytes) total_size
FROM dba_data_files
GROUP BY tablespace_name)
b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY 2 DESC;

Query to Determine Files for the Tablespace

SELECT file_name,
file_id,
tablespace_name,
bytes,
ROUND(bytes / 1042 / 1042, 2) mb,
maxbytes,
ROUND(maxbytes / 1042 / 1042, 2) maxmb,
(SELECT ROUND(SUM(bytes) / 1024 / 1024, 2) mb
FROM dba_segments
WHERE tablespace_name = a.tablespace_name
AND header_file = a.file_id)
used_mb,
(SELECT ROUND(((header_block + blocks) *8192) / 1024 / 1024, 2) end_mb
FROM dba_segments
WHERE tablespace_name = a.tablespace_name
AND header_block =
(SELECT MAX(header_block)
FROM dba_segments
WHERE tablespace_name = a.tablespace_name)
)
lastused_position
FROM dba_data_files a
WHERE tablespace_name = ‘PSDEFAULT’;

How I Resized My Tablespaces

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PSINDEX2.DBF’
RESIZE 6266M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\SYSTEM01.DBF’
RESIZE 600M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PSIMAGE.DBF’
RESIZE 1300M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\TLWORK.DBF’
RESIZE 477M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\TLAPP.DBF’
RESIZE 80M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\GPAPP.DBF’
RESIZE 890M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PSUNDOTS01.DBF’
RESIZE 150M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\HRLARGE.DBF’
RESIZE 650M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PTTLRG.DBF’
RESIZE 300M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\HRAPP.DBF’
RESIZE 375M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\SAAPP.DBF’
RESIZE 325M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\CCAPP.DBF’
RESIZE 290M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PY0LRG.DBF’
RESIZE 280M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PTTBL.DBF’
RESIZE 250M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\FAAPP.DBF’
RESIZE 225M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\TLLARGE.DBF’
RESIZE 210M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\AAAPP.DBF’
RESIZE 170M;

ALTER DATABASE DATAFILE ‘E:\ORADATA\HCM90\PSDEFAULT.DBF’
RESIZE 5M;

Resources

Tablespace Information

Alter Tablespace Syntax

Oracle Data & Temp Files

PeopleSoft 9.0 Hard Drive Space

Here is a list of the directories on my PeopleSoft 9.0 HRMS image and their sizes. Hopefully, this will give you an idea of the hard drive space required to install PeopleSoft 9.0 should you want to do something similar.

c:\ 22.2 GB used / 2.75 GB free = 24.9 GB total
  c:\bea = 176 MB
    c:\bea\jre142 = 40.0 MB
    c:\bea\Tuxedo9.1 = 135MB
  c:\Documents and Settings = 598 MB
  c:\install = 1.72 GB
  c:\NetExpressRuntime = 1.38 MB
  c:\oracle = 2.67 GB
    c:\oracle\appserv10g = 738 MB
    c:\oracle\oradata = 1.46 GB
  c:\Program Files = 529 MB
  c:\ps = 303 MB
  c:\psca = 91.6 MB
  c:\pshome = 10.6 GB
    c:\pshome\hcm90\bin = 296 MB
    c:\pshome\hcm90\data = 3.78 GB
    c:\pshome\hcm90\projects = 2.70 GB
    c:\pshome\hcm90\setup = 855 MB
    c:\pshome\hcm90\src = 225 MB
    c:\pshome\hcm90\verity = 2.07 GB
  c:\windows = 2.7 GB
e:\ 63.6 GB used / 16.3 GB free = 79.9 GB total
  e:\oradata\hcm90\PSINDEX.DBF = 23.4 GB
  e:\oradata\hcm90\PSINDEX2.DBF = 23.4 GB
  e:\oradata\hcm90\PSIMAGE.DBF = 2.04 GB
  e:\oradata\hcm90\SYSTEM01.DBF = 2.04 GB
  e:\oradata\hcm90\GPAPP.DBF = 21.94 GB
  e:\oradata\hcm90\TLWORK.DBF = 1.24 GB
  e:\oradata\hcm90\HRLARGE.DBF = 942 MB
  e:\oradata\hcm90\TLAPP.DBF = 800 MB

Getting Oracle 10.2.0.1 to Start Automatically

I previously blogged about installing PeopleSoft HRMS 9 on a VMWare Image. One of the problems I had was getting the database to start automatically with the service when the image boots. We constantly boot and shutdown the image since we can only have one copy of it running at a time.

In my case, the problem appears to be an Oracle bug. Installing a patch fixed the problem. But, here is everything I learned on the issue.

Patch

Downloading the Patch:

  • Log into http://metalink.oracle.com
  • Go to Patches and Updates
  • Click on Simple Search
  • Search for Patch “4547817“, Platform Microsoft Windows (32-bit)
  • Download (543M)

Installing the Patch:

  • Unzipped it
  • Stopped the Web Server, App Server, Process Scheduler, and the Database
  • Ran the setup.exe
  • See the log below, I had to run catupgrd.sql

After Upgrading the oradim log said this:
Tue Jun 12 17:16:50 2007
c:\oracle\db10g\bin\oradim.exe -startup -sid hcm90 -usrpwd * -pfile c:\oracle\db10g\database\initHCM90.ora -log oradim.log -nocheck 0
Tue Jun 12 17:17:09 2007
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option

So, I used the upgrade option as describe here.

sqlplus /nolog
connect / as sysdba
startup upgrade
@c:\oracle\db10g\rdbms\admin\catupgrd.sql

Logs to Check

Specific to the Service:

%oracle_home%\database\oradim.log

Tue Jun 05 15:28:13 2007
c:\oracle\db10g\bin\oradim.exe -startup -sid hcm90 -usrpwd * -pfile c:\oracle\db10g\database\initHCM90.ora -log oradim.log -nocheck 0
Tue Jun 05 15:28:18 2007
ORA-12560: TNS:protocol adapter error

%oracle_home%\database\sqlnet.log

***********************************************************************
Fatal NI connect error 12560, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oraclehcm90)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))’))(CONNECT_DATA=(SID=hcm90)(CID=(PROGRAM=c:\oracle\db10g\bin\oradim.exe)(HOST=PSQA895)(USER=SYSTEM))))

VERSION INFORMATION:
TNS for 32-bit Windows: Version 10.2.0.1.0 – Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 – Production
Time: 05-JUN-2007 15:28:18
Tracing not turned on.
Tns error struct:
ns main err code: 12560
TNS-12560: TNS:protocol adapter error
ns secondary err code: 0
nt main err code: 530
TNS-00530: Protocol adapter error
nt secondary err code: 2
nt OS err code: 0

Specific to the Listener

%oracle_home%\network\log\listener.log

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 – Production on 05-JUN-2007 15:28:09

Copyright (c) 1991, 2005, Oracle. All rights reserved.

System parameter file is c:\oracle\db10g\network\admin\listener.ora
Log messages written to c:\oracle\db10g\network\log\listener.log
Trace information written to c:\oracle\db10g\network\trace\listener.trc
Trace level is currently 0

Started with pid=348
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=psqa895)(PORT=1521)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
05-JUN-2007 15:29:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=orcl)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.150.25)(PORT=1040)) * establish * orcl * 12514

Other

&oracle_home%\sqlnet.log

The Service and the Registry

Deleting the Service:

At the command prompt> oradim -delete -sid <SID>

If either that doesn’t work or you have uninstalled, you have to open regedit and delete the following key:

HKLM\System\CurrentControlSet\Services\OracleService<SID>

Recreating Your Service:

At the command prompt>
oradim -new -sid <SID> -intpwd <password> -startmode AUTO -pfile <oracle_home>\database\init<SID>.ora

Other Registry Settings:

HKLM\Software\Oracle\Key_<Oracle Home Name>\ORA<SID>_AUTOSTART
Start the database when the service starts

HKLM\Software\Oracle\Key_<Oracle Home Name>\ORA<SID>_PFILE
Location of the Configuration File

HKLM\Software\Oracle\Key_<Oracle Home Name>\ORA<SID>_SHUTDOWN
Shutdown the database when the service stops

HKLM\Software\Oracle\Key_<Oracle Home Name>\ORA<SID>_SHUTDOWNTYPE
type of shutdown to do when stopping the server

Helpful Links

Windows Service Not Starting Your Database?

ORA-12560 on NT

Thread: ORACLE not available problem 10g release 2

Thread: DB not open, with Windows Service