Presentation is loading. Please wait.

Presentation is loading. Please wait.

604: PeopleSoft for the Oracle DBA

Similar presentations


Presentation on theme: "604: PeopleSoft for the Oracle DBA"— Presentation transcript:

1 604: PeopleSoft for the Oracle DBA

2 2 Project Overview  HRMS 7.5  Local Swiss Payroll  PeopleTools 7.59  employees (33000 current)  127Gb Data, 147Gb Total DB size  3-tier clients ( concurrent users)  Web clients (20-40 concurrent users)  Upgrading to HR8 + GP

3 3 Technical Overview  HP-UX bit  Clustered Servers  HP Service Guard  Oracle >  Multi-Processor Tuxedo Domains  Windows and Web Clients

4 4 QA Production Development Hardware Configuration

5 5 System Specifications  Development System  HP V-Class, Model E 9000/800 CPU:8 RAM:12 GB  Quality Assurance System  HP V-Class, Model E 9000/800 CPU:10/10 RAM:8/8 GB  Production System  HP V-Class, Model E 9000/800 CPU:20/20 RAM:24/10 GB

6 6 EMC Storage Arrays  Storage EMC R1256 disks R2158 disks R3 84 disks Total498 disks x 18 GB = 8.7 TB

7 7 PS 7.5 PS 8 DEVPQUAL UPGR8 HOTL PROD HOTL ENG? PLAY DEVP8 EXP8 MIGR QUAL8PROD8 M I G R DEMO Database Upgrade Path

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

9 9 DBA Team  Good Administrative Practice  Performance Tuning

10 10 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

11 11 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

12 12 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

13 13 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

14 14 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/

15 15 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,,,,  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)

16 16 Session Registration  Windows Client in 2-tier registers by default (7.53)  Application Server configuration parameter EnableDBMonitoring=1  Cobol (from 7.54)  Not used with SQR So we wrote a trigger

17 17 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

18 18 Session Registration Trigger  Prepends Process Instance to client_info create 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 select client_info into l_client_info from v$session where sid = (select sid from v$mystat where rownum = 1); 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; /

19 19 Specification of the Data Model  Two Data Dictionaries  Default Indexes  User Specified Indexes  PT8.1: Platform Specific View definition

20 20 Tools Table -v- DB Catalogue

21 21 Keys & Indexing  Implied from Record Definition  Key  Duplicate  List (not Tools 8)  Alternate Search  Descending  User Specified  Constraints  Suppressing Index build  Sparse Indexing

22 22 Indexes Implied from Record Definition  Key  Duplicate  List (not indexed in Tools 8)  Alternate Search  Descending

23 23 Suppressing Index build  In Application Designer  Tools -> Data Administration -> Indexes -> Change Record Indexes -> Edit Index

24 24 User Specified Index

25 25 Descending Key Index Bug  The following parameter must be added to the init.ora of an Oracle 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)

26 26 Constraints  Unique  Implied by Unique Key Indexes  Mandatory/Not Null  Referential Integrity?  There aren’t any!

27 27 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

28 28 Space Management  DDL models  Default -v- Override parameters  Feeding back reality

29 29 DDL Models  System-wide default storage options

30 30 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

31 31 Default -v- Override parameters  Overrides in application designer

32 32 DDL Model  PSDDLMODEL

33 33 Default Parameters  PSDDLDEFPARMS

34 34 Record Parameter Overrides  PSRECDDLPARM

35 35 Index Parameter Overrides  PSIDXDDLPARM

36 36 Two Data Dictionaries  Compare  Database Catalogue  USER_TABLES, USER_INDEXES  PeopleTools  PSDDLDEFPARMS, PSRECDDLPARM, PSIDXDDLPARM

37 37 Retrofitting Sizing into PeopleTools 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 bundled with presentation or available from 

38 38 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

39 39 Global Temporary Tables  New Feature in Oracle 8.1  Reduced Redo Logging  40%-50% I/O reduction  unrecoverable  Definition is persistent  Content is private & transient to session  not suitable for on-line processing  Useful for temporary tables  Local Swiss Payroll  Financial Batches  No High Water Mark issues  Even faster truncate

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

41 41 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

42 42 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 (,,TRUE);

43 43 Enabling Client Tracing

44 44 Typical Trace Output (PT7.x) 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 Cur#1 RC=0 Dur=0.000 Bind-1 type=2 length=6 value=ACTION Cur#1 RC=0 Dur=0.000 Bind-2 type=2 length=3 value=ENG Cur#1 RC=0 Dur=0.000 COM Stmt=SELECT VERSION FROM PSLOCK

45 45 SQLCLEANUP.EXE 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 \ ACTION,ENG /

46 46 Mass Change/AE/SQR  What you see in the code is what you get  All PS programs can be traced

47 47 Trigger for via process scheduler  PSPRCSRQST create or replace trigger sysadm.set_trace before update of runstatus on sysadm.psprcsrqst for each row when (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; /

48 48 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

49 49 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

50 50 Processed Trace Files on Web  3 files per process,.log,.exeela,.fchela

51 51

52 52 Set trace in session  2-tier client is multithreaded  Small Private Application server  EXECUTE sys.dbms_system.set_sql_trace_in_session (,,TRUE);

53 53 Where does the code come from (PeopleTools 7.x)?  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

54 54 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; /

55 55 Summary  Identified Sessions  Synchronised sizing information in dictionaries  Trace individual processes  Identify where the SQL comes from  Performance Tuning  Control index creation without altering application  Performance Metrics/History

56 56 Questions?

57 604: PeopleSoft for the Oracle DBA


Download ppt "604: PeopleSoft for the Oracle DBA"

Similar presentations


Ads by Google