If you encounter corruptions in row store tables consistency check reports like “pointing to free variable part found;rowid=xxx;
offset=8;typeid=37;ext_rowid=xxx” then you should check the following OSS note and the steps which we completed.
Due to a programming error in disk write optimizations in HANA SPS12, entries in row store tables can become inconsistent, resulting in duplicates or data loss, when below prerequisites are met.
Prerequisites:
- SAP HANA database Revision 120 – 122.03
- Continuous page flush is enabled (global.ini section [persistence] parameter continuous_flush_interval_s > 0).
In SAP HANA database SPS12 continuous page flush is enabled by default, even if the parameter is not explicitly set - Slow disk IO will increase the likelyhood to run into this problem
Solution :
Step 1 - Disable continuous page flush using SQL command
ALTER SYSTEM ALTER CONFIGURATION (‘global.ini’, ‘system’) SET (‘persistence’, ‘continuous_flush_interval_s’) = ’0′ WITH RECONFIGURE;
Step 2 - Force all rowstore pages to be written to the persistence, to do this ; execute the following commands as <SID>adm user.Please run these commands for each “indexserver” on all nodes.
hdbcons -p <process_id> “pageaccess touch row”
hdbcons -p <process_id> “savepoint execute”
For our case ;
hdbcons -p 6290 “pageaccess touch row”
hdbcons -p 6290 “savepoint execute”
hdbcons -p 5925 “pageaccess touch row”
hdbcons -p 5925 “savepoint execute”
Step 3 - To check the consistency of all rowstore tables please execute the following procedures
CALL CHECK_TABLE_CONSISTENCY(‘CHECK_ROW_TABLES’, NULL, NULL);
CALL CHECK_CATALOG(‘CHECK’, NULL, NULL, NULL);
You can find the details in the following OSS note ;
https://launchpad.support.sap.com/#/notes/2370160