Wednesday 16 July 2014

IBM BLU : Know its limitations and restrictions

IBM BLU is really cool but let's explore its limitations and restrictions.

You can not implement BLU if you are running your DB2 server with following :
1. PureScale environment
2. Database with DPF feature
3. Database with HADR enabled
4. Database with NO automatic storage
5. Database without UNICODE codeset
6. Tablespace without reclaimable storage
7. Windows operating system

Following features are not supported with IBM BLU :
1. Table replication ,i.e. Q-replication, SQL replication
2. Tables Federation
3. AUTOMATIC settings for SORTHEAP & SHEAPTHRES_SHR
4. CREATE EVENT MONITOR
5. CREATE Index
6. CREATE Trigger
7. CREATE / DECALRE GTT (Global Temporary Tables)
8. Isolation levels for queries : RR and RS
9. XA Transactions


Note:- This information is shared based on my knowledge and the experience.

Monday 24 February 2014

DB2 - Bufferpool Memory Protection

Buffer Pool memory protection feature is not much discussed among DB2 enthusiasts, yet its a very useful feature which enhances the DB2 resilience capability in terms of memory corruption. So, I thought of bringing this to everyone's attention.

Description : DB2 took advantage of a specific hardware feature available to Power6 servers (starting with AIX 5.3 TL6) called "Protection of storage keys". Its formally known as "Storage Keys" in DB2 world which provides protection to memory using hardware keys at the karnel thread level. Storage key protection reduces buffer pool memory corruption problems and limits errors that might crash the database. Buffer pool memory protection works on a per-agent level; any particular agent has access to buffer pool pages only when that agent needs access.

How does it work : When an agent requires access to the buffer pools to perform its work, it is temporarily granted access to the buffer pool memory. When the agent no longer requires access to the buffer pools, access is revoked. This behavior ensures that agents are only allowed to modify buffer pool contents when needed, reducing the likelihood of buffer pool corruptions. Any illegal access to buffer pool memory results in a segmentation error.

You need to set the registry variable "DB2_MEMORY_PROTECT" to enable this feature in DB2 instance.

Why does it needed : There is a memory overlay issue where data is accidentally over-written to a memory page which is already occupied by different set of data. In this scenario it results in memory corruption and may cause the instance crash.

Recommendation : In my opinion we should implement this feature in DB2 by setting up the registry variable "DB2_MEMORY_PROTECT" as its anyway enabled at the hardware level so why not to extend it to DB2 as well ? This feature is supported since version DB2 9.5 on Power 6 servers with AIX 5.3 TL 6.

Note:- This information is shared based on my knowledge and the experience.