SELECT DISTINCT ltrim (rtrim (a.classid)) AS classid, ltrim (rtrim (b.menuname)) AS menuname, ltrim (rtrim (b.barname)) AS barname, ltrim (rtrim (b.baritemname)) AS baritemname, ltrim(rtrim(d.pnlname)) AS pnlname, ltrim (rtrim (d.itemlabel)) AS itemlabel, ltrim (rtrim (e.itemlabel)) AS itemlabel, ltrim(rtrim(c.pageaccessdescr)) AS pageaccessdescr, b.displayonly, ltrim (rtrim (f.portal_label)) AS portal_label, ltrim (rtrim (f.portal_objname)) AS portal_objname, ltrim(rtrim(f.portal_uri_seg1)) AS portal_uri_seg1, ltrim (rtrim (f.portal_uri_seg2) ) AS portal_uri_seg2, (SELECTCASE WHEN ltrim(rtrim(descr)) = ''THEN ltrim(rtrim(menulabel))ELSE ltrim(rtrim(descr))ENDFROM psmenudefnWHERE menuname = b.menuname) || ' > ' || ltrim(rtrim(f.portal_label)) AS pathFROM psroleclass a, psauthitem b, pspgeaccessdesc c, pspnlgroup d, psmenuitem e, psprsmdefn f, psprsmperm gWHERE a.classid = b.classidAND d.pnlgrpname = e.pnlgrpnameAND b.menuname = e.menunameAND b.barname = e.barnameAND b.baritemname = e.itemname--AND a.rolename LIKE 'GLIC_PO%'AND b.menuname NOT IN ('APPLICATION_DESIGNER', 'CLIENTPROCESS', 'DATA_MOVER ', 'IMPORT_MANAGER ', 'OBJECT_SECURITY ', 'QUERY ', 'PERFMONPPMI ')AND b.menuname NOT LIKE 'WEBLIB%' AND B.PNLITEMNAME IN (SELECT DISTINCT PNLNAMEFROM PSFSSYS.PSPNLFIELDwhere RECNAME ='PYMNT_ADVICE')AND NOT EXISTS (SELECT 'x'FROM psprsmsysattrvlWHERE portal_name = f.portal_nameAND portal_reftype = f.portal_reftypeAND portal_objname = f.portal_objnameAND portal_attr_nam = 'PORTAL_HIDE_FROM_NAV'AND f.portal_objname NOT IN ('CO_NAVIGATION_COLLECTIONS', 'PORTAL_BASE_DATA'))AND b.authorizedactions = c.authorizedactionsAND f.portal_reftype = 'C'AND f.portal_cref_usgt = 'TARG'AND f.portal_name = g.portal_nameAND f.portal_reftype = g.portal_reftypeAND f.portal_objname = g.portal_objnameAND a.classid = g.portal_permnameAND b.classid = g.portal_permnameAND f.portal_name = 'EMPLOYEE'AND f.portal_uri_seg1 <> ' 'AND f.portal_uri_seg2 <> ' 'AND f.portal_uri_seg3 <> ' 'AND f.portal_uri_seg1 = b.menunameAND b.pnlitemname = d.itemname WITH UR;
SQLs below have proved to be great while working behind the scenes and creating report about PeopleSoft customizations. These are quick ways to get behind the scenes and see the objects the way PeopleSoft sees it.
Getting fields and records for a page:
select OCCURSLEVEL as level ,FIELDNUM as taborder, LBLTEXT as label , RECNAME as record ,FIELDNAME as field from PSFSSYS.PSPNLFIELD where PNLNAME ='PORTAL_HPCOMP'order by OCCURSLEVEL, FIELDNUM
Get information about Project Compares :
SELECT PROJECTNAME, VERSION, PROJECTDESCR, TGTSERVERNAME, TGTDBNAME, TGTOPRID, TGTOPRACCT, COMPRELEASE, SRCCOMPRELDTTM, TGTCOMPRELDTTM, COMPRELDTTM, KEEPTGT, TGTORIENTATION, COMPARETYPE, COMMITLIMIT, REPORTFILTER, MAINTPROJ, LASTUPDDTTM, LASTUPDOPRID, RELEASELABEL, RELEASEDTTM, OBJECTOWNERID, DESCRLONG FROM PSPROJECTDEFN
Get Record Audit Flags:
SELECT RECNAME, FIELDNUM, FIELDNAME, INTEGER(USEEDIT / 8) - INTEGER (USEEDIT / 16) * 2 as "ADD", INTEGER(USEEDIT / 128) - INTEGER(USEEDIT / 256)*2 as "CHANGE", INTEGER(USEEDIT / 1024) - INTEGER(USEEDIT/ 2048)*2 as "DELETE" FROM PSRECFIELD WHERE RECNAME = 'PSOPRDEFN' and USEEDIT <> 0 AND (INTEGER (USEEDIT / 128) - INTEGER (USEEDIT / 256) * 2 <> 0 OR INTEGER (USEEDIT / 8) - INTEGER (USEEDIT / 16) * 2 <> 0 OR INTEGER (USEEDIT / 1024) - INTEGER (USEEDIT / 2048) * 2 <> 0) ORDER BY RECNAME, FIELDNUM;
Get Record Field Types and Definitions:
-- GET RECORD NAME DEFINITION SELECT A.RECNAME, A.FIELDNAME, CASE WHEN B.FIELDTYPE = 0 THEN 'CHAR' WHEN B.FIELDTYPE = 1 THEN 'LONG CHAR' WHEN B.FIELDTYPE = 2 THEN 'NUMBER' WHEN B.FIELDTYPE = 3 THEN 'SIGNED NBR' WHEN B.FIELDTYPE = 4 THEN 'DATE' WHEN B.FIELDTYPE = 5 THEN 'TIME' WHEN B.FIELDTYPE = 6 THEN 'DATETIME' WHEN B.FIELDTYPE = 7 OR B.FIELDTYPE = 8 THEN 'IMAGE' ELSE NULL END AS FIELDTYPE, CASE WHEN B.FIELDTYPE = 2 OR B.FIELDTYPE = 3 THEN RTRIM (CHAR (B.LENGTH))|| '.'||CHAR (B.DECIMALPOS) ELSE CHAR (B.LENGTH) END AS FLDLEN, CASE WHEN (A.USEEDIT/ 256)/ 2 <> (A.USEEDIT/ 256)/ 2.0 THEN 'YES' ELSE 'NO' END AS REQ, CASE WHEN A.USEEDIT/ 2 <> A.USEEDIT/ 2.0 THEN 'KEY' WHEN (A.USEEDIT/ 2)/ 2 <> (A.USEEDIT/ 2)/ 2.0 THEN 'DUP' WHEN (A.USEEDIT/ 16)/ 2 <>(A.USEEDIT/16)/ 2.0 THEN 'ALT' ELSE NULL END AS KEY_TYPE, CASE WHEN (A.USEEDIT / 64) / 2 <> (A.USEEDIT/64)/2.0 THEN 'DESC' WHEN (A.USEEDIT / 2 <> A.USEEDIT / 2.0 OR (A.USEEDIT / 2) / 2 <> (A.USEEDIT / 2) / 2.0 OR (A.USEEDIT / 16) / 2 <> (A.USEEDIT / 16) / 2.0) AND (A.USEEDIT / 64) / 2 = (A.USEEDIT / 64) / 2.0 THEN 'ASC' ELSE NULL END AS DIR, CASE WHEN (A.USEEDIT / 2048) / 2 <> (A.USEEDIT / 2048) / 2.0 THEN 'YES' ELSE 'NO' END AS SRCH, CASE WHEN (A.USEEDIT / 32) / 2 <> (A.USEEDIT / 32) / 2.0 THEN 'YES' ELSE 'NO' END AS LIST, CASE WHEN (A.USEEDIT / 4)/ 2 <>(A.USEEDIT / 4)/ 2.0 THEN 'YES' ELSE 'NO' END AS SYS, CASE WHEN A.DEFRECNAME = '' THEN A.DEFFIELDNAME ELSE RTRIM(A.DEFRECNAME)|| '.'|| A.DEFFIELDNAME END AS DEFAULT_VALUE, CASE WHEN (A.USEEDIT / 8) / 2 <> (A.USEEDIT / 8) / 2.0 AND (A.USEEDIT / 128) / 2 = (A.USEEDIT / 128) / 2.0 AND (A.USEEDIT / 1024) / 2 = (A.USEEDIT / 1024) / 2.0 THEN 'A' WHEN (A.USEEDIT / 8) / 2 <> (A.USEEDIT / 8) / 2.0 AND (A.USEEDIT / 128) / 2 <> (A.USEEDIT / 128) / 2.0 AND (A.USEEDIT / 1024) / 2 = (A.USEEDIT / 1024) / 2.0 THEN 'AC' WHEN (A.USEEDIT / 8) / 2 <> (A.USEEDIT / 8) / 2.0 AND (A.USEEDIT / 128) / 2 <> (A.USEEDIT / 128) / 2.0 AND (A.USEEDIT / 1024) / 2 <> (A.USEEDIT / 1024) / 2.0 THEN 'ACD' WHEN (A.USEEDIT / 8) / 2 = (A.USEEDIT / 8) / 2.0 AND (A.USEEDIT / 128) / 2 <> (A.USEEDIT / 128) / 2.0 AND (A.USEEDIT / 1024) / 2 = (A.USEEDIT / 1024) / 2.0 THEN 'C' WHEN (A.USEEDIT / 8) / 2 = (A.USEEDIT / 8) / 2.0 AND (A.USEEDIT / 128) / 2 <> (A.USEEDIT / 128) / 2.0 AND (A.USEEDIT / 1024) / 2 <> (A.USEEDIT / 1024) / 2.0 THEN 'CD' WHEN (A.USEEDIT / 8) / 2 = (A.USEEDIT / 8) / 2.0 AND (A.USEEDIT / 128) / 2 = (A.USEEDIT / 128) / 2.0 AND (A.USEEDIT / 1024) / 2 <> (A.USEEDIT / 1024) / 2.0 THEN 'D' ELSE NULL END AS AUDT, CASE WHEN (A.USEEDIT / 16384) / 2 <> (A.USEEDIT / 16384) / 2.0 THEN 'PROMPT' WHEN (A.USEEDIT / 512) / 2 <> (A.USEEDIT / 512) / 2.0 THEN 'XLAT' WHEN (A.USEEDIT / 8192) / 2 <> (A.USEEDIT / 8192) / 2.0 THEN 'Y/N' ELSE NULL END AS EDIT, A.EDITTABLE AS PROMPT_TABLE, A.SETCNTRLFLD AS SET_CONTROL_FLD, CASE WHEN (A.USEEDIT / 4096) / 2 <> (A.USEEDIT / 4096) / 2.0 THEN 'YES' ELSE 'NO' END AS REASONABLE_DT, CASE WHEN (A.USEEDIT / 32768) / 2 <> (A.USEEDIT / 32768) / 2.0 THEN 'YES' ELSE 'NO' END AS AUTO_UPDT, CASE WHEN (A.USEEDIT / 262144) / 2 <> (A.USEEDIT / 262144) / 2.0 THEN 'FROM' WHEN (A.USEEDIT / 524288) / 2 <> (A.USEEDIT / 524288) / 2.0 THEN 'THROUGH' ELSE NULL END AS SEARCH_FIELD, CASE WHEN A.SUBRECORD = 'Y' THEN 'YES' ELSE 'NO' END AS SUBRECORD, A.LASTUPDDTTM, A.LASTUPDOPRID FROM PSRECFIELD A, PSDBFIELD B WHERE A.RECNAME = 'PSOPRDEFN' AND A.FIELDNAME = B.FIELDNAMEORDER BY FIELDNUM
Get Field Translate Values:
SELECT fieldvalue, eff_status, xlatlongname FROM psxlatitem i WHERE fieldname = 'RUNSTATUS' AND effdt = ( SELECT max(effdt) FROM psxlatitem i1 WHERE i1.fieldname = i.fieldname AND i1.fieldvalue = i.fieldvalue AND i1.effdt <= CURRENT DATE) ORDER BY INTEGER(fieldvalue)
Get information about PS Queries:
-- Get Query DefinitionSELECT OPRID, QRYNAME, DESCR, VERSION, LASTUPDDTTM, LASTUPDOPRID, QRYAPPROVED, CREATEOPRID, CREATEDTTM, QRYDISABLED, QRYFOLDER, DESCRLONG FROM PSFSSYS.PSQRYDEFN where QRYNAME = '?' and oprid = '?'with ur; -- Get Query Bind VariablesSELECT OPRID, QRYNAME, BNDNAME, BNDNUM, FIELDNAME, HDGTYPE, HEADING, FIELDTYPE , LENGTH, DECIMALPOS, FORMAT, EDITTABLE, USECOUNT, USEEDIT FROM PSFSSYS.PSQRYBIND where QRYNAME like '?%' and oprid = '?' with ur; -- Get Query CriteriaSELECT OPRID, QRYNAME, SELNUM, CRTNUM, COMBTYPE, NEGATION, LPARENLVL, LCRTSELNUM, LCRTFLDNUM, CONDTYPE, EXPRTYPE, R1CRTSELNUM, R1CRTFLDNUM, R1CRTEXPNUM, R2CRTSELNUM, R2CRTFLDNUM, R2CRTEXPNUM, RPARENLVL, QRYOJSELNUM FROM PSFSSYS.PSQRYCRITERIA where QRYNAME = '?' and oprid = '?'with ur; -- Get Query Output Field DefinitionsSELECT OPRID, QRYNAME, QRYFLDNAME, SELNUM, FLDNUM, RECNAME, FIELDNAME, FLDRCDNUM, FLDEXPNUM, HDGTYPE, HEADING, COLUMNNUM, GROUPBYNUM, ORDERBYNUM, ORDERBYDIR, TTLTYPE, SUBTTLNUM, USECOUNT, XLATTYPE, XLATEXPRTYPE, XLATFLDNUM, XLATEXPNUM, AGGREGATEFUNC FROM PSFSSYS.PSQRYFIELD where QRYNAME like '?%' with ur;
If you have more information about this kind of handy SQLs – please comment and I will try and keep this post up to date.
Need to delete millions of rows from a table fast? Here is how you can do this:
1: ALTER TABLE table_name ACTIVATE NOT LOGGED INITIALLY; --disable logging
2: DELETE FROM table_name WHERE ....;
3: COMMIT; --Commits and enable logging
Some of the processes that depend on shared table instances , can experience a dramatic differences in performance, in case all of the instances available are being used, or remaining locked by some orphan or failed process. One way to resolve this problem is to go online and check if tables should be “released”. Here is a set of SQLs that would allow you to do the same thing and depending on you requirements – allow to automate this process, which could prove critical during the times of high usage:
-- Shared Temp Table instance control tableSELECT * FROM PS_TEMP_TBL_ASGNMWHERE TEMP_TBL_NAME = 'table_name'WITH UR -- Get tables that were locked by processes that ran 200 instance numbers beforeSELECT * FROM PS_TEMP_TBL_ASGNMWHERE in_use_sw = 'Y' AND process_instance < (SELECT max (prcsinstance) - 200 FROM psfssys.psprcsrqst WHERE runstatus = '9')with ur -- RELEASE ALL TEMP TABLE LOCKS -- FROM PROCESS INSTANCES THAT ARE LESS THAN 200 THAN THE LAST SUCCESSFUL ONEUPDATE ps_temp_tbl_asgnm SET in_use_sw = 'N', PROCESS_INSTANCE = 0WHERE in_use_sw = 'Y' AND process_instance < (SELECT max (prcsinstance) - 200 FROM psfssys.psprcsrqst WHERE runstatus = '9')
Let me know if you have any questions
Here are a few more nice DB2 scripts that would save you time:
Get all tables in Table Space
-- Get all tables in particular tablespaceselect SUBSTR(TABNAME,1,25) "TABNAME", SUBSTR(TABSCHEMA,1,15) "SCHEMA", NPAGES, CARD from syscat.tables where tbspace = '?'
Generate Grants for all tables in Table Space
-- Genereating GRANTS SELECT 'grant select on ' || tabname || ' to PSFDEV' || ';' FROM syscat.tables WHERE tabname NOT IN (SELECT tabname FROM syscat.tabauth WHERE grantee = 'PSFDEV') AND tabschema = 'PSFSSYS' AND (type = 'T' OR type = 'V')
Recent Comments