DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

30
1 DBQL Setup and Maintenance For Teradata 13.0 and Teradata 13.10 The Process Outlined in this Document is an Excerpt from the Professional Services Data Collection and Reporting Service Donna Becker January 20, 2012

description

dbql

Transcript of DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

Page 1: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

1

DBQL Setup and

Maintenance

For Teradata 13.0 and Teradata 13.10

The Process Outlined in this Document is an Excerpt from the Professional Services Data Collection and Reporting Service

Donna Becker January 20, 2012

Page 2: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

2

Document Usage Notes: Do a Global Replace of the databasename Sys_Mgmt to the database where you store historical DBC data.

Change the PPI From and To Dates to accommodate your DBQL data

Page 3: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

3

1.0 DBQL Logging TD13 DBQL has the following enhancements:

1. Previously you could not introduce a rule for an individual user or account if there was already a rule defined for all users. Subsequently, you could also not introduce a rule for all users, if there were any other rules already defined. The most valuable enhancement to TD13 DBQL functionality is the ability to log at the system level (all usage), and then further log subsets of that usage at the user, account, or application level.

2. If you define rules for users and groups of users, DBQL will choose which rule to apply based on a "Best Fit Rule" hierarchy.

3. The SHOW QUERY LOGGING command displays the DBQL rule the system would apply for a user or user-account pair.

4. The BEGIN QUERY LOGGING statement has a new "WITH NONE" option to disallow logging for a particular user, or group. While this is an option, it is not recommended. Best Practice is to log ALL usage. Determining how to log is based on Workload Characteristics and is outlined below.

5. The END QUERY LOGGING statement has a new option that deletes all the rules in the rule cache (ON ALL RULES) or deletes all the rules associated with a specific user (ON <username> RULES).

6. The system can do query logging on queries from a specific application (ON APPLNAME=). For example, you could log queries from applications with the name "FASTLOAD", different than the default logging you've put in place.

7. If a user changes his active session through a SET SESSION ACCOUNT command, DBQL enables rules associated with that account when the user issues a query from the new account.

New TD13 Best Practice Recommendations for Logging:

1. Set One System Level Logging Statement that logs all usage at the detail level with SQL and Objects. BEGIN QUERY LOGGING WITH SQL, OBJECTS LIMIT SQLTEXT=0 ON ALL;

2. Next determine the best way to log each user/account/Application that should not be logged as the default above, based on usage analysis.

• For any individual users, accounts, or applications that would be better logged Summarized • TD13.10 - BEGIN QUERY LOGGING WITH OBJECTS,SQL LIMIT SQLTEXT=0

AND THRESHOLD=100 CPUTIME ON All ACCOUNT = ‘acctnm’; • TD13 - BEGIN QUERY LOGGING LIMIT THRESHOLD=100 CPUTIME AND

SQLTEXT=10000 ALL ACCOUNT = ‘acctname’; • You can also use

• ON APPLNAME = 'applicationname' or • ON <username> • or a user/account combination

3. If using this documented DDL, Macros, and example script, you must log SYSTEMFE as well, using the guidelines below (or substitute another userid). This ensures that the caches are dumped prior to moving the data out of the DBC DBQL tables (see sample script in Appendix A). BEGIN QUERY LOGGING WITH SQL, OBJECTS LIMIT SQLTEXT=0 ON SYSTEMFE;

TD13 Best Fit Rule Hierarchy: DBQL rules are searched for and applies based on the following order:

1. A rule based on an application name 2. A rule for a specific user and a specific account 3. A rule for a specific user and any account 4. A rule for all users and a specific account 5. A rule for all users and any account

Page 4: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

4

2.0 Table Structures Temp tables are used in the process so that the data can be loaded from DBC tables as quickly as possible, to allow the DBC data collection to continue. This can best be accomplished by running this process nightly. This is due to the fact that the process always inserts the data into the empty temp tables first. The data is then loaded to the Final History tables. Appendix B contains the DDL for these tables. DBQL Tables SYS_MGMT Tablename Loaded From Used to Load Used to Delete Index DBQLOGTBL_TMP DBC.DBQLOGTBL DBQLOGTBL_HST DBC.DBQLOGTBL ProcID,

CollectTimeStamp DBQLOGTBL_HST DBQLOGTBL_TMP LogDate, QueryID DBQLSQLTBL_TMP DBC.DBQLSQLTBL DBQLSQLTBL_HST DBC.DBQLSQLTBL ProcID,

CollectTimeStamp DBQLSQLTBL_HST DBQLSQLTBL_TMP LogDate, QueryID DBQLOBJTBL_TMP DBC.DBQLOBJTBL DBQLOBJTBL_HST DBC.DBQLOBJTBL ProcID,

CollectTimeStamp DBQLOBJTBL_HST DBQLOBJTBL_TMP LogDate, QueryID DBQLOBJTBLSUM_HST DBQLOBJTBL_TMP LogDate,

UserName, ObjectID, ObjectNum

DBQLSummaryTBL_TMP DBC.DBQLSummaryTBL DBQLSummaryTBL_HST DBC.DBQLSummaryTBL ProcID, CollectTimeStamp

DBQLSummaryTBL_HST DBQLSummaryTBL_TMP Logdate, ProcID DBQLStepTBL_TMP DBC.DBQLStepTbl DBQLStepTBL_HST DBC.DBQLStepTbl ProcID,

CollectTimeStamp

DBQLStepTBL_HST DBQLStepTBL_TMP LogDate, Queryid

DBQLExplainTBL_TMP DBC.DBQLExplainTbl DBQLExplainTBL_HST DBC.DBQLExplainTbl ProcID, CollectTimeStamp

DBQLExplainTBL_HST DBQLExplainTBL_TMP LogDate, Queryid

DBQLXMLTBL_TMP DBC.DBQLXMLTBL DBQLXMLTBL_HST DBC.DBQLXMLTBL ProcID, CollectimeStamp

DBQLXMLTBL_HST DBQLXMLTBL_TMP LogDate, ProcID, Queryid

Page 5: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

5

3.0 Maintenance Scripts Daily Maintenance Example maintenance scripts can be found in Appendix A. This process is a series of Macro Executes, Logging Statements, Collect Statistics statements and BTEQ error checking steps. Each step is restartable. The process: 1. Checks to make sure that DBQLOGTBL_TMP, DBQLStepTBL_TMP, DBQLExplainTBL_TMP,

