1 peoplesoft for the oracle dba session 627 [email protected]

59
1 PeopleSoft for the Oracle DBA Session 627 [email protected] www.go-faster.co.uk

Upload: barrie-hamilton

Post on 24-Dec-2015

227 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

1

PeopleSoft for the Oracle DBA

Session [email protected]

www.go-faster.co.uk

Page 2: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

2

Project Overview

HRMS 7.5

Local Swiss Payroll

PeopleTools 7.59

45000 employees (33000 current)

127Gb Data, 147Gb Total DB size

3-tier clients (200-280 concurrent users)

Web clients (20-40 concurrent users)

HRMS 8

Global Payroll

PeopleTools 8.15

All Users via PIA

Page 3: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

3

Technical Overview

HP-UX 11 64-bit

Clustered Servers

HP Service Guard

Oracle 8.0.5

PT 7.59

Windows and Web Clients

Oracle 8.1.7.2

PT 8.15.01

PeopleSoft Internet Architecture

Page 4: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

4

System Specifications Development System

•HP V-Class, Model E 9000/800CPU: 8RAM: 12 GB

Quality Assurance System•HP V-Class, Model E 9000/800

CPU: 10/10RAM: 8/8 GB

Production System•HP V-Class, Model E 9000/800

CPU: 20/20RAM: 24/10 GB

Page 5: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

5

Challenges

Large HRMS implementation Lots of customisations Payroll is a ‘financial’ batch Oracle bugs Performance Problems

Page 6: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

6

DBA Team

Good Administrative Practice Performance Tuning

Page 7: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

7

DBA Team

Good Administrative Practice Performance Tuning

• logical structure of the database•SQL tuning• I/O and physical structure•Resource contention•Bugs•New Features in Oracle 8.1•Object Sizing

Page 8: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

8

Techniques

Who is logged in and what are they doing?

Specification of the data model How to SQL_TRACE PeopleSoft Where does the code come from? Performance Metrics

Page 9: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

9

Who is logged in and what are they doing?

Definition of ‘database’ What happens at login

•PT7.5 -v- PT8

Session Registration•2-tier client•Application Server•Other Batches

Page 10: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

10

What happens when you connect to PeopleTools 7.x?

Connect=H75D/PS/

EXECUTE :1 := SQLCQR_LOGINCHECK(:2)

SELECT OWNERID FROM PS.PSDBOWNER WHERE DBNAME = ‘H75D’

