#IDUG#IDUG
11 Tips for DB2 11 for z/OS
Cüneyt Göksu
IBM
Session Code: E04
Tue, May 13, 2014 (04:30 PM - 05:30 PM)| Platform: DB2 for z/OS
#IDUG
Agenda
 Global Variables
 ALTER Partition Key Limits Online
 Select from Directory
 Drop Column
 Auto Mapping Tables
 Transparent Archiving
 Runstats Enhancements
 Recovery Support for Deferred schema changes
 Pseudo deleted index key cleanup
 LOAD SHRLEVEL CHANGE with PARALLEL option
 Deprecated stuff...
Highlights of my favorite V11 enhancements
#IDUG
Global Variables
• Long expected DB2 for z/OS feature
- Enable the sharing of data between SQL statements without the need for application logic.
- Maintained by DB2, available throughout the entire application scope.
- Have access controlled by GRANT and REVOKE statements.
- New CREATE VARIABLE statement, saved in DB2 catalog
- Associated with a specific application, value unique to the application
- The content is shared among the SQL statements within the same connection, similar to DB2
special registers
- Initiated upon the first reference.
- If created with the DEFAULT clause, the default expression is evaluated during first access
- If no DEFAULT is specified, NULL is used as the default value
- Can appear in expression, predicates, and select list.
- The content of the Global Variables persist across reusable threads.
- A reused thread keeps all values recorded from the previous thread.
#IDUG
Global Variables
#IDUG
ALTER Partition Key Limits Online
REORG TABLESPACE REBALANCE or ALTER TABLE <limit keys>
• Online alter limit key = In Version 11, Change limit keys of a partitioned table space without
impacting the availability of the data.
In previous versions of DB2, when limit key values are changed
• Affected partitions are set to REORP.
• These partitions could not be accessed until reorg.
In Version 11, when limit key values are changed
• Data remains available, applications can continue to access the data.
• The limit key changes are not materialized until the next REORG & apps keep on working...
• The affected partitions are placed in (AREOR) status.
• Range-partitioned UTS and table spaces partitioned with table-controlled partitioning.
• ALTER LIMIT KEY on index controlled partitioned table spaces would set them in REORP.
• the limit key values for affected partitions are recorded in the SYSIBM.SYSPENDINGDDL
#IDUG
ALTER Partition Key Limits Online
ALTER LIMIT KEY IN DB2 11 – How does it work
• Alter limit key is a pending alter in NFM.
• The affected partitions are set to AREOR.
• Online REORG (REFERENCE or CHANGE) must be run to materialize the pending changes.
• REORG SHRLEVEL NONE does not materialize the changes.
• UTS or table controlled partitioning is a prerequisite for this feature.
• The new limit keys are materialized in SYSTABLEPART in the SWITCH phase (new message
DSNU2916I)
• If the table space is in a MQT relation, it is still possible to alter limit key online.
• RECOVER PIT is allowed, requires a subsequent REORG due to setting of REORP after the
recovery. This is possible but needs attention because it is restrictive!...
ALTER TABLE <limit key> ; What if DBA channges the idea!...
ALTER TABLESPACE .... DROP PENDING CHANGES / REORG ... REBALANCE ---
APAR PM89655 adds
PREVENT_ALTERTB_LIMITKEY
PREVENT_NEW_IXCTRL_PART
#IDUG
Select from Directory
Historically, those tables were not accessible through SQL (SELECT ONLY)
V10 added SYSIBM.SYSLGRNX, SYSIBM.SYSUTIL, SYSIBM.SYSUTILX, SYSIBM.DBDR, SYSIBM.SPTR
V11 added SYSIBM.SCTR table to the list.
• SYSIBM.DBDR: one row for each DBD section.
• SYSIBM.SCTR: Skeleton Cursor Tables (SKCT) information
• SYSIBM.SPTR: Skeleton Package Table (SKPT) information
• SYSIBM.SYSLGRNX: recovery log ranges that record the time an indexspace defined with COPY
YES or a table space was open for updates.
• SYSIBM.SYSUTIL: status information about DB2 utilities that are active or stopped.
#IDUG
Select from Directory
• Some of the data in those tables are still internal
• Combining them to existing catalog tables, provides more information.
---------+---------+---------+---------+------
SELECT NAME,COUNT(*) AS NUMBER_OF_SECTIONS
FROM SYSIBM.DBDR A, SYSIBM.SYSDATABASE B
WHERE A.DBID = B.DBID
GROUP BY NAME
ORDER BY NUMBER_OF_SECTIONS DESC;
---------+---------+---------+---------+------
NAME NUMBER_OF_SECTIONS
---------+---------+---------+---------+------
DSNDB06 12
DGOLD107 8
DANLDBU 4
SEMTPDB1 2
DSNOPTDB 2
DSNRGFDB 1
MGBTEST 1
MGBMAP 1
#IDUG
Drop Column (R)evalution
• Add column implemented in the very early versions. (V1)
• Altering Column data type, renaming column name came up with V8 & V9.
• Now we have Drop Column functionality in V11
WHY DO YOU NEED TO DROP COLUMN?
• Columns become obsolete as applications change.
• Leaving a column has cost, Space in the table and in every Image Copy.
• Potential space in the log records
• Additional CPU, elapsed time costs accessing and maintaining the data.
• DBA must spend time to remember that the column is
redundant/obsolete
• Developer must analyze the usage of the column.
#IDUG
Drop Column
HOW DO YOU DROP A COLUMN BEFORE V11
Very preliminary procedure to do that task, which is very sensitive and open to human
errors.
• Schedule an outage
• Unload Data
• Drop Table
• Alter DDL
• Create Table
• Load Data
• Grant Authorities and Bind/Rebind Packages
#IDUG
Drop Column
Such as:
• The containing table space is NOT a Universal Table Space
• The table is a GTT, a system-period temporal table, a history table,
MQT,...
• There are row permissions or column masks dependent on the table
• There are triggers defined on the table
• Column is part of index key
UNDO Drop Column?
- After Materializition, NO!
- Before Materilaztion, YES
ALTER TABLESPACE DROP
PENDING CHANGES
#IDUG
Auto Mapping Tables
Current Issues
- Each Reorg Uses its own mapping table, can not be shared by other concurrent.
- Manual operation (During REORG and/or DB2 Migration)
- Scailibility Constraint (64 GB)
Automated Mapping Tables : in a PBG tablespace and mapping index maximum size
will be increased from 64GB to 16TB.
#IDUG
Auto Mapping Tables
Reorg Decision Process:
1. If mapping table specified & correct format then honour specification
2. Else if specified but incorrect format then create new in same DB as original
2.1 MAPPINGDATABASE overrides ZPARM / implicit database if specified
3. Else if not specified and ZPARM REORG_MAPPING_DATABASE specified then create
in ZPARM DB
4. Else create in implicit DB
5. DROP at end of REORG or end of last REORG if multiple REORGs in job step
- No additional auth requirements necessary for creation of mapping tables
#IDUG
Auto Mapping Tables
REORG TABLESPACE GOLD123.TS1
SHRLEVEL CHANGE
COPYDDN(SCOPY)
MAXRO 240 LONGLOG CONTINUE DRAIN ALL DELAY 900
STATISTICS TABLE INDEX
PREFORMAT
FASTSWITCH YES
DSNU2902I -GTBG 170 06:19:36.77 DSNURMAP - MAPPING DATABASE REORGMD IS
INVALID
MAPPINGDATABASE keyword or REORG_MAPPING_DATABASE subsystem parameter
does not exist or cannot be used to implicitly create a mapping table.
#IDUG
Transparent Archiving
- DB2 11 Transparent Archiving is built on the (bi) temporal support.
- Not a complete Archive Solution!
- 3 pieces : a table, the archive table and associate
- What DB2 does : Move data from table to archive table & decides access between tables
- Global Variables
SYSIBMADM.MOVE_TO_ARCHIVE ( Y/ N / E )
Y : delete of a row in an archive-enabled table will result in storing a copy of the row in the
associated archive table.
SYSIBMADM.GET_ARCHIVE ( Y/ N )
Y : when a table-reference is an archive-enabled table, the table reference includes rows in
the associated archive table.
- ARCHIVESENSITIVE(YES) Bind option
determines whether references to archive-enabled tables are affected by the value of the
SYSIBMADM.GET_ARCHIVE global variable.
#IDUG
Transparent Archiving
Setup:
CREATE TABLE T1
(C1 SMALLINT, C2 INTEGER) ;
CREATE TABLE T1_ARC LIKE T1;
ALTER TABLE T1 ENABLE ARCHIVE USE T1_ARC;
SELECT * FROM T1;
---------+---------+------
C1 C2
---------+---------+------
1 111
5 222
SET SYSIBMADM.MOVE_TO_ARCHIVE = 'Y';
DELETE FROM T1 WHERE C1=1;
SELECT * FROM T1;
SELECT * FROM T1_ARC;
SELECT * FROM T1;
---------+---------+------
C1 C2
---------+---------+------
5 222
SELECT * FROM T1_ARC;
---------+---------+--------
C1 C2
---------+---------+--------
1 111
SET SYSIBMADM.GET_ARCHIVE = 'Y';
SELECT * FROM T1 ;
SELECT * FROM T1_ARC;
SELECT * FROM T1;
---------+---------+------
C1 C2
---------+---------+------
1 111
5 222
SELECT * FROM T1_ARC;
---------+---------+--------
C1 C2
---------+---------+--------
1 111
#IDUG
Transparent Archiving
ALTER TABLE T1 ADD COLUMN NEW_COL SMALLINT;
-- NEW_COL is added to T1_ARC as well...
The INSERT, UPDATE, and MERGE statements to archive enable table are
- all blocked in archive mode if SYSIBMADM.MOVE_TO_ARCHIVE = ‘Y’
- not blocked and business as usual if SYSIBMADM.MOVE_TO_ARCHIVE = ‘N’
- not blocked and archive works as usual if SYSIBMADM.MOVE_TO_ARCHIVE = ‘E’
How to disable ARCHIVEing?
ALTER TABLE ... DISABLE ARCHIVE
- the packages and statements in DSC that reference archive table are invalidated.
- Cannot be disabled if there are any views, MQTs, or inline SQL table functions that
reference the table.
#IDUG
Runstats Enhancements
Runstats is generally good for Access Paths.
It was costly before V10 for Distributes Stats
V10  Distribution Stats are zIIP Eligable - %99 with no additional parameters
V11  Inline Stats are zIIP Eligable - %30
Inline Stats even become more powerful:
- Part Level Reorg can collect NPI Stats (SORTNPSI YES|AUTO) (based on internal threashold)
- Collect COLGROUP and HISTOGRAM information
#IDUG
Runstats Enhancements
- RESET ACCESSPATH does NOT reset the statistics currently in the _HIST tables for that object
- HISTORY ACCESSPATH option, provides the possibility to write out to the _HIST tables
(SYSIBM.SYSTABLES_HIST for tables, SYSIBM.SYSINDEXES_HIST for indexes)
reset the existing statistics during a RUNSTATS utility
RUNSTATS TABLESPACE ... RESET ACCESSPATH
Access Path Stats are reset
RTS & Space Stats are NOT reset
SYSTABLESPACE / NACTIVE / -1
SYSCOLUMNS / COLCARDF / -1
SYSINDEXES / CLUSTERRATIO / 0
#IDUG
Recovery Support for Deferred schema changes
- Deferred schema change / Online Schema Change allows to make schema changes at any time - 
- Defer the materialization of those changes until a REORG - 
- V10 included a significant restriction relating to PIT recoveries. - 
- Once the REORG had been run, it was not possible to perform a PIT recovery - 
- V11 NFM removes this restriction, allowing PIT recovery - 
Such as
ALTER DSSIZE
ALTER PAGESIZE
ALTER SEGSIZE
ALTER MEMBER CLUSTER
With restrictions... -  
- No CREATE, ALTER, RENAME, and DROP TABLE statements on the tablespace w/o subsequent REORG
- The only utilities that are allowed REORG, RECOVER, REPORT RECOVERY, REPAIR DBD
#IDUG
Recovery Support for Deferred schema changes
CREATE TABLE T1 (C1 SMALLINT) IN GOLD123.TS1;
INSERT INTO T1 VALUES (4);
INSERT INTO T1 VALUES (6);
FIC of T1
ALTER TABLE T1 ADD COLUMN C2 INTEGER ;
INSERT INTO T1 VALUES (4,7);
INSERT INTO T1 VALUES (6,7);
RECOVER TO FIC
C1
------
4
6
C1 C2
-----+---------
4 ---------
6 ---------
4 7
6 7
C1 C2
-----+---------
4 ---------
6 ---------
#IDUG
Pseudo deleted index key cleanup
Definition
- When a data row is deleted, the index entry for the key to that row must be removed.
- DB2 sets a bit in the index to mark the index entry as being pseudo-deleted
- Pseudo-deleted entries occupy space. The more you have, The more SQL performance gets weaker.
- Pseudo-empty index pages = pages that contain only pseudo-deleted index entries.
Issues
- Performance Impact for maintaining for entries
- More getpages
- Concurrency issues for INSERT, UPDATE and DELETE
- RID reuse by an INSERT statement following a DELETE statement could cause a deadlock.
Before V11 : REORG, REORG, REORG!...
#IDUG
Pseudo deleted index key cleanup
- DB2 autonomically deletes pseudo-empty index pages and pseudo deleted index entries by scheduling
asynchronous service tasks.
- committed pseudo-deleted index entries!
- Service task overhead is not associated with any DELETE or UPDATE activity and have low CPU overhead.
- zIIP Eligible
- by Default in V11 CM
- Performed only on the indexes that have been opened for INSERT/DELETE/UPDATE
- There can be large number of pseudo deleted entries, but if index is not opened for
INSERT/DELETE/UPDATE, the cleanup does not happen.
- The cleanup rate depends
the rate that the pseudo deleted entries are generated,
the number of threads allowed to run cleanup concurrently
the commit frequency of the unit of work which generates the pseudo deleted index entries.
Control Options
- INDEX_CLEANUP_THREADS subsystem parameter
- SYSIBM.SYSINDEXCLEANUP catalog table
#IDUG
Pseudo deleted index key cleanup
INDEX_CLEANUP_THREADS subsystem parameter
- #threads for the cleanup of pseudo deleted index entries.
- Between 0-128 & default 10
- 0 disables clean up process
- Checks RTS table (SYSIBM.SYSINDEXSPACESTATS(REORGPSEUDODELETES))
- Reduces the need for REORG INDEX
SYSIBM.SYSINDEXCLEANUP catalog table is checked 10 min intervals
- Process is enabled for ALL Indexes by default
- Specify time window for the process
- The catalog table includes
1- Name of databases and indexspace
2- Cleanup enabled or disabled
3- Day of week or day of month
4- Start time and end time
#IDUG
LOAD SHRLEVEL CHANGE with PARALLEL option
- LOAD SHRLEVEL CHANGE option higher CPU than SHRLEVEL NONE
- SHRLEVEL CHANGE stores the rows in cluster sequence (INSERTs...)
- Performance is crucial to space search algorithms & contention between parallel inserts.
- If the TS has enough free space, less time for searching for space and less contention.
- Parallelism provides more value for SHRLEVEL CHANGE
- Parallelism may significantly reduce the ET
- If there is contention, more significant increase in the CPU time and more CPU increase
LOAD DATA INDDN SYSREC RESUME YES PARALLEL SHRLEVEL CHANGE
DSNURPLL - TABLE SPACE WILL BE LOADED IN PARALLEL, NUMBER OF TASKS = XXX
#IDUG
Some Deprecated things in V11
Utility
- REORG SHRLEVEL NONE for LOBs  RC8
- REORG TABLESPACE UNLOAD ONLY  Use UNLOAD
- COPY CHANGELIMIT  Use DSNACCOX to determine if it needs to be copied
zParm
PRIVATE_PROTOCOL
Sysplex query parallelism  Turns into CPU Parallelism
NEWFUN(YES / NO) NEWFUN(11 / 10)
#IDUG#IDUG
11 Tips for DB2 11 for z/OS
IBM
CuneytG@tr.ibm.com
Session: E04
Please fill out your session
evaluation before leaving!

