Setting Up the PeopleSoft Installation with Oracle RAC

This section contains an overview and discusses the process to set up PeopleSoft installation with Oracle RAC.

An Oracle RAC configuration is a multi-Oracle instance environment that uses cluster software to communicate between different Oracle instances and cluster members.

You must use the manual database creation procedure, described in the PeopleTools installation guide if you are installing on an Oracle RAC database. The manual procedure gives you the ability to specify multiple mounting points for raw devices, edit database setup scripts, and edit Data Mover scripts.

See PeopleSoft 9.2 Application Installation for Oracle: ”Creating a Database Manually on UNIX".

See PeopleSoft 9.2 Application Installation for Oracle: "Creating a Database Manually on Windows".

To use the Oracle RAC system with PeopleTools, the cluster environment must support the cluster file system. Before beginning the implementation, verify that your system satisfies the following requirements:

  • Oracle data files and control files must be raw devices unless a cluster file system is supported by the cluster software.

  • Each data file or control file is a single raw device that must be shareable to all cluster members.

  • You must have installed Operating System Cluster Software.

  • You must have installed the RAC version of the Oracle database.

  • You must modify certain operating system parameters.

See Oracle® Real Application Clusters Installation and Configuration Guide for your Oracle version.

Use the following guidelines in setting up the Oracle RAC database:

  • Follow the instructions in the PeopleTools installation guide for creating a database manually on either UNIX or Windows.

  • Edit the following scripts as per the instructions in the manual database creation instructions:

    • CREATEDB18.SQL

      NN represents your Oracle database version.

    • UTLSPACE.SQL

    • XXDDL.SQL

      XX is a two-letter code for the PeopleSoft application.

  • Create an ORACLE_SID for each Oracle instance.

    Each Oracle instance must have its own ORACLE_SID and its own Oracle initialization file. Within each specific Oracle initialization file, you must define the thread, instance_number, instance_thread, undo tablespaces, the name of a common initialization file, and service name. Within the common initialization file, you must specify the control files and the value cluster_database=true.

You must create raw volumes for each tablespace and control file which the database uses unless a cluster file system is supported by the cluster software. The following list is an example of raw devices and sizes used in the XXDDL.SQL script.

Raw Devices Function

Example Names

Sizes (MB)

Oracle Instance required:

None

NA

Control file 1

None

NA

Control file 2

None

NA

System

/dev/vg_rac/rlv_system

350

Sysaux

/dev/did/rdsk/rlv_sysaux

500

Log 1

/dev/did/rdsk/rlv_log1

190

Log 2

/dev/did/rdsk/rlv_log2

190

Log 3

/dev/did/rdsk/rlv_log3

190

Log 4

/dev/did/rdsk/rlv_log4

190

Undo 1

/dev/did/rdsk/rlv_psundo1

300

Undo 2

/dev/did/rdsk/rlv_psundo2

300

Temp

/dev/did/rdsk/rlv_pstemp

100

Default

/dev/did/rdsk/rlv_psdefault

250

You must edit the CREATEDB18.SQL script to so that the database has:

  • sufficient maxinstances.

  • sufficient maxlogfiles.

  • different logfiles for each Oracle instance.

  • a different thread for each Oracle instance.

Example: Original CREATEDB18.SQL

The following is an unmodified CREATEDB18.SQL file.

create database   <SID>
    maxdatafiles  1021
    maxinstances  1
    maxlogfiles   8
    maxlogmembers 4
    CHARACTER SET WE8ISO8859P15
    NATIONAL CHARACTER SET AL32UTF8
0240K MAXSIZE UNLIMITED<SID>/system01.dbf' SIZE 2000M REUSE AUTOEXTEND ON NEXT 1EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/oradata/<SID>/sysaux01.dbf' SIZE 120M REUSE AUTOEXTEND ON
NEXT  10240K MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/oradata/<SID>/temp01.dbf' SIZE
20M REUSE AUTOEXTEND ON NEXT  640K MAXSIZE UNLIMITED
M REUSE AUTOEXTEND ON NEXT  5120K MAXSIZE UNLIMITEDSID>/psundots01.dbf' SIZE 300
LOGFILE GROUP 1 ('/u01/oradata/<SID>/redo01.log') SIZE 100M,
        GROUP 2 ('/u01/oradata/<SID>/redo02.log') SIZE 100M,
        GROUP 3 ('/u01/oradata/<SID>/redo03.log') SIZE 100M;

Example: CREATEDB18.SQL Modified for RAC

The following is an example of a CREATEDB18.SQL used for setting up Oracle RAC.

create database   RAC
   		 maxdatafiles  1021
    		maxinstances  2
   		 maxlogfiles   8
    		maxlogmembers 4
    		character set WE8ISO8859P15
   	 datafile
       		 '/dev/did/rdsk/rlv_system'      size 350M
SYSAUX DATAFILE '/dev/did/rdsk/rlv_sysaux' SIZE 500M
UNDO TABLESPACE PSUNDO1 DATAFILE '/dev/did/rdsk/rlv_psundo1' SIZE 300M   
maxinstances  2
	    logfile
       		 '/dev/did/rdsk/rlv_log1'         size 190M,
       		 '/dev/did/rdsk/rlv_log2'         size 190M;
   	 alter database add logfile thread 2
       		 '/dev/did/rdsk/rlv_log3'         size 190M,
       		 '/dev/did/rdsk/rlv_log4'         size 190M;
   	 alter database enable thread 2;