DBQLSQLTBL_TMP, DBQLOBJTBL_TMP, DBQLXMLTBL_TMP and DBQLSummaryTBL_TMP are empty.

2. End Logging on one UserID to get the buffers to dump and Begin Logging on the UserID you ended logging on above.

3. Executes the macro SYS_MGMT.LoadDBQLTMP which loads the temporary DBQL tables from the DBC DBQL tables and deletes all from the DBC DBQL tables.

4. Recollects the Statistics on the DBQL temporary tables. 5. Executes the macro SYS_MGT.LOADDBQLSumHstTbl, deletes from the temporary table, and recollects

statistics on DBQLSummaryTBL_HST. 6. Executes the macro SYS_MGMT.LoadDBQLHSTTBLS which loads DBQLOGTBL_HST,

DBQLStepTBL_HST, DBQLExplainTBL_HST, DBQLSQLTBL_HST, DBQLOBJTBL_HST, DBQLXMLTBL_HST and DBQLOBJTBLSUM_HST (optional) and deletes all from the DBQL temporary tables.

7. Recollects the Statistics on: DBQLOGTBL_HST, DBQLStepTBL_HST, DBQLExplainTBL_HST, DBQLSQLTBL_HST, DBQLOBJTBL_HST, DBQLXMLTBL_HST, andDBQLOBJTBLSUM_HST (optional).

Page 6: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

6

APPENDIX A

Sample Maintenance Scripts

Page 7: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

7

Note: Logon with a User that has a High Priority to ensure that the DBC DBQL tables are Copied and Deleted before the buffers dump again. Daily Maintenance of DBQL Tables /*********************************************************/ /* DESC: This process loads the DBQL tmp tables */ /* from the DBC DBQL tables and deletes from them */ /* OCT 2009 – DB - Initial Release */ /*********************************************************/ /* Verify that the DBQL Temporary Tables are empty */ Select 'Rows Exist-Stop' From SYS_MGMT.DBQLOGTBL_TMP SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 Select 'Rows Exist-Stop' From SYS_MGMT.DBQLSQLTBL_TMP SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 Select 'Rows Exist-Stop' From SYS_MGMT.DBQLOBJTBL_TMP SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 Select 'Rows Exist-Stop' From SYS_MGMT.DBQLSummaryTBL_TMP SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 Select 'Rows Exist-Stop' From SYS_MGMT.DBQLEXPLAINTbl_Tmp SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 Select 'Rows Exist-Stop' From SYS_MGMT.DBQLStepTbl_Tmp SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 Select 'Rows Exist-Stop' From SYS_MGMT.DBQLXMLTbl_Tmp SAMPLE 1; .if activitycount <> 0 THEN .GOTO LD_Error1 /* These END and BEGIN LOGGING Statements are needed to */ /* dump the Query Logging Buffers into the DBQL tables. */ /* Modify this END LOGGING Statement if needed to be the */ /* same as the BEGIN LOGGING Statement, or it won't end */ /* logging. */ END QUERY LOGGING WITH SQL, OBJECTS LIMIT SQLTEXT=0 ON SYSTEMFE; BEGIN QUERY LOGGING WITH SQL, OBJECTS LIMIT SQLTEXT=0 ON SYSTEMFE; /* Load DBQL Temporary Tables */ Execute SYS_MGMT.LOADDBQLTMP; .if ERRORCODE <> 0 THEN .GOTO LD_Error2 Collect Statistics SYS_MGMT.DBQLOGTBL_TMP ;

Page 8: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

8

Collect Statistics SYS_MGMT.DBQLSQLTBL_TMP ; Collect Statistics SYS_MGMT.DBQLOBJTBL_TMP ; Collect Statistics SYS_MGMT.DBQLSummaryTBL_TMP; Collect Statistics SYS_MGMT.DBQLEXPLAINTbl_Tmp; Collect Statistics SYS_MGMT.DBQLStepTbl_Tmp; Collect Statistics SYS_MGMT.DBQLXMLTbl_Tmp; /**************************************************/ /* DESC: This process loads the DBQL History */ /* tables from the DBQL tmp tables */ /* This script can combined with the previous */ /* OCT 2009 – DB - Initial Release */ /**************************************************/ Select 'Summary Logged Today' From SYS_MGMT.DBQLSummaryTBL_Tmp SAMPLE 1; .if activitycount = 0 THEN .GOTO No_Summary .if activitycount <> 0 THEN .GOTO Load_Summary .label No_Summary .goto Load_DBQL_Hst .label Load_Summary /* Load DBQL Summary Temporary Table into History Table */ Execute SYS_MGMT.LOADDBQLSumHstTbl; .if ERRORCODE <> 0 THEN .GOTO LD_Error3 Collect Statistics SYS_MGMT.DBQLSummaryTBL_HST ; .label Load_DBQL_Hst /* Load DBQL Temporary Tables into History Tables */ Execute SYS_MGMT.LOADDBQLHSTTBLS; .if ERRORCODE <> 0 THEN .GOTO LD_Error4 Collect Statistics SYS_MGMT.DBQLOGTBL_HST ; Collect Statistics SYS_MGMT.DBQLSQLTBL_HST ; Collect Statistics SYS_MGMT.DBQLOBJTBL_HST ; -- Collect Statistics SYS_MGMT.DBQLOBJTBLSUM_HST ; -- optional table Collect Statistics SYS_MGMT.DBQLEXPLAINTbl_HST ; Collect Statistics SYS_MGMT.DBQLStepTbl_HST ; Collect Statistics SYS_MGMT.DBQLXMLTbl_HST ; .quit .label LD_Error1 .remark 'LD_Error1: One or more of the DBQL Temp tables are not empty' .quit 50

Page 9: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

9

.label LD_Error2

.remark 'LD_Error2: The DBQL Temp tables did not load'

.remark 'LD_Error2: and the DBC DBQL tables were not purged'

.quit 50 .label LD_Error3 .remark 'LD_Error3: The DBQL Summary History table did not load ' .quit 50 .label LD_Error4 .remark 'LD_Error4: The DBQL History tables did not load ' .quit 50

