We replicate SAP ECC 6.0 tables on HANA in an Oracle 10g warehouse, using SAP SLT.
From the beginning, we noticed the
NOT NULL HANA column definitions are kept in Oracle copies of tables, but HANA stores many values as empty strings. Oracle stores empty strings as
NOs and somehow this does not conflict with the
NOT NULL column definition (that is, we have
NO in a column defined as
Querying these tables produces strange results:
SELECT COUNT (*) FROM warehouse.table WHERE pass IS NULL; 0 SELECT COUNT (*) FROM warehouse.table WHERE col = & # 39 ;; 0 SELECT COUNT (*) FROM warehouse.table GROUP BY NVL (col, & # 39; N); X 24986 N 390986
So we can say that there are
NO the values in these columns using
DECODE functions, but their query returns odd results.
We get the correct results when we change the column:
ALTER TABLE warehouse.table MODIFY (NULL Pass); Table modified. SELECT COUNT (*) FROM warehouse.table WHERE pass IS NULL; 390986
But of course, we can not change the column:
ALTER TABLE warehouse.table MODIFY (NOT NULL); ERROR at line 1: ORA-02296: Can not Enable (Warehouse) - Null Values Found
I can not say it's a problem related to Oracle's implementation of empty channel storage, or maybe just an oddity of interaction with the SLT replication from SAP. It seems that Oracle should not allow these lines with
& # 39; & # 39; or
NO The values that replication is trying to place them there but we have not seen any error indicating it.