Edit the UTLSPACE.SQL script to create an additional UNDO tablespace, and to specify the correct raw devices for the tablespaces. Each Oracle instance needs its own UNDO tablespace. The following examples use the names and locations given in the section Creating Raw Devices.

Modify the script to include the following statement for the second UNDO tablespace:

CREATE UNDO TABLESPACE PSUNDO2
DATAFILE              '/dev/did/rdsk/rlv_psundo2'
REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
;

Modify the script to specify raw devices. This example is for the PSTEMP tablespace:

REM * Create a temporary tablespace for database users.
REM *
CREATE TEMPORARY TABLESPACE PSTEMP
TEMPFILE              '/dev/did/rdsk/rlv_pstemp'           SIZE 300M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
;

Edit the XXDDL.SQL script (xx is a two-letter code for your product line) to reflect the correct tablespace naming and tablespace sizing if you are using raw devices. For example, to specify the size of the PSIMAGE tablespace:

CREATE TABLESPACE PSIMAGE DATAFILE '/dev/did/rdsk/rlv_psimage' SIZE 100M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE

In addition, for Oracle RAC, autoextend of tablespaces is not supported if you are using raw devices. Do not uncomment the autoextend SQL statements in the xxddl.sql script.

Each Oracle instance must have its own ORACLE_SID and its own Oracle initialization file. For example:

Oracle initialization file for first Oracle Instance where ORACLE_SID=RAC1:

InitRAC1.ora:

  instance_name=RAC1
  instance_number=1
  thread=1
  ifile= initRAC.ora
  service_names=RAC
  undo_tablespace=PSUNDO1

Oracle initialization file for second Oracle Instance where ORACLE_SID=RAC2:

InitRAC2.ora:

  instance_name=RAC2
  instance_number=2
  thread=2
  ifile= initRAC.ora
  service_names=RAC
  undo_tablespace=PSUNDO2

The following is the common Oracle initialization file. This file contains the following parameters that must be listed in addition to the regular Oracle initialization file parameters.

initRAC.ora

  compatible = 10.1.0
  cluster_database=true
  cluster_database_instances=2
  undo_management=auto
  undo_tablespace=PSUNDO1
  control_files=/dev/did/rdsk/rlv_cnt1
  open_cursors=300

Note: Any control_files must be changed to raw devices if there is no cluster file system support.

There must be an entry in ps.psdbowner for each Oracle instance. The Owner ID field must be the same for all entries and the DBNAME must be a name that PeopleSoft software uses in its connection to the Oracle database. There can be multiple entries in ps.psdbowner depending on how tnsnames.ora is set up.

Make sure the ps.psdbowner table contains entries to the multiple DBNAMES and Owner IDs. For example:

DBNAMES      Owner ID
--------     ---------
RAC1         RAC1
RAC2         RAC1

To add an entry to the ps.psdbowner table, use SQL*Plus; for example:

sqlplus>RAC1/RAC1
Insert into ps.psdbowner values ('RAC2','RAC1');
Commit;

As a safeguard, the information on database security is defined in two locations. The tnsnames.ora file includes an ADDRESS_LIST containing an IP address and a unique CONNECT_DATA (SERVICE_NAME) for each cluster member. Each corresponding listener.ora file includes this unique SERVICE_NAME and the INSTANCE_NAME that is associated with it.

Example: TNSNAMES.ORA File

The following is a sample tnsnames.ora file:

rac =
  (DESCRIPTION =
   (load_balance=on)
      (ADDRESS = (PROTOCOL = TCP) (host = myserver.example.com) (port
= 1521))
      (ADDRESS = (PROTOCOL = TCP) (host = 192.0.2.10) (port = 1521))
   (CONNECT_DATA =
      (service_name = rac)
   )
  )


rac1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP) (host = myserver.example.com) (port =
1521))
    (ADDRESS = (PROTOCOL = TCP) (host = myserver.example.com) (port = 1521))
    (CONNECT_DATA =
      (service_name = rac)
    )
  )

rac2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP) (host = 192.0.2.10) (port = 1521))
    (ADDRESS = (PROTOCOL = TCP) (host = myserver.example.com) (port = 1521))
    (CONNECT_DATA =
      (service_name = rac)
    )
)

Example: TNSLISTENER.ORA File

The following is a sample listener.ora file.

SID_LIST_LISTENER_PT-SUN30 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /products/oracle/192.0.2.10-64bit)
      (PROGRAM = extproc)
    )
  )

SID_LIST_LISTENER_PT-SUN29 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /products/oracle/192.0.2.10-64bit)
      (PROGRAM = extproc)
    )
  )

LISTENER_PT-SUN30 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.10)(PORT = 1521))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.10)(PORT = 1521))
      )
    )
  )

LISTENER_PT-SUN29 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT
= 1521))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.10)(PORT = 1521))
      )
    )
  )

To start the listener, use the following command, where <CLUSTER_MEMBER> is the name of the cluster member in the listener.ora file:

lsntrctl start <CLUSTER_MEMBER>

For example, to start the listener on the first cluster member in the example above, use the following command:

lsntrctl start LISTENER_PT-SUN29

When configuring application server and Process Scheduler server domains, keep these items in mind:

  • Make sure that the PS_MACH field in the application server configuration file corresponds to the proper IP address for the cluster member. It may be using the internal connection IP address for the cluster.

  • The DBNAME specified in the domain configuration file must be one of the values in ps.psdbowner.

  • Configure additional application servers and Process Scheduler servers to point to the additional RAC instance.