Page 10: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

10

APPENDIX B

DBQL Maintenance and History Table DDL

Page 11: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

11

DBQL Tables Note: Collect statistics after each table create below needs to be done on each table, or the Collect Statistics steps in the scripts will fail since the ones in the scripts are collecting at the table level. Note: PPI is an excellent performance enhancement and is used on the DBQL history tables. Check and Adjust Partition Dates before creating tables. If choosing not to use PPI, consider a Secondary Index on Logdate to improved performance. Note: DDL changes are required as new major versions of Teradata are released. CREATE MULTISET TABLE SYS_MGMT.DBQLogTbl_Tmp, no fallback as dbc.dbqlogtbl with no data; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Tmp index (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Tmp column UserId; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Tmp column ExpandAcctString; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Tmp column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Tmp column QueryId; CREATE MULTISET TABLE SYS_MGMT.DBQLSummaryTbl_Tmp, no fallback as dbc.DBQLSummaryTbl with no data; COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Tmp INDEX (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Tmp column UserId; CREATE MULTISET TABLE SYS_MGMT.DBQLSqlTbl_Tmp ,NO FALLBACK as dbc.DBQLSqlTbl with no data; COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Tmp INDEX (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Tmp column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Tmp column QueryId; CREATE MULTISET TABLE SYS_MGMT.DBQLObjTbl_Tmp ,NO FALLBACK as dbc.DBQLObjTbl with no data; COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Tmp INDEX (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Tmp column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Tmp column QueryId; CREATE MULTISET TABLE SYS_MGMT.DBQLStepTbl_Tmp ,NO FALLBACK as dbc.DBQLStepTbl with no data; COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Tmp INDEX (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Tmp column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Tmp column QueryId; CREATE MULTISET TABLE SYS_MGMT.DBQLEXPLAINTbl_Tmp ,NO FALLBACK as dbc.DBQLExplainTbl with no data;

Page 12: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

12

COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Tmp INDEX (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Tmp column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Tmp column QueryId; CREATE MULTISET TABLE SYS_MGMT.DBQLXMLTbl_Tmp ,NO FALLBACK as dbc.DBQLXMLTbl with no data; COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Tmp INDEX (procid, collecttimestamp); COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Tmp column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Tmp column QueryId; CREATE SET TABLE SYS_MGMT.DBQLogTbl_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL, CollectTimeStamp TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, QueryID DECIMAL(18,0) FORMAT '--Z(17)9' NOT NULL, UserID BYTE(4) NOT NULL, AcctString VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, ExpandAcctString VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, SessionID INTEGER FORMAT '--,---,---,--9' NOT NULL, LogicalHostID SMALLINT FORMAT 'ZZZ9' NOT NULL, RequestNum INTEGER FORMAT '--,---,---,--9' NOT NULL, InternalRequestNum INTEGER FORMAT '--,---,---,--9' NOT NULL, LogonDateTime TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, AcctStringTime FLOAT FORMAT '99:99:99', AcctStringHour SMALLINT FORMAT '--9', AcctStringDate DATE FORMAT 'YY/MM/DD', LogonSource CHAR(128) CHARACTER SET LATIN NOT CASESPECIFIC, AppID CHAR(30) CHARACTER SET UNICODE NOT CASESPECIFIC, ClientID CHAR(30) CHARACTER SET UNICODE NOT CASESPECIFIC, ClientAddr CHAR(45) CHARACTER SET LATIN NOT CASESPECIFIC, QueryBand VARCHAR(6160) CHARACTER SET UNICODE NOT CASESPECIFIC, ProfileID BYTE(4), StartTime TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z' NOT NULL, FirstStepTime TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z' NOT NULL, FirstRespTime TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z', LastStateChange TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z', NumSteps SMALLINT FORMAT '---,--9' NOT NULL, NumStepswPar SMALLINT FORMAT '---,--9', MaxStepsInPar SMALLINT FORMAT '---,--9', NumResultRows FLOAT FORMAT '----,---,---,---,--9', TotalIOCount FLOAT FORMAT '----,---,---,---,--9', AMPCPUTime FLOAT FORMAT '----,---,---,---,--9.999', ParserCPUTime FLOAT FORMAT '----,---,---,---,--9.999', UtilityByteCount FLOAT FORMAT '----,---,---,---,--9', UtilityRowCount FLOAT FORMAT '----,---,---,---,--9', ErrorCode INTEGER FORMAT '--,---,---,--9', ErrorText VARCHAR(1024) CHARACTER SET UNICODE NOT CASESPECIFIC FORMAT 'X(255)', WarningOnly CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, DelayTime INTEGER FORMAT '--,---,---,--9', WDDelayTime INTEGER FORMAT '--,---,---,--9', AbortFlag CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, CacheFlag CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, StatementType CHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC, QueryText VARCHAR(10000) CHARACTER SET UNICODE NOT CASESPECIFIC, NumOfActiveAMPs INTEGER FORMAT '--,---,---,--9', MaxAMPCPUTime FLOAT FORMAT '----,---,---,---,--9.999',

Page 13: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

13

MaxCPUAmpNumber SMALLINT FORMAT '---,--9', MinAmpCPUTime FLOAT FORMAT '----,---,---,---,--9.999', MaxAmpIO FLOAT FORMAT '----,---,---,---,--9', MaxIOAmpNumber SMALLINT FORMAT '---,--9', MinAmpIO FLOAT FORMAT '----,---,---,---,--9', SpoolUsage FLOAT FORMAT '----,---,---,---,--9', WDID INTEGER FORMAT '--,---,---,--9', OpEnvID INTEGER FORMAT '--,---,---,--9', SysConID INTEGER FORMAT '--,---,---,--9', LSN INTEGER FORMAT '--,---,---,--9', NoClassification CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, WDOverride CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, SLGMet CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, ExceptionValue INTEGER FORMAT '--,---,---,--9', FinalWDID INTEGER FORMAT '--,---,---,--9', TDWMEstMaxRows FLOAT FORMAT '----,---,---,---,--9', TDWMEstLastRows FLOAT FORMAT '----,---,---,---,--9', TDWMEstTotalTime FLOAT FORMAT '----,---,---,---,--9', TDWMAllAmpFlag CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, TDWMConfLevelUsed CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, TDWMRuleID INTEGER FORMAT '--,---,---,--9', UserName VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, DefaultDatabase VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, AMPCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', ParserCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', MaxAMPCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', MaxCPUAmpNumberNorm SMALLINT FORMAT '---,--9', MinAmpCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', EstResultRows FLOAT FORMAT '----,---,---,---,--9', EstProcTime FLOAT FORMAT '----,---,---,---,--9.999', EstMaxRowCount FLOAT FORMAT '----,---,---,---,--9', ProxyUser VARCHAR(256) CHARACTER SET UNICODE NOT CASESPECIFIC, ProxyRole VARCHAR(256) CHARACTER SET UNICODE NOT CASESPECIFIC, StatementGroup VARCHAR(256) CHARACTER SET UNICODE NOT CASESPECIFIC, SessionTemporalQualifier VARCHAR(1024) CHARACTER SET UNICODE NOT CASESPECIFIC, ExtraField1 INTEGER FORMAT '--,---,---,--9' COMPRESS 0, ExtraField2 INTEGER FORMAT '--,---,---,--9' COMPRESS 0, ExtraField3 SMALLINT FORMAT '---,--9' COMPRESS 0, ExtraField4 TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z', ExtraField5 VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, ExtraField6 FLOAT FORMAT '----,---,---,---,--9' COMPRESS 0, ExtraField7 FLOAT FORMAT '----,---,---,---,--9' COMPRESS 0) PRIMARY INDEX NUPI_DBQLogTbl_Hst ( LogDate, QueryID ) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst INDEX NUPI_DBQLogTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column LogDate; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column AppId; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column ClientId; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column UserName; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column AcctString; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column ExpandAcctString; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column QueryId; COLLECT STATISTICS SYS_MGMT.DBQLogTbl_Hst column Partition; CREATE SET TABLE SYS_MGMT.DBQLSummaryTbl_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL,

Page 14: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

14

CollectTimeStamp TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, UserID BYTE(4), UserName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, AcctString VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, LogicalHostID SMALLINT FORMAT 'ZZZ9', AppID CHAR(30) CHARACTER SET UNICODE NOT CASESPECIFIC, ClientID CHAR(30) CHARACTER SET UNICODE NOT CASESPECIFIC, ClientAddr CHAR(45) CHARACTER SET LATIN NOT CASESPECIFIC, ProfileID BYTE(4), SessionID INTEGER FORMAT '--,---,---,--9' NOT NULL, QueryCount INTEGER FORMAT '--,---,---,--9' NOT NULL, ValueType CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC, QuerySeconds FLOAT FORMAT '----,---,---,---,--9.999' NOT NULL, TotalIOCount FLOAT FORMAT '----,---,---,---,--9', AMPCPUTime FLOAT FORMAT '----,---,---,---,--9.999', ParserCPUTime FLOAT FORMAT '----,---,---,---,--9.999', AMPCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', ParserCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', LowHist FLOAT FORMAT '----,---,---,---,--9.999' NOT NULL COMPRESS 0, HighHist FLOAT FORMAT '----,---,---,---,--9.999' NOT NULL COMPRESS 0) PRIMARY INDEX NUPI_DBQLSummaryTbl_Hst ( Logdate, ProcID) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Hst INDEX NUPI_DBQLSummaryTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Hst Column LogDate; COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Hst column AcctString; COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Hst Column UserName; COLLECT STATISTICS SYS_MGMT.DBQLSummaryTbl_Hst Column Partition; CREATE SET TABLE SYS_MGMT.DBQLSqlTbl_Hst , NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL, CollectTimeStamp TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, QueryID DECIMAL(18,0) FORMAT '--Z(17)9' NOT NULL, SqlRowNo INTEGER FORMAT '--,---,---,--9' NOT NULL COMPRESS 1, SqlTextInfo VARCHAR(31000) CHARACTER SET UNICODE NOT CASESPECIFIC NOT NULL) PRIMARY INDEX NUPI_DBQLSqlTbl_Hst ( LogDate, QueryID) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Hst INDEX NUPI_DBQLSqlTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Hst column Logdate; COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Hst column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Hst column QueryId; COLLECT STATISTICS SYS_MGMT.DBQLSqlTbl_Hst column Partition; CREATE SET TABLE SYS_MGMT.DBQLObjTbl_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL, CollectTimeStamp TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, QueryID DECIMAL(18,0) FORMAT '--Z(17)9' NOT NULL, ObjectDatabaseName VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, ObjectTableName VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC,

Page 15: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

15

ObjectColumnName VARCHAR(128) CHARACTER SET UNICODE NOT CASESPECIFIC, ObjectID BYTE(4) NOT NULL, ObjectNum INTEGER FORMAT '--,---,---,--9', ObjectType CHAR(3) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, FreqofUse INTEGER FORMAT '--,---,---,--9', TypeofUse BYTEINT FORMAT '--9') PRIMARY INDEX NUPI_DBQLObjTbl_Hst ( LogDate, QueryID ) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Hst INDEX NUPI_DBQLObjTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Hst column Logdate; COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Hst column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Hst column QueryId; COLLECT STATISTICS SYS_MGMT.DBQLObjTbl_Hst Column Partition; -- optional object data summary table CREATE SET TABLE SYS_MGMT.DBQLObjTblSum_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, UserName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, ObjectDatabaseName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, ObjectTableName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, ObjectColumnName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, Object_Cnt INTEGER, ObjectID BYTE(4) NOT NULL, ObjectNum INTEGER FORMAT '--,---,---,--9', ObjectType CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL) PRIMARY INDEX NUPI_DBQLObjTblSum_Hst ( LogDate ,UserName ,ObjectID ,ObjectNum ) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst INDEX NUPI_DBQLObjTblSum_Hst; COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst Column LogDate; COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst Column UserName; COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst Column ObjectDatabaseName; COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst Column ObjectTableName; COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst Column ObjectId; COLLECT STATISTICS SYS_MGMT.DBQLObjTblSum_Hst Column Partition; CREATE SET TABLE SYS_MGMT.DBQLStepTbl_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL, CollectTimeStamp TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, QueryID DECIMAL(18,0) FORMAT '--Z(17)9' NOT NULL, StepLev1Num SMALLINT FORMAT '---,--9' NOT NULL, StepLev2Num SMALLINT FORMAT '---,--9', StepName CHAR(6) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, StepStartTime TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z', StepStopTime TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(F)Z', EstProcTime FLOAT FORMAT '----,---,---,---,--9.999', EstCPUCost FLOAT FORMAT '----,---,---,---,--9.999', CPUTime FLOAT FORMAT '----,---,---,---,--9.999', IOcount FLOAT FORMAT '----,---,---,---,--9', EstRowCount FLOAT FORMAT '----,---,---,---,--9', RowCount FLOAT FORMAT '----,---,---,---,--9', RowCount2 FLOAT FORMAT '----,---,---,---,--9',

Page 16: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

16

RowCount3 FLOAT FORMAT '----,---,---,---,--9', NumOfActiveAMPs INTEGER FORMAT '--,---,---,--9', MaxAmpCPUTime FLOAT FORMAT '----,---,---,---,--9.999', MaxCPUAmpNumber SMALLINT FORMAT '---,--9', MinAmpCPUTime FLOAT FORMAT '----,---,---,---,--9.999', MaxAmpIO FLOAT FORMAT '----,---,---,---,--9', MaxIOAmpNumber SMALLINT FORMAT '---,--9', MinAmpIO FLOAT FORMAT '----,---,---,---,--9', SpoolUsage FLOAT FORMAT '----,---,---,---,--9', MaxAMPSpool FLOAT FORMAT '----,---,---,---,--9', MaxSpoolAmpNumber SMALLINT FORMAT '---,--9', MinAMPSpool FLOAT FORMAT '----,---,---,---,--9', StepWD INTEGER FORMAT '--,---,---,--9', LSN INTEGER FORMAT '--,---,---,--9', UtilityTableID BYTE(4), RowsWComprColumns FLOAT FORMAT '----,---,---,---,--9', EstIOCost FLOAT FORMAT '----,---,---,---,--9.999', EstNetCost FLOAT FORMAT '----,---,---,---,--9.999', EstHRCost FLOAT FORMAT '----,---,---,---,--9.999', CPUtimeNorm FLOAT FORMAT '----,---,---,---,--9.999', MaxAmpCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', MaxCPUAmpNumberNorm SMALLINT FORMAT '---,--9', MinAmpCPUTimeNorm FLOAT FORMAT '----,---,---,---,--9.999', ExtraField1 FLOAT FORMAT '----,---,---,---,--9' COMPRESS 0, ExtraField2 FLOAT FORMAT '----,---,---,---,--9' COMPRESS 0, ExtraField3 INTEGER FORMAT '--,---,---,--9' COMPRESS 0, ExtraField4 INTEGER FORMAT '--,---,---,--9' COMPRESS 0) PRIMARY INDEX NUPI_DBQLStepTbl_Hst ( LogDate, QueryID) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Hst INDEX NUPI_DBQLStepTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Hst column Logdate; COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Hst column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Hst column QueryId; COLLECT STATISTICS SYS_MGMT.DBQLStepTbl_Hst Column Partition; CREATE SET TABLE SYS_MGMT.DBQLExplainTbl_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL, CollectTimeStamp TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, QueryID DECIMAL(18,0) FORMAT '--Z(17)9' NOT NULL, ExpRowNo INTEGER FORMAT '--,---,---,--9' NOT NULL, ExplainText VARCHAR(31000) CHARACTER SET UNICODE NOT CASESPECIFIC NOT NULL) PRIMARY INDEX NUPI_DBQLEXPLAINTbl_Hst ( LogDate, QueryID) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Hst INDEX NUPI_DBQLEXPLAINTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Hst column Logdate; COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Hst column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Hst column QueryId; COLLECT STATISTICS SYS_MGMT.DBQLEXPLAINTbl_Hst Column Partition; CREATE SET TABLE SYS_MGMT.DBQLXMLTbl_Hst ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT

Page 17: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

17

( LogDate DATE FORMAT 'yyyy/mm/dd' NOT NULL, ProcID DECIMAL(5,0) FORMAT '-(5)9' NOT NULL, CollectTimeStamp TIMESTAMP(2) FORMAT 'YYYY-MM-DDBHH:MI:SS' NOT NULL, QueryID DECIMAL(18,0) FORMAT '--Z(17)9' NOT NULL, XMLRowNo INTEGER FORMAT '--,---,---,--9' NOT NULL, XMLTextInfo VARCHAR(31000) CHARACTER SET UNICODE NOT CASESPECIFIC NOT NULL) PRIMARY INDEX NUPI_DBQLXMLTbl_Hst ( LogDate, ProcID, QueryID) PARTITION BY RANGE_N (LogDate between Date '2008-01-01' and Date '2020-12-31' each interval '1' day); COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Hst INDEX NUPI_DBQLXMLTbl_Hst; COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Hst column Logdate; COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Hst column ProcId; COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Hst column QueryId; COLLECT STATISTICS SYS_MGMT.DBQLXMLTbl_Hst Column Partition;

APPENDIX C

Maintenance Macros

Page 18: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

18

Page 19: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

19

NOTE: Before these Macros can be Executed, the following GRANT statements will need to be run: GRANT SELECT ON DBC TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLOGTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLStepTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLExplainTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLSQLTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLOBJTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLXMLTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLSUMMARYTBL TO [ID CREATING THE MACROS] WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLOGTBL TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLSUMMARYTBL TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLOBJTBL TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLStepTBL TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLExplainTBL TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLSQLTBL TO SYS_MGMT WITH GRANT OPTION; GRANT DELETE ON DBC.DBQLXMLTBL TO SYS_MGMT WITH GRANT OPTION; Replace Macro SYS_MGMT.LoadDBQLTmp AS ( /* Part of the Daily Process. Loads DBQL Tmp Tables*/ LOCKING TABLE DBC.DBQLOGTBL FOR ACCESS Insert into SYS_MGMT.DBQLogTbl_Tmp ( ProcID ,CollectTimeStamp ,QueryID ,UserID ,AcctString ,ExpandAcctString ,SessionID ,LogicalHostID ,RequestNum ,InternalRequestNum ,LogonDateTime ,AcctStringTime ,AcctStringHour ,AcctStringDate ,LogonSource ,AppID ,ClientID ,ClientAddr ,QueryBand ,ProfileID ,StartTime ,FirstStepTime ,FirstRespTime ,LastStateChange ,NumSteps ,NumStepswPar ,MaxStepsInPar ,NumResultRows ,TotalIOCount ,AMPCPUTime ,ParserCPUTime ,UtilityByteCount ,UtilityRowCount ,ErrorCode ,ErrorText

Page 20: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

20

,WarningOnly ,DelayTime ,WDDelayTime ,AbortFlag ,CacheFlag ,StatementType ,QueryText ,NumOfActiveAMPs ,MaxAMPCPUTime ,MaxCPUAmpNumber ,MinAmpCPUTime ,MaxAmpIO ,MaxIOAmpNumber ,MinAmpIO ,SpoolUsage ,WDID ,OpEnvID ,SysConID ,LSN ,NoClassification ,WDOverride ,SLGMet ,ExceptionValue ,FinalWDID ,TDWMEstMaxRows ,TDWMEstLastRows ,TDWMEstTotalTime ,TDWMAllAmpFlag ,TDWMConfLevelUsed ,TDWMRuleID ,UserName ,DefaultDatabase ,AMPCPUTimeNorm ,ParserCPUTimeNorm ,MaxAMPCPUTimeNorm ,MaxCPUAmpNumberNorm ,MinAmpCPUTimeNorm ,EstResultRows ,EstProcTime ,EstMaxRowCount ,ProxyUser ,ProxyRole ,StatementGroup ,SessionTemporalQualifier ,ExtraField1 ,ExtraField2 ,ExtraField3 ,ExtraField4 ,ExtraField5 ,ExtraField6 ,ExtraField7 ) Select ProcID ,CollectTimeStamp ,QueryID ,UserID ,AcctString ,ExpandAcctString ,SessionID ,LogicalHostID ,RequestNum ,InternalRequestNum ,LogonDateTime ,AcctStringTime ,AcctStringHour ,AcctStringDate

Page 21: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

21

,LogonSource ,AppID ,ClientID ,ClientAddr ,QueryBand ,ProfileID ,StartTime ,FirstStepTime ,FirstRespTime ,LastStateChange ,NumSteps ,NumStepswPar ,MaxStepsInPar ,NumResultRows ,TotalIOCount ,AMPCPUTime ,ParserCPUTime ,UtilityByteCount ,UtilityRowCount ,ErrorCode ,ErrorText ,WarningOnly ,DelayTime ,WDDelayTime ,AbortFlag ,CacheFlag ,StatementType ,QueryText ,NumOfActiveAMPs ,MaxAMPCPUTime ,MaxCPUAmpNumber ,MinAmpCPUTime ,MaxAmpIO ,MaxIOAmpNumber ,MinAmpIO ,SpoolUsage ,WDID ,OpEnvID ,SysConID ,LSN ,NoClassification ,WDOverride ,SLGMet ,ExceptionValue ,FinalWDID ,TDWMEstMaxRows ,TDWMEstLastRows ,TDWMEstTotalTime ,TDWMAllAmpFlag ,TDWMConfLevelUsed ,TDWMRuleID ,UserName ,DefaultDatabase ,AMPCPUTimeNorm ,ParserCPUTimeNorm ,MaxAMPCPUTimeNorm ,MaxCPUAmpNumberNorm ,MinAmpCPUTimeNorm ,EstResultRows ,EstProcTime ,EstMaxRowCount ,ProxyUser ,ProxyRole ,StatementGroup ,SessionTemporalQualifier ,ExtraField1 ,ExtraField2

Page 22: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

22

,ExtraField3 ,ExtraField4 ,ExtraField5 ,ExtraField6 ,ExtraField7 From DBC.dbqlogtbl; LOCKING TABLE DBC.DBQLSQLTBL FOR ACCESS Insert into SYS_MGMT.DBQLSQLTBL_Tmp ( ProcID ,CollectTimeStamp ,QueryID ,SqlRowNo ,SqlTextInfo ) Select ProcID ,CollectTimeStamp ,QueryID ,SqlRowNo ,SqlTextInfo From DBC.DBQLSQLTBL; LOCKING TABLE DBC.DBQLOBJTBL FOR ACCESS Insert into SYS_MGMT.DBQLObjTbl_Tmp ( ProcID ,CollectTimeStamp ,QueryID ,ObjectDatabaseName ,ObjectTableName ,ObjectColumnName ,ObjectID ,ObjectNum ,ObjectType ,FreqofUse ,TypeofUse ) Select ProcID ,CollectTimeStamp ,QueryID ,ObjectDatabaseName ,ObjectTableName ,ObjectColumnName ,ObjectID ,ObjectNum ,ObjectType ,FreqofUse ,TypeofUse From DBC.DBQLOBJTBL; LOCKING TABLE DBC.DBQLSUMMARYTBL FOR ACCESS Insert into SYS_MGMT.DBQLSummaryTbl_Tmp ( ProcID ,CollectTimeStamp ,UserID ,AcctString ,LogicalHostID ,AppID ,ClientID ,ClientAddr ,ProfileID ,SessionID ,QueryCount

Page 23: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

23

,ValueType ,QuerySeconds ,TotalIOCount ,AMPCPUTime ,ParserCPUTime ,AMPCPUTimeNorm ,ParserCPUTimeNorm ,LowHist ,HighHist ) Select ProcID ,CollectTimeStamp ,UserID ,AcctString ,LogicalHostID ,AppID ,ClientID ,ClientAddr ,ProfileID ,SessionID ,QueryCount ,ValueType ,QuerySeconds ,TotalIOCount ,AMPCPUTime ,ParserCPUTime ,AMPCPUTimeNorm ,ParserCPUTimeNorm ,LowHist ,HighHist From DBC.DBQLSummaryTBL; LOCKING TABLE DBC.DBQLExplainTBL FOR ACCESS Insert into SYS_MGMT.DBQLExplainTBL_Tmp ( ProcID ,CollectTimeStamp ,QueryID ,ExpRowNo ,ExplainText ) Select ProcID ,CollectTimeStamp ,QueryID ,ExpRowNo ,ExplainText From DBC.DBQLEXPLAINTBL; LOCKING TABLE DBC.DBQLSTEPTBL FOR ACCESS Insert into SYS_MGMT.DBQLSTEPTBL_Tmp ( ProcID ,CollectTimeStamp ,QueryID ,StepLev1Num ,StepLev2Num ,StepName ,StepStartTime ,StepStopTime ,EstProcTime ,EstCPUCost ,CPUTime ,IOcount ,EstRowCount ,RowCount

Page 24: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

24

,RowCount2 ,RowCount3 ,NumOfActiveAMPs ,MaxAmpCPUTime ,MaxCPUAmpNumber ,MinAmpCPUTime ,MaxAmpIO ,MaxIOAmpNumber ,MinAmpIO ,SpoolUsage ,MaxAMPSpool ,MaxSpoolAmpNumber ,MinAMPSpool ,StepWD ,LSN ,UtilityTableID ,RowsWComprColumns ,EstIOCost ,EstNetCost ,EstHRCost ,CPUtimeNorm ,MaxAmpCPUTimeNorm ,MaxCPUAmpNumberNorm ,MinAmpCPUTimeNorm ,ExtraField1 ,ExtraField2 ,ExtraField3 ,ExtraField4 ) Select ProcID ,CollectTimeStamp ,QueryID ,StepLev1Num ,StepLev2Num ,StepName ,StepStartTime ,StepStopTime ,EstProcTime ,EstCPUCost ,CPUTime ,IOcount ,EstRowCount ,RowCount ,RowCount2 ,RowCount3 ,NumOfActiveAMPs ,MaxAmpCPUTime ,MaxCPUAmpNumber ,MinAmpCPUTime ,MaxAmpIO ,MaxIOAmpNumber ,MinAmpIO ,SpoolUsage ,MaxAMPSpool ,MaxSpoolAmpNumber ,MinAMPSpool ,StepWD ,LSN ,UtilityTableID ,RowsWComprColumns ,EstIOCost ,EstNetCost ,EstHRCost ,CPUtimeNorm ,MaxAmpCPUTimeNorm ,MaxCPUAmpNumberNorm

Page 25: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

25

,MinAmpCPUTimeNorm ,ExtraField1 ,ExtraField2 ,ExtraField3 ,ExtraField4 From DBC.DBQLSTEPTBL; LOCKING TABLE DBC.DBQLXMLTBL FOR ACCESS Insert into SYS_MGMT.DBQLXMLTBL_Tmp ( ProcID ,CollectTimeStamp ,QueryID ,XMLRowNo ,XMLTextInfo ) Select ProcID ,CollectTimeStamp ,QueryID ,XMLRowNo ,XMLTextInfo From DBC.DBQLXMLTBL; Delete from DBC.DBQLOGTBL All; Delete from DBC.DBQLSQLTBL All; Delete from DBC.DBQLOBJTBL all; Delete from DBC.DBQLSummaryTBL all; Delete from DBC.DBQLExplainTBL All; Delete from DBC.DBQLStepTBL All; Delete from DBC.DBQLXMLTBL All; ); Replace Macro SYS_MGMT.LoadDBQLHstTbls AS ( /* Part of the Daily Process. Loads the DBQL */ /* History tables except the summary table. */ /* There is a separate macro for the summary */ /* table load. Then deletes All from the */ /* DBQL Temp tables. */ LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS Insert into SYS_MGMT.DBQLOGTBL_HST Select cast(starttime as date) AS LOGDATE ,ProcID ,CollectTimeStamp ,QueryID ,UserID ,AcctString ,ExpandAcctString ,SessionID ,LogicalHostID ,RequestNum ,InternalRequestNum ,LogonDateTime ,AcctStringTime

Page 26: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

26

,AcctStringHour ,AcctStringDate ,LogonSource ,AppID ,ClientID ,ClientAddr ,QueryBand ,ProfileID ,StartTime ,FirstStepTime ,FirstRespTime ,LastStateChange ,NumSteps ,NumStepswPar ,MaxStepsInPar ,NumResultRows ,TotalIOCount ,AMPCPUTime ,ParserCPUTime ,UtilityByteCount ,UtilityRowCount ,ErrorCode ,ErrorText ,WarningOnly ,DelayTime ,WDDelayTime ,AbortFlag ,CacheFlag ,StatementType ,QueryText ,NumOfActiveAMPs ,MaxAMPCPUTime ,MaxCPUAmpNumber ,MinAmpCPUTime ,MaxAmpIO ,MaxIOAmpNumber ,MinAmpIO ,SpoolUsage ,WDID ,OpEnvID ,SysConID ,LSN ,NoClassification ,WDOverride ,SLGMet ,ExceptionValue ,FinalWDID ,TDWMEstMaxRows ,TDWMEstLastRows ,TDWMEstTotalTime ,TDWMAllAmpFlag ,TDWMConfLevelUsed ,TDWMRuleID ,UserName ,DefaultDatabase ,AMPCPUTimeNorm ,ParserCPUTimeNorm ,MaxAMPCPUTimeNorm ,MaxCPUAmpNumberNorm ,MinAmpCPUTimeNorm ,EstResultRows ,EstProcTime ,EstMaxRowCount ,ProxyUser ,ProxyRole ,StatementGroup ,SessionTemporalQualifier

Page 27: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

27

,ExtraField1 ,ExtraField2 ,ExtraField3 ,ExtraField4 ,ExtraField5 ,ExtraField6 ,ExtraField7 From SYS_MGMT.DBQLOGTBL_TMP; LOCKING TABLE SYS_MGMT.DBQLSQLTBL_TMP FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS Insert into SYS_MGMT.DBQLSQLTBL_HST Select coalesce(cast (l.starttime as date),cast(s.collecttimestamp as date)) as logdate ,s.ProcID ,s.CollectTimeStamp ,s.QueryID ,s.SqlRowNo ,s.SqlTextInfo From SYS_MGMT.dbqlsqltbl_tmp s left outer join SYS_MGMT.dbqlogtbl_tmp l on l.procid=s.procid and l.queryid=s.queryid; -- Uncomment this load if this optional object data summary table is desired /* LOCKING TABLE SYS_MGMT.DbqlObjTbl_TMP FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS LOCKING TABLE DBC.DBASE FOR ACCESS Insert Into SYS_MGMT.DBQLObjTblSum_Hst Select Cast(l.StartTime As date) As LogDate ,d.DatabaseName ,ObjectDatabaseName ,ObjectTableName ,ObjectColumnName ,Count(*) As Object_Cnt ,ObjectID ,ObjectNum ,ObjectType From SYS_MGMT.dbqlogtbl_tmp l ,SYS_MGMT.dbqlobjtbl_tmp o ,dbc.dbase d Where l.queryid=o.queryid And l.procid=o.procid And L.UserId = D.DatabaseId Group By 1,2,3,4,5,7,8,9; */ LOCKING TABLE SYS_MGMT.DbqlObjTbl_TMP FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_HST FOR ACCESS insert into SYS_MGMT.DBQLObjTbl_Hst select coalesce(cast (l.starttime as date),cast(o.collecttimestamp as date)) as logdate ,o.ProcID ,o.CollectTimeStamp ,o.QueryID ,o.ObjectDatabaseName ,o.ObjectTableName ,o.ObjectColumnName ,o.ObjectID ,o.ObjectNum ,o.ObjectType ,o.FreqofUse

Page 28: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

28

,o.TypeofUse From SYS_MGMT.dbqlobjtbl_tmp o left outer join SYS_MGMT.dbqlogtbl_tmp l on l.procid=o.procid and l.queryid=o.queryid /* Where o.ObjectType <>'Col' */ /* If you want to decrease the size of the object */ /* table by not loading Column Objects you can */ /* uncomment the statement above. */ ; LOCKING TABLE SYS_MGMT.DBQLEXPLAINTBL_TMP FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS Insert into SYS_MGMT.DBQLEXPLAINTBL_HST select coalesce(cast (l.starttime as date) ,cast(e.collecttimestamp as date)) as logdate ,e.ProcID ,e.CollectTimeStamp ,e.QueryID ,e.ExpRowNo ,e.ExplainText From SYS_MGMT.dbqlEXPLAINTbl_tmp e left outer join SYS_MGMT.dbqlogtbl_tmp l on l.procid=e.procid and l.queryid=e.queryid; LOCKING TABLE SYS_MGMT.DBQLSTEPTBL_TMP FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS Insert into SYS_MGMT.DBQLSTEPTBL_HST select coalesce(cast (l.starttime as date) ,cast(st.collecttimestamp as date)) as logdate ,st.ProcID ,st.CollectTimeStamp ,st.QueryID ,st.StepLev1Num ,st.StepLev2Num ,st.StepName ,st.StepStartTime ,st.StepStopTime ,st.EstProcTime ,st.EstCPUCost ,st.CPUTime ,st.IOcount ,st.EstRowCount ,st.RowCount ,st.RowCount2 ,st.RowCount3 ,st.NumOfActiveAMPs ,st.MaxAmpCPUTime ,st.MaxCPUAmpNumber ,st.MinAmpCPUTime ,st.MaxAmpIO ,st.MaxIOAmpNumber ,st.MinAmpIO ,st.SpoolUsage ,st.MaxAMPSpool ,st.MaxSpoolAmpNumber ,st.MinAMPSpool ,st.StepWD ,st.LSN ,st.UtilityTableID ,st.RowsWComprColumns ,st.EstIOCost ,st.EstNetCost ,st.EstHRCost ,st.CPUtimeNorm

Page 29: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

29

,st.MaxAmpCPUTimeNorm ,st.MaxCPUAmpNumberNorm ,st.MinAmpCPUTimeNorm ,st.ExtraField1 ,st.ExtraField2 ,st.ExtraField3 ,st.ExtraField4 From SYS_MGMT.dbqlSTEPTbl_tmp st left outer join SYS_MGMT.dbqlogtbl_tmp l on l.procid=st.procid and l.queryid=st.queryid; LOCKING TABLE SYS_MGMT.DBQLXMLTbl_tmp FOR ACCESS LOCKING TABLE SYS_MGMT.DBQLOGTBL_TMP FOR ACCESS Insert into SYS_MGMT.DBQLXMLTBL_HST select coalesce(cast (l.starttime as date) ,cast(e.collecttimestamp as date)) as logdate ,e.ProcID ,e.CollectTimeStamp ,e.QueryID ,e.XMLRowNo ,e.XMLTextInfo From SYS_MGMT.DBQLXMLTbl_tmp e left outer join SYS_MGMT.DBQLOGTBL_TMP l on l.procid=e.procid and l.queryid=e.queryid; Delete from SYS_MGMT.DBQLOGTBL_TMP All; Delete from SYS_MGMT.DBQLSQLTBL_TMP All; Delete from SYS_MGMT.DBQLOBJTBL_TMP All; Delete from SYS_MGMT.DBQLEXPLAINTBL_TMP All; Delete from SYS_MGMT.DBQLSTEPTBL_TMP All; Delete from SYS_MGMT.DBQLXMLTBL_TMP All; ); Replace Macro SYS_MGMT.LoadDBQLSumHstTbl AS ( /* Part of the Daily Process. Loads DBQLSummaryTBL only */ /* Deletes the DBQLSummaryTBL_tmp table. */ LOCKING TABLE SYS_MGMT.DBQLSUMMARYTBL_TMP FOR ACCESS LOCKING TABLE DBC.DBASE FOR ACCESS Insert into SYS_MGMT.DBQLSummaryTBL_HST Select cast(L.CollectTimeStamp as date) as LogDate ,L.ProcID ,L.CollectTimeStamp ,L.UserID ,D.DatabaseName ,L.AcctString ,L.LogicalHostID ,L.AppID ,L.ClientID ,L.ClientAddr ,L.ProfileID ,L.SessionID ,L.QueryCount ,L.ValueType ,L.QuerySeconds ,L.TotalIOCount ,L.AMPCPUTime ,L.ParserCPUTime ,L.AMPCPUTimeNorm ,L.ParserCPUTimeNorm

Page 30: DBQL TD13 0 and TD13 10 DBQL Logging and Maintenance-1

30

,L.LowHist ,L.HighHist From SYS_MGMT.DBQLSummaryTBL_TMP L ,DBC.DBASE D Where L.UserId = D.DatabaseId ; Delete from SYS_MGMT.DBQLSUMMARYTBL_TMP All; );