IDUG NA 2014 / 11 tips for DB2 11 for z/OS

  • 1.
    #IDUG#IDUG 11 Tips forDB2 11 for z/OS Cüneyt Göksu IBM Session Code: E04 Tue, May 13, 2014 (04:30 PM - 05:30 PM)| Platform: DB2 for z/OS
  • 2.
    #IDUG Agenda  Global Variables ALTER Partition Key Limits Online  Select from Directory  Drop Column  Auto Mapping Tables  Transparent Archiving  Runstats Enhancements  Recovery Support for Deferred schema changes  Pseudo deleted index key cleanup  LOAD SHRLEVEL CHANGE with PARALLEL option  Deprecated stuff... Highlights of my favorite V11 enhancements
  • 3.
    #IDUG Global Variables • Longexpected DB2 for z/OS feature - Enable the sharing of data between SQL statements without the need for application logic. - Maintained by DB2, available throughout the entire application scope. - Have access controlled by GRANT and REVOKE statements. - New CREATE VARIABLE statement, saved in DB2 catalog - Associated with a specific application, value unique to the application - The content is shared among the SQL statements within the same connection, similar to DB2 special registers - Initiated upon the first reference. - If created with the DEFAULT clause, the default expression is evaluated during first access - If no DEFAULT is specified, NULL is used as the default value - Can appear in expression, predicates, and select list. - The content of the Global Variables persist across reusable threads. - A reused thread keeps all values recorded from the previous thread.
  • 4.
  • 5.
    #IDUG ALTER Partition KeyLimits Online REORG TABLESPACE REBALANCE or ALTER TABLE <limit keys> • Online alter limit key = In Version 11, Change limit keys of a partitioned table space without impacting the availability of the data. In previous versions of DB2, when limit key values are changed • Affected partitions are set to REORP. • These partitions could not be accessed until reorg. In Version 11, when limit key values are changed • Data remains available, applications can continue to access the data. • The limit key changes are not materialized until the next REORG & apps keep on working... • The affected partitions are placed in (AREOR) status. • Range-partitioned UTS and table spaces partitioned with table-controlled partitioning. • ALTER LIMIT KEY on index controlled partitioned table spaces would set them in REORP. • the limit key values for affected partitions are recorded in the SYSIBM.SYSPENDINGDDL
  • 6.
    #IDUG ALTER Partition KeyLimits Online ALTER LIMIT KEY IN DB2 11 – How does it work • Alter limit key is a pending alter in NFM. • The affected partitions are set to AREOR. • Online REORG (REFERENCE or CHANGE) must be run to materialize the pending changes. • REORG SHRLEVEL NONE does not materialize the changes. • UTS or table controlled partitioning is a prerequisite for this feature. • The new limit keys are materialized in SYSTABLEPART in the SWITCH phase (new message DSNU2916I) • If the table space is in a MQT relation, it is still possible to alter limit key online. • RECOVER PIT is allowed, requires a subsequent REORG due to setting of REORP after the recovery. This is possible but needs attention because it is restrictive!... ALTER TABLE <limit key> ; What if DBA channges the idea!... ALTER TABLESPACE .... DROP PENDING CHANGES / REORG ... REBALANCE --- APAR PM89655 adds PREVENT_ALTERTB_LIMITKEY PREVENT_NEW_IXCTRL_PART
  • 7.
    #IDUG Select from Directory Historically,those tables were not accessible through SQL (SELECT ONLY) V10 added SYSIBM.SYSLGRNX, SYSIBM.SYSUTIL, SYSIBM.SYSUTILX, SYSIBM.DBDR, SYSIBM.SPTR V11 added SYSIBM.SCTR table to the list. • SYSIBM.DBDR: one row for each DBD section. • SYSIBM.SCTR: Skeleton Cursor Tables (SKCT) information • SYSIBM.SPTR: Skeleton Package Table (SKPT) information • SYSIBM.SYSLGRNX: recovery log ranges that record the time an indexspace defined with COPY YES or a table space was open for updates. • SYSIBM.SYSUTIL: status information about DB2 utilities that are active or stopped.
  • 8.
    #IDUG Select from Directory •Some of the data in those tables are still internal • Combining them to existing catalog tables, provides more information. ---------+---------+---------+---------+------ SELECT NAME,COUNT(*) AS NUMBER_OF_SECTIONS FROM SYSIBM.DBDR A, SYSIBM.SYSDATABASE B WHERE A.DBID = B.DBID GROUP BY NAME ORDER BY NUMBER_OF_SECTIONS DESC; ---------+---------+---------+---------+------ NAME NUMBER_OF_SECTIONS ---------+---------+---------+---------+------ DSNDB06 12 DGOLD107 8 DANLDBU 4 SEMTPDB1 2 DSNOPTDB 2 DSNRGFDB 1 MGBTEST 1 MGBMAP 1
  • 9.
    #IDUG Drop Column (R)evalution •Add column implemented in the very early versions. (V1) • Altering Column data type, renaming column name came up with V8 & V9. • Now we have Drop Column functionality in V11 WHY DO YOU NEED TO DROP COLUMN? • Columns become obsolete as applications change. • Leaving a column has cost, Space in the table and in every Image Copy. • Potential space in the log records • Additional CPU, elapsed time costs accessing and maintaining the data. • DBA must spend time to remember that the column is redundant/obsolete • Developer must analyze the usage of the column.
  • 10.
    #IDUG Drop Column HOW DOYOU DROP A COLUMN BEFORE V11 Very preliminary procedure to do that task, which is very sensitive and open to human errors. • Schedule an outage • Unload Data • Drop Table • Alter DDL • Create Table • Load Data • Grant Authorities and Bind/Rebind Packages
  • 11.
    #IDUG Drop Column Such as: •The containing table space is NOT a Universal Table Space • The table is a GTT, a system-period temporal table, a history table, MQT,... • There are row permissions or column masks dependent on the table • There are triggers defined on the table • Column is part of index key UNDO Drop Column? - After Materializition, NO! - Before Materilaztion, YES ALTER TABLESPACE DROP PENDING CHANGES
  • 12.
    #IDUG Auto Mapping Tables CurrentIssues - Each Reorg Uses its own mapping table, can not be shared by other concurrent. - Manual operation (During REORG and/or DB2 Migration) - Scailibility Constraint (64 GB) Automated Mapping Tables : in a PBG tablespace and mapping index maximum size will be increased from 64GB to 16TB.
  • 13.
    #IDUG Auto Mapping Tables ReorgDecision Process: 1. If mapping table specified & correct format then honour specification 2. Else if specified but incorrect format then create new in same DB as original 2.1 MAPPINGDATABASE overrides ZPARM / implicit database if specified 3. Else if not specified and ZPARM REORG_MAPPING_DATABASE specified then create in ZPARM DB 4. Else create in implicit DB 5. DROP at end of REORG or end of last REORG if multiple REORGs in job step - No additional auth requirements necessary for creation of mapping tables
  • 14.
    #IDUG Auto Mapping Tables REORGTABLESPACE GOLD123.TS1 SHRLEVEL CHANGE COPYDDN(SCOPY) MAXRO 240 LONGLOG CONTINUE DRAIN ALL DELAY 900 STATISTICS TABLE INDEX PREFORMAT FASTSWITCH YES DSNU2902I -GTBG 170 06:19:36.77 DSNURMAP - MAPPING DATABASE REORGMD IS INVALID MAPPINGDATABASE keyword or REORG_MAPPING_DATABASE subsystem parameter does not exist or cannot be used to implicitly create a mapping table.
  • 15.
    #IDUG Transparent Archiving - DB211 Transparent Archiving is built on the (bi) temporal support. - Not a complete Archive Solution! - 3 pieces : a table, the archive table and associate - What DB2 does : Move data from table to archive table & decides access between tables - Global Variables SYSIBMADM.MOVE_TO_ARCHIVE ( Y/ N / E ) Y : delete of a row in an archive-enabled table will result in storing a copy of the row in the associated archive table. SYSIBMADM.GET_ARCHIVE ( Y/ N ) Y : when a table-reference is an archive-enabled table, the table reference includes rows in the associated archive table. - ARCHIVESENSITIVE(YES) Bind option determines whether references to archive-enabled tables are affected by the value of the SYSIBMADM.GET_ARCHIVE global variable.
  • 16.
    #IDUG Transparent Archiving Setup: CREATE TABLET1 (C1 SMALLINT, C2 INTEGER) ; CREATE TABLE T1_ARC LIKE T1; ALTER TABLE T1 ENABLE ARCHIVE USE T1_ARC; SELECT * FROM T1; ---------+---------+------ C1 C2 ---------+---------+------ 1 111 5 222 SET SYSIBMADM.MOVE_TO_ARCHIVE = 'Y'; DELETE FROM T1 WHERE C1=1; SELECT * FROM T1; SELECT * FROM T1_ARC; SELECT * FROM T1; ---------+---------+------ C1 C2 ---------+---------+------ 5 222 SELECT * FROM T1_ARC; ---------+---------+-------- C1 C2 ---------+---------+-------- 1 111 SET SYSIBMADM.GET_ARCHIVE = 'Y'; SELECT * FROM T1 ; SELECT * FROM T1_ARC; SELECT * FROM T1; ---------+---------+------ C1 C2 ---------+---------+------ 1 111 5 222 SELECT * FROM T1_ARC; ---------+---------+-------- C1 C2 ---------+---------+-------- 1 111
  • 17.
    #IDUG Transparent Archiving ALTER TABLET1 ADD COLUMN NEW_COL SMALLINT; -- NEW_COL is added to T1_ARC as well... The INSERT, UPDATE, and MERGE statements to archive enable table are - all blocked in archive mode if SYSIBMADM.MOVE_TO_ARCHIVE = ‘Y’ - not blocked and business as usual if SYSIBMADM.MOVE_TO_ARCHIVE = ‘N’ - not blocked and archive works as usual if SYSIBMADM.MOVE_TO_ARCHIVE = ‘E’ How to disable ARCHIVEing? ALTER TABLE ... DISABLE ARCHIVE - the packages and statements in DSC that reference archive table are invalidated. - Cannot be disabled if there are any views, MQTs, or inline SQL table functions that reference the table.
  • 18.
    #IDUG Runstats Enhancements Runstats isgenerally good for Access Paths. It was costly before V10 for Distributes Stats V10  Distribution Stats are zIIP Eligable - %99 with no additional parameters V11  Inline Stats are zIIP Eligable - %30 Inline Stats even become more powerful: - Part Level Reorg can collect NPI Stats (SORTNPSI YES|AUTO) (based on internal threashold) - Collect COLGROUP and HISTOGRAM information
  • 19.
    #IDUG Runstats Enhancements - RESETACCESSPATH does NOT reset the statistics currently in the _HIST tables for that object - HISTORY ACCESSPATH option, provides the possibility to write out to the _HIST tables (SYSIBM.SYSTABLES_HIST for tables, SYSIBM.SYSINDEXES_HIST for indexes) reset the existing statistics during a RUNSTATS utility RUNSTATS TABLESPACE ... RESET ACCESSPATH Access Path Stats are reset RTS & Space Stats are NOT reset SYSTABLESPACE / NACTIVE / -1 SYSCOLUMNS / COLCARDF / -1 SYSINDEXES / CLUSTERRATIO / 0
  • 20.
    #IDUG Recovery Support forDeferred schema changes - Deferred schema change / Online Schema Change allows to make schema changes at any time -  - Defer the materialization of those changes until a REORG -  - V10 included a significant restriction relating to PIT recoveries. -  - Once the REORG had been run, it was not possible to perform a PIT recovery -  - V11 NFM removes this restriction, allowing PIT recovery -  Such as ALTER DSSIZE ALTER PAGESIZE ALTER SEGSIZE ALTER MEMBER CLUSTER With restrictions... -   - No CREATE, ALTER, RENAME, and DROP TABLE statements on the tablespace w/o subsequent REORG - The only utilities that are allowed REORG, RECOVER, REPORT RECOVERY, REPAIR DBD
  • 21.
    #IDUG Recovery Support forDeferred schema changes CREATE TABLE T1 (C1 SMALLINT) IN GOLD123.TS1; INSERT INTO T1 VALUES (4); INSERT INTO T1 VALUES (6); FIC of T1 ALTER TABLE T1 ADD COLUMN C2 INTEGER ; INSERT INTO T1 VALUES (4,7); INSERT INTO T1 VALUES (6,7); RECOVER TO FIC C1 ------ 4 6 C1 C2 -----+--------- 4 --------- 6 --------- 4 7 6 7 C1 C2 -----+--------- 4 --------- 6 ---------
  • 22.
    #IDUG Pseudo deleted indexkey cleanup Definition - When a data row is deleted, the index entry for the key to that row must be removed. - DB2 sets a bit in the index to mark the index entry as being pseudo-deleted - Pseudo-deleted entries occupy space. The more you have, The more SQL performance gets weaker. - Pseudo-empty index pages = pages that contain only pseudo-deleted index entries. Issues - Performance Impact for maintaining for entries - More getpages - Concurrency issues for INSERT, UPDATE and DELETE - RID reuse by an INSERT statement following a DELETE statement could cause a deadlock. Before V11 : REORG, REORG, REORG!...
  • 23.
    #IDUG Pseudo deleted indexkey cleanup - DB2 autonomically deletes pseudo-empty index pages and pseudo deleted index entries by scheduling asynchronous service tasks. - committed pseudo-deleted index entries! - Service task overhead is not associated with any DELETE or UPDATE activity and have low CPU overhead. - zIIP Eligible - by Default in V11 CM - Performed only on the indexes that have been opened for INSERT/DELETE/UPDATE - There can be large number of pseudo deleted entries, but if index is not opened for INSERT/DELETE/UPDATE, the cleanup does not happen. - The cleanup rate depends the rate that the pseudo deleted entries are generated, the number of threads allowed to run cleanup concurrently the commit frequency of the unit of work which generates the pseudo deleted index entries. Control Options - INDEX_CLEANUP_THREADS subsystem parameter - SYSIBM.SYSINDEXCLEANUP catalog table
  • 24.
    #IDUG Pseudo deleted indexkey cleanup INDEX_CLEANUP_THREADS subsystem parameter - #threads for the cleanup of pseudo deleted index entries. - Between 0-128 & default 10 - 0 disables clean up process - Checks RTS table (SYSIBM.SYSINDEXSPACESTATS(REORGPSEUDODELETES)) - Reduces the need for REORG INDEX SYSIBM.SYSINDEXCLEANUP catalog table is checked 10 min intervals - Process is enabled for ALL Indexes by default - Specify time window for the process - The catalog table includes 1- Name of databases and indexspace 2- Cleanup enabled or disabled 3- Day of week or day of month 4- Start time and end time
  • 25.
    #IDUG LOAD SHRLEVEL CHANGEwith PARALLEL option - LOAD SHRLEVEL CHANGE option higher CPU than SHRLEVEL NONE - SHRLEVEL CHANGE stores the rows in cluster sequence (INSERTs...) - Performance is crucial to space search algorithms & contention between parallel inserts. - If the TS has enough free space, less time for searching for space and less contention. - Parallelism provides more value for SHRLEVEL CHANGE - Parallelism may significantly reduce the ET - If there is contention, more significant increase in the CPU time and more CPU increase LOAD DATA INDDN SYSREC RESUME YES PARALLEL SHRLEVEL CHANGE DSNURPLL - TABLE SPACE WILL BE LOADED IN PARALLEL, NUMBER OF TASKS = XXX
  • 26.
    #IDUG Some Deprecated thingsin V11 Utility - REORG SHRLEVEL NONE for LOBs  RC8 - REORG TABLESPACE UNLOAD ONLY  Use UNLOAD - COPY CHANGELIMIT  Use DSNACCOX to determine if it needs to be copied zParm PRIVATE_PROTOCOL Sysplex query parallelism  Turns into CPU Parallelism NEWFUN(YES / NO) NEWFUN(11 / 10)
  • 27.
    #IDUG#IDUG 11 Tips forDB2 11 for z/OS IBM CuneytG@tr.ibm.com Session: E04 Please fill out your session evaluation before leaving!