Register Login

SQL array DML operations fail with ABAP runtime error

08 Feb 2016 1:06 pm || 0

We are getting an ABAP runtime error DBIF_RSQL_SQL_ERROR and because of this SQL array DML operations is failing too.

Short text: "-10709" while accessing table "/BIC/B0007166000".
Database error text: "Connect failed (no reachable host left)"

The work process trace file contains error messages like this:

B  ***LOG BY4=> sql error 2048   performing INS on table /BIC/B0007166000              [dbtrtab      3770]
B  ***LOG BY0=> column store error: [2592] Error allocating rows to parts;Could not determine parts for multi-level partitioning. [dbtrtab      3770]

This problem was mainly observed in BW on HANA systems when loading data into PSA tables or InfoProviders.

This problem may also occur for partitioned tables in single node systems.

The following partitioning types are affected:

  • HASH
  • HASH_RANGE
  • HASH_HASH
  • ROUNDROBIN
  • ROUNDROBIN_RANGE

Solution:

Incase, the HANA SQLDBC client is functioning on an ABAP Application Server with operating system AIX, Solaris Sparc, HP-UX or zLinux platform, then it is imperative for the user to take action. 

Application servers with other operating systems are not impacted. 

The solution depends on the revision of the user’s HANA SQLDBC clients and the type of installation (single node/scale-out).

For single node and scale-out systems with HANA SQLDBC clients Rev 64, Rev 65 and Rev 66:

As a workaround deactivate the client-side functionality by mainly adding the following parameter to section [distribution] in indexserver.ini:
split_batch_commands = off

User can utilize the following SQL statement for setting the parameter:

ALTER SYSTEM ALTER CONFIGURATION('indexserver. ini','SYSTEM') SET ('distribution', 'split_batch_commands') = 'off' WITH RECONFIGURE;
Besides the parameter change, all ABAP Application Servers are required to be restarted.

For scale-out systems with HANA SQLDBC client Rev 67:

A client-side workaround is shipped in the HANA client Rev 67. This workaround not only deactivates the client-side functionality which separates the SQL array DML statements, it also deactivates the client-side statement routing for such statements which can cause problems related to the performance and higher memory consumption on the master node in scale-out systems.

Therefore, it is suggested not to apply Rev 67 for HANA SQLDBC clients in scale-out systems when the user upgrades his database (server) to Rev 67. Instead, the SQLDBC client should remain on an older SP06 revision (Rev 63, Rev 64, Rev 65 or Rev 66) and the parameter split_batch_commands = off should be set as listed above.

For single node systems with HANA SQLDBC client Rev 67 (or higher):

Remove the parameter split_batch_commands from indexserver. ini section [distribution].

For scale-out systems with HANA SQLDBC clients Rev 68 (or higher):

Rev 68 comprises of a fix for the problems described above. Remove the parameter split_batch_commands from section [distribution] in indexserver.ini if it has been set as workaround before.