SELECT OWNERID,TOOLSREL,TO_CHAR(LASTREFRESHDTTM,'YYYY-

MM-DD HH24:MI:SS'), TO_CHAR(LASTCHANGEDTTM,'YYYY-MM-

DD HH24:MI:SS'), SECURITY_OPTION FROM SYSADM.PSLOCK

SELECT VERSION, OPRTYPE, OPERPSWD, ACCESSID, ACCESSPSWD

FROM SYSADM.PSOPRDEFN WHERE OPRID = ‘PS’

Connect=H75D/SYSADM/

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD

HH24.MI.SS."000000"') FROM PSCLOCK

SELECT VERSION FROM PSLOCK

Page 11: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

11

What happens when you connect to PeopleTools 8.1?

Connect=GP81O81/PEOPLE/

SELECT OWNERID FROM PS.PSDBOWNER WHERE DBNAME = 'GP81O81'

SELECT OWNERID, TOOLSREL, TO_CHAR(LASTREFRESHDTTM,'YYYY-

MM-DD HH24:MI:SS'), TO_CHAR(LASTCHANGEDTTM,'YYYY-MM-DD

HH24:MI:SS') FROM SYSADM.PSSTATUS

SELECT VERSION, OPERPSWD, ENCRYPTED, SYMBOLICID, ACCTLOCK

FROM SYSADM.PSOPRDEFN WHERE OPRID = 'PS'

SELECT ACCESSID, ACCESSPSWD, ENCRYPTED FROM

SYSADM.PSACCESSPRFL WHERE SYMBOLICID = 'SYSADM1'

Connect=GP81O81/SYSADM/

SET type=2012 program=pstools.exe

SET type=2 OprId=PS

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD-HH24.MI.SS."000000"')

FROM PSCLOCK

Connect=GP81O81/SYSADM/

Page 12: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

12

Session Registration

Problem: Everybody connects to the database as ‘sysadm’.

Oracle provides a PL/SQL package•DBMS_APPLICATION_INFO writes string to

sys.v$session.client_info<Operator ID>,<OS user name>,<machine name>,<domain ID>,<program name>

above is PT8.1 string

•eg.PS,david,GO-FASTER-1,PT81,PSSAMSRV.EXE,

•PeopleSoft uses this package from 7.53 (Cobol from 7.54)

Page 13: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

13

Session Registration

Windows Client in 2-tier registers by default (7.53)

Application Server configuration parameterEnableDBMonitoring=1

Cobol (from 7.54)

Not used with SQR(from 8.1x) prcsapi.src

Page 14: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

14

Session Registration Trigger

When a process is started by the process scheduler it updates its own status • from 6 (initiated)• to 7(processing) •see this from process monitor

•so, place a trigger on this transition•works with Cobol and SQR•does not work with PS/Query-Crystal,

nVision, DBAgents because their status is updated by different application server process - PSSAMSRV

Page 15: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

15

Session Registration Trigger Prepends Process Instance to

client_infocreate or replace trigger psprcsrqst_register

before update of runstatus on psprcsrqst for each row

when (new.runstatus = 7 and old.runstatus != 7

and not new.prcstype IN('Crystal','PSJob','Database Agent','nVision-

ReportBook'))

declare

l_client_info varchar2(64);

begin

sys.dbms_appplication_info.read_client_info(l_client_info);

l_client_info:=SUBSTR(TO_CHAR(:new.prcsinstance)||','||

l_client_info,1,64);

sys.dbms_application_info.set_client_info(l_client_info);

exception when others then null;

end;

/

Page 16: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

16

Specification of the Data Model

Two Data Dictionaries Default Indexes User Specified Indexes PT8.1: Platform Specific View

definition

Page 17: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

17

Tools Table -v- DB Catalogue

Table Description Oracle Table PeopleTools Table

Data Definition

1 row per table/view DBA_TABLESDBA_VIEWS

PSRECDEFN

1 row per column DBA_TAB_COLUMNS PSRECFIELD

1 row per distinct column name PSDBFIELD

1 row per view DBA_VIEWS PSVIEWTEXT

1 row per synonym DBA_SYNONYMS

1 row per index DBA_INDEXES PSINDEXDEFN

1 row per indexed column DBA_IND_COLUMNS PSKEYDEFN

Security

1 row per oprid DBA_USERS(PeopleTools <=7.x)

PSOPRDEFN

Grant for table access DBA_TAB_PRIVS

Page 18: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

18

Keys & Indexing

Implied from Record Definition• Key

• Duplicate

• List (not Tools 8)

• Alternate Search

• Descending

User Specified Constraints Suppressing Index build Sparse Indexing

Page 19: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

19

Indexes Implied from Record Definition

Key• Duplicate

List (not indexed in Tools 8) Alternate Search Descending

Page 20: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

20

Suppressing Index build

In Application Designer•Tools -> Data Administration -> Indexes -

> Change Record Indexes -> Edit Index

Page 21: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

21

User Specified Index

Page 22: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

22

Descending Key Index Bug

The following parameter must be added to the init.ora of an Oracle 8.1.x instance

BEFORE you build descending key indexes.

EVENT='10612 trace name context forever, level 1’

_ignore_desc_in_index = TRUE

This takes care of several bugs found related to DESC INDEXES (errant ORA-3113s)

Page 23: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

23

Constraints

Unique• Implied by Unique Key Indexes

Mandatory/Not Null Referential Integrity?

• There aren’t any!

Page 24: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

24

Temporary Tablespaces

Create tablespace ‘ORATEMP’ Alter tablespace TEMPORARY

• can only contain temporary segment

• cannot contain any other object

• no redo logging

• alter temporary tablespace for all users

Don’t do this to PSTEMP

Page 25: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

25

Space Management

DDL models Default -v- Override parameters Feeding back reality

Page 26: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

26

DDL Models

System-wide default storage options

Page 27: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

27

Parameters

PeopleSoft Parameters•Square Brackets

TBNAME, TBCOLLIST, IDXNAME, IDXCOLLIST, TBSPCNAME

User Parameters•** delimited

Delivered (Oracle) INIT, NEXT, MAXEXT, PCT, INDEXSPC, BITMAP

Other possibilites COMPRESS, PREFIX LENGTH, PCTFREE, PCTUSED, NOLOGGING, BUFFER POOL

Page 28: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

28

Default -v- Override parameters

Overrides in application designer

Page 29: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

29

DDL Model

PSDDLMODELField Name Type Length Attributes Description

STATEMENT_TYPE Nbr 1 Key Statement Type1 = Table2 = Index3 = Unique Index4 = Tablespace

PLATFORMID Nbr 2 Key Platform ID0 = SQLBase1 = DB22 = Oracle3 = Informix4 = DB2/Unix5 = ALLBASE6 = Sybase7 = Microsoft8 = DB2/400

SIZING_SET Nbr 3 Key Sizing Set

PARMCOUNT Nbr 3 Parameter Count

MODEL_STATEMENT Long 0 Model SQL Statement

Page 30: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

30

Default Parameters

PSDDLDEFPARMS

Page 31: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

31

Record Parameter Overrides

PSRECDDLPARM

Page 32: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

32

Index Parameter Overrides

PSIDXDDLPARM

Page 33: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

33

Two Data Dictionaries

Compare•Database Catalogue

USER_TABLES, USER_INDEXES•PeopleTools

PSDDLDEFPARMS, PSRECDDLPARM, PSIDXDDLPARM

Page 34: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

34

Retrofitting Sizing into PeopleTools 7.5x Data Dictionary

NOT SUPPORTED BY PEOPLESOFT•Possible to copy the sizing information in

USER_TABLES and USER_INDEXES back into the Tools tables

Why is this useful?•An object is rebuilt during an upgrade•Sizing information is preserved

scripts available from•http://www.go-faster.co.uk

Page 35: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

35

Retrofitting Sizing into PeopleTools 8.1x Data Dictionary

NOW SUPPORTED BY PEOPLESOFT

•settables.sqr•setindex.sqr

copies database data dictionary value back into PeopleSoft Data Dictionary

• issues on Oracle Global Temporary tables have NULL storage options

resulting in 0 values in PeopleSoft

Page 36: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

36

Limitations of the DDL Model

The following object cannot be created by the DDL Model• Index Organised Tables•Partitions•Global Temporary Tables•Clusters

Maintained manually by the DBA outside of PeopleTools•Structure of column list still inside

PeopleTools

Page 37: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

37

Tablespaces with Uniform Extent Size

Attribute of Locally Managed Tablespaces from Oracle 8.1

Possible in prior versions if rely on tablespace default storage option

Every segment same size. Every free space also same size Space allocation algorithm will

naturally use up spaces at bottom of tablespace

Less fragmentation No need to coalesce tablespace

Page 38: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

38

Global Temporary Tables New Feature in Oracle 8.1 Definition is persistent Content is private & transient to session

•not suitable for on-line processing due to multi-threaded nature of application server

Reduced Redo Logging•unrecoverable•significant I/O reduction

min overhead 80 bytes/row

No Permanent Tablespace space overhead•physically exist in temporary tablespace.

Page 39: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

39

Uses for temporary tables It is better to design a process not to

temporarily store large amounts of data in the database in a permanent object in the first place.

Local Swiss Payroll Financial Batches Global Payroll

•Application engine & Cobol make extensive use of temporary working tables.

No High Water Mark issues• table created fresh for every session/transaction

Even faster truncate

Page 40: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

40

What is Partitioning?

Logically,•a partitioned table is a still a single table

Physically,•each partition is a separate table.• in a range partitioned table, the partition

in which a row is placed is determined by the value of one or more columns.

Local Index• is partitioned on the same logical basis as

the table.

Page 41: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

41

How should Partitioning used in GP?

Largest Result tables range each partitioned on EMPLID to match GP streaming• 1 stream : 1 partition

• Thus each stream references one partition in each result table.

• Only 1 interested transaction per block

• Indexes ‘locally’ partitioned

Partitioning really designed for DSS systems. Only efficient for large tables.• GP_RSLT_ACUM, GP_RSLT_ERN_DED,

• GP_RSLT_PIN, GP_RSLT_PI_DATA

• GP_PYE_PRC_STAT, GP_PYE_SEG_STAT

Page 42: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

42

SQL Tracing

Client Batches (AE, SQR) Reports (Crystal, nVision, PS/Query) Tracing with Triggers Where does the code come from

Page 43: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

43

SQL Optimisation

SQL_TRACE = TRUE; Embed command Trigger on processes via process

scheduler• PSPRCSRQST

Set trace in session• 2-tier client is multithreaded

• Small Private Application server

Page 44: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

44

SQL_TRACE = TRUE;

Initialisation Parameter

TIMED_STATISTICS = TRUE In current session

ALTER SESSION SET SQL_TRACE=TRUE; In another session

EXECUTE sys.dbms_system.set_sql_trace_in_session (<sid>,<serial#>,TRUE);

Page 45: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

45

Enabling Client Tracing

Page 46: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

46

Typical Trace Output

1-2285 0.861 Cur#1 RC=0 Dur=0.000 COM Stmt=SELECT

VERSION, FIELDVALUE, TO_CHAR(EFFDT,'YYYY-MM-DD'),

EFF_STATUS, XLATLONGNAME, XLATSHORTNAME,

TO_CHAR(LASTUPDDTTM,'YYYY-MM-DD-HH24.MI.SS."000000"'),

LASTUPDOPRID, FIELDNAME, LANGUAGE_CD, EFFDT FROM XLATTABLE

WHERE FIELDNAME = :1 AND LANGUAGE_CD = :2 ORDER BY

FIELDNAME, LANGUAGE_CD, FIELDVALUE, EFFDT

1-2286 0.000 Cur#1 RC=0 Dur=0.000 Bind-1 type=2

length=6 value=ACTION

1-2287 0.000 Cur#1 RC=0 Dur=0.000 Bind-2 type=2

length=3 value=ENG

1-2288 0.111 Cur#1 RC=0 Dur=0.000 COM Stmt=SELECT

VERSION FROM PSLOCK

Page 47: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

47

SQLCLEANUP.EXESELECT VERSION,

FIELDVALUE,

TO_CHAR( EFFDT,

'YYYY-MM-DD' ),

EFF_STATUS,

XLATLONGNAME,

XLATSHORTNAME,

TO_CHAR( LASTUPDDTTM,

'YYYY-MM-DD-HH24.MI.SS."000000"' ),

LASTUPDOPRID,

FIELDNAME,

LANGUAGE_CD,

EFFDT

FROM XLATTABLE

WHERE FIELDNAME = :1

AND LANGUAGE_CD = :2

ORDER BY FIELDNAME, LANGUAGE_CD, FIELDVALUE, EFFDT

\

ACTION,ENG

/

Page 48: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

48

Application Engine / SQR

What you see in the code is what you get•All PS programs can be traced

Page 49: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

49

Trigger for via process scheduler

PSPRCSRQST

create or replace trigger sysadm.set_tracebefore update of runstatus on sysadm.psprcsrqstfor each rowwhen (new.runstatus = 7 and old.runstatus != 7 and NOT new.prcstype IN('Crystal','PSJob', 'Database Agent','nVision-ReportBook') and ...)

)begin sys.dbms_session.set_sql_trace(true);end;/

Page 50: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

50

How developers can enable SQL_TRACE

Check the box Only the next execution of this

process is traced • then the box will be unchecked

Log of traced executions

Page 51: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

51

Then what happens?

SQL trace is enabled by a trigger When the process terminates, the

trace file is processed with TKPROF Two additional files produced

• i) statements sorted by elapsed execution time

• ii) statements sorted by elapsed fetch time

Top 10 Statements only Execution plans

Page 52: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

52

Page 53: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

53

Set trace in session

2-tier client is multithreaded Small Private Application server

• EXECUTE sys.dbms_system.set_sql_trace_in_session (<sid>,<serial#>,TRUE);

Page 54: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

54

Where does the code come from? Application Engine

•no bind variables - literal values

PS/Query• table aliases A, B, C, A1, B1 …

Panel Processor•mostly upper case SQL

PeopleCode (scroll functions)•upper case select and from clause• lower case where clause with litteral values

SQR •mixed case with bind variable :1, :2 …• three character table aliases

Page 55: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

55

Performance Metrics Process Scheduler Table - PSPRCSRQST Trigger to capture history into an archive table

CREATE OR REPLACE TRIGGER SYSADM.psprcsrqst_archive

before delete on SYSADM.psprcsrqst

for each row

begin

insert into SYSADM.ps_prcsrqstarch

(PRCSINSTANCE

, ...

) values

(:new.PRCSINSTANCE

, ...

);

EXCEPTION WHEN OTHERS THEN NULL;

end;

/

Page 56: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

56

Summary Identified Sessions Synchronised sizing information in

dictionaries Global Temporary Tables Partitioned Tables Trace individual processes Identify where the SQL comes from Performance Tuning Control index creation without altering

application Performance Metrics/History

Page 57: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

57

Questions?

Page 58: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

58

And there’s more

Configuring Global Payroll for Optimal Performance

Session 527•Wednesday 10.30 - 11.30

Round Table Discussion session 626•Wednesday 15.30 - 16.30•Discuss some areas in more detail.

Page 59: 1 PeopleSoft for the Oracle DBA Session 627 david.kurtz@go-faster.co.uk

59

PeopleSoft for the Oracle DBA

Session [email protected]

www.go-faster.